Оглавление:

Введение в программирование 8051 с помощью AT89C2051 (приглашенная звезда: Arduino): 7 шагов (с изображениями)
Введение в программирование 8051 с помощью AT89C2051 (приглашенная звезда: Arduino): 7 шагов (с изображениями)

Видео: Введение в программирование 8051 с помощью AT89C2051 (приглашенная звезда: Arduino): 7 шагов (с изображениями)

Видео: Введение в программирование 8051 с помощью AT89C2051 (приглашенная звезда: Arduino): 7 шагов (с изображениями)
Видео: Микроконтроллеры ATMEL - AT89C2051-24PU 2024, Июль
Anonim
Введение в программирование 8051 с помощью AT89C2051 (в главной роли: Arduino)
Введение в программирование 8051 с помощью AT89C2051 (в главной роли: Arduino)

8051 (также известный как MCS-51) - это микроконтроллер 80-х годов, который остается популярным и сегодня. Современные микроконтроллеры, совместимые с 8051, доступны от множества поставщиков, всех форм и размеров, а также с широким спектром периферийных устройств. В этом руководстве мы рассмотрим микроконтроллер AT89C2051 от Atmel.

AT89C2051 - это небольшой (2 Кбайт флэш-памяти, 128 байт ОЗУ), дешевый (~ 1,40 доллара за чип) микроконтроллер.

  • 2.7-6V работа
  • 15 линий ввода / вывода
  • 2 таймера (16 бит)
  • Внутренние и внешние прерывания
  • UART
  • Встроенный аналоговый компаратор
  • До 2MIPS при тактовой частоте 24 МГц

Шаг 1. Требования

Требования
Требования

Требования:

  • ПК с Linux (требуется программное обеспечение: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • Микросхема AT89C2051 (корпус DIP20)
  • 20-контактный разъем ZIF
  • Оптопара (желательно MOSFET-выход)
  • Щит для прототипирования Arduino
  • Блок питания 12 В
  • Источник питания 5В
  • Кварцевый генератор 16 МГц
  • 2x 30 пФ конденсатор
  • Конденсатор 100 нФ
  • Диод (например: 1N400X)
  • Резисторы (1К, 3К3)
  • Протоборд
  • Джемперы
  • Медная проволока

Проверьте наличие необходимого программного обеспечения:

который python3

которые делают какой sdcc какой git

Шаг 2: создание программиста

Создание программиста
Создание программиста
Создание программиста
Создание программиста
Создание программиста
Создание программиста

Этот раздел будет кратким, поскольку некоторое время назад я построил свой программный щит. Прилагаю схему и изображения собранной платы. Схема в формате PDF находится в репозитории.

Вам нужно будет запрограммировать плату программиста:

1. Клонируйте репозиторий.

git clone

2. Откройте файл AT89C2051_programmer / AT89_prog / AT89_prog.ino в среде Arduino IDE.

3. Создайте и загрузите скетч из Arduino IDE.

Шаг 3: Установка программного обеспечения для программистов

Установка программного обеспечения для программистов
Установка программного обеспечения для программистов
Установка программного обеспечения для программистов
Установка программного обеспечения для программистов

1. Создайте виртуальную среду Python.

python3 -m venv venv

. Venv / bin / активировать

2. Установить at89overlord. at89overlord - программист с открытым исходным кодом для микросхемы AT89C2051, написанный мной. Его исходный код можно найти здесь.

pip install at89overlord

3. Проверьте установку.

at89overlord -h

Шаг 4: Программирование чипа

Программирование чипа
Программирование чипа
Программирование чипа
Программирование чипа
Программирование чипа
Программирование чипа
Программирование чипа
Программирование чипа

1. Клонируйте простой проект мигания.

cd ~

git clone https://github.com/piotrb5e3/hello-8051.git cd hello-8051 /

2. Соберите приложение.

делать

3. Подключите Arduino к ПК, подключите питание 12 В, вставьте микросхему AT89C2051 в гнездо ZIF.

4. Найдите последовательный порт Arduino.

ls / dev / tty *

5. Загрузите в чип встроенный файл IntelHex. Если ваш порт Arduino отличается от / dev / ttyACM0, вы должны передать правильное значение с параметром командной строки -p.

at89overlord -f./hello.ihx

Шаг 5: Сборка

сборка
сборка
сборка
сборка
сборка
сборка

Соберите схему по схеме. PDF-версию можно найти в репозитории.

Вы должны увидеть зеленый светодиод, мигающий с частотой около 0,5 Гц.

Шаг 6: Пояснение к коду

Код Пояснение
Код Пояснение

#включают

#включают

Начнем с включения заголовка AT89X051 из sdcc. Он содержит макросы для взаимодействия с регистрами, как если бы они были переменными. Мы также включаем stdint.h, который содержит определения целочисленных типов uint8_t и uint16_t.

// Предполагая, что частота генератора 16 МГц

#define INTERRUPTS_PER_SECOND 5208

Прерывание возникает при переполнении Timer0. Он настроен как один 8-битный таймер, поэтому это происходит каждые 2 ^ 8 циклов процессора. Один цикл процессора занимает 12 тактов, и, таким образом, мы получаем 16000000/12/2 ^ 8 = 5208,33333.

изменчивый uint8_t led_state = 0;

изменчивый uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Объявляем переменные контроля состояния светодиода и счетчика прерываний.

void Timer0_ISR (void) _interrupt (1) {

timer_counter--; если (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}

Каждый раз, когда Timer0 переполняется, счетчик уменьшается. Если он равен нулю, он сбрасывается, и состояние светодиода изменяется. Это происходит примерно раз в секунду, в результате чего частота мигания светодиода составляет ~ 0,5 Гц.

int main () {

TMOD = 0x3; // Режим таймера - 8 бит, без предделителя. freq = OSCFREQ / 12/2 ^ 8 TL0 = 0; // Очистить счетчик TH0 = 0; // Очистить регистр TR0 = 1; // Устанавливаем таймер на запуск. ЕТ0 = 1; // Устанавливаем прерывание. EA = 1; // Устанавливаем глобальное прерывание. в то время как (1) {если (led_state) {P1 = 0xFF; } else {P1 = 0x00; }}}

Мы настраиваем модуль таймера и ждем изменений в переменной управления состоянием светодиода. TMOD - это регистр управления режимом таймера. TL0 и TH0 - это регистры управления Timer0. ET0 - это бит включения таймера0 в регистре управления таймером (TCON). TR0 и EA - это биты в регистре разрешения прерывания (IE).

Шаг 7: Дополнительные ресурсы

  • Таблица данных AT89C2051:
  • Компилятор C для малых устройств (sdcc):
  • 8051 ресурсы:
  • Репозиторий программатора AT89C2051:
  • Репозиторий hello-8051:

Рекомендуемые: