Съдържание:

Въведение в програмирането 8051 с AT89C2051 (Гост с участието: Arduino): 7 стъпки (със снимки)
Въведение в програмирането 8051 с AT89C2051 (Гост с участието: Arduino): 7 стъпки (със снимки)

Видео: Въведение в програмирането 8051 с AT89C2051 (Гост с участието: Arduino): 7 стъпки (със снимки)

Видео: Въведение в програмирането 8051 с AT89C2051 (Гост с участието: Arduino): 7 стъпки (със снимки)
Видео: 8051 Microcontroller - обзор приложения 2024, Ноември
Anonim
Въведение в програмирането на 8051 с AT89C2051 (Гост с участието: Arduino)
Въведение в програмирането на 8051 с AT89C2051 (Гост с участието: Arduino)

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

AT89C2051 е малък (2Kbyte Flash, 128byte RAM), евтин (~ $ 1.40 на чип) микроконтролер.

  • 2.7-6V работа
  • 15 I/O линии
  • 2 таймера (16 бита)
  • Вътрешни и външни прекъсвания
  • UART
  • Аналогов компаратор на чип
  • До 2MIPS с 24MHz часовник

Стъпка 1: Изисквания

Изисквания
Изисквания

Изисквания:

  • Linux компютър (необходим софтуер: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • Чип AT89C2051 (пакет DIP20)
  • 20-пинов ZIF гнездо
  • Оптрон (за предпочитане MOSFET изход)
  • Щит за прототипиране на Arduino
  • 12V захранване
  • 5V захранване
  • 16MHz кристален осцилатор
  • 2x 30pF кондензатор
  • 100nF кондензатор
  • Диод (например: 1N400X)
  • Резистори (1K, 3K3)
  • Protoboard
  • Джъмпери
  • Меден проводник

Проверете за необходимия софтуер:

който python3

които правят кой sdcc кой git

Стъпка 2: Изграждане на програмист

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

Този раздел ще бъде кратък, тъй като преди време изградих моя щит за програмиране. Прилагам схемата и снимките на сглобената платка. PDF файлът на схемата може да бъде намерен в хранилището.

Ще трябва да програмирате борда на програмиста:

1. Клонирайте хранилището.

git клонинг

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

3. Изградете и качете скицата от IDE на Arduino.

Стъпка 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 към компютъра, свържете 12V захранване, поставете чипа AT89C2051 в гнездото ZIF.

4. Намерете серийния порт на Arduino.

ls /dev /tty*

5. Качете вградения IntelHex файл на чипа. Ако портът на вашия Arduino е различен от /dev /ttyACM0, трябва да предадете правилната стойност с параметъра -p на командния ред.

at89overlord -f./hello.ihx

Стъпка 5: Монтаж

Монтаж
Монтаж
Монтаж
Монтаж
Монтаж
Монтаж

Сглобете веригата според схемата. PDF версия може да бъде намерена в хранилището.

Трябва да видите зелената LED светкавица с честота около 0,5Hz.

Стъпка 6: Обяснение на кода

Код Обяснение
Код Обяснение

#включва

#включва

Започваме с включването на заглавката AT89X051 от sdcc. Той съдържа макроси за взаимодействие с регистри, сякаш са променливи. Ние също така включваме stdint.h, който съдържа дефиниции на целочислени типове uint8_t и uint16_t.

// Ако приемем, че осцилаторът е 16MHz

#дефинирайте 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;

Декларираме контрола на променящите се състояния на LED и прекъсваме брояча.

void Timer0_ISR (void) _interrupt (1) {

таймер_ брояч--; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}

Всеки път, когато Timer0 прелива, броячът намалява. Ако е равно на нула, то се нулира и състоянието на светодиода се променя. Това се случва около веднъж в секунда, което води до ~ 0.5Hz честота на мигане на LED.

int main () {

TMOD = 0x3; // Режим на таймер - 8 бита, без предварителна настройка. честота = OSCFREQ/12/2^8 TL0 = 0; // Изчистване на брояча TH0 = 0; // Изчистване на регистър TR0 = 1; // Настройване на таймера за работа. ET0 = 1; // Задаване на прекъсване. EA = 1; // Задаване на глобално прекъсване. while (1) {if (led_state) {P1 = 0xFF; } else {P1 = 0x00; }}}

Конфигурираме модула на таймера и чакаме промени в променливата за управление на състоянието. TMOD е регистърът за управление на режима на таймера. TL0 и TH0 са контролни регистри на Timer0. ET0 е битът enable-timer0 в регистъра за управление на таймера (TCON). TR0 и EA са битове в регистъра за разрешаване на прекъсване (IE).

Стъпка 7: Допълнителни ресурси

  • Информационен лист за AT89C2051:
  • Компилатор за малко устройство C (sdcc):
  • 8051 ресурси:
  • Хранилище за програмисти AT89C2051:
  • хранилище за здравей-8051:

Препоръчано: