Мазмұны:

AT89C2051 көмегімен 8051 бағдарламалауға кіріспе (Қонақта: Arduino): 7 қадам (суреттермен)
AT89C2051 көмегімен 8051 бағдарламалауға кіріспе (Қонақта: Arduino): 7 қадам (суреттермен)

Бейне: AT89C2051 көмегімен 8051 бағдарламалауға кіріспе (Қонақта: Arduino): 7 қадам (суреттермен)

Бейне: AT89C2051 көмегімен 8051 бағдарламалауға кіріспе (Қонақта: Arduino): 7 қадам (суреттермен)
Бейне: Таймер с использованием Arduino Uno, программирование Arduino 2024, Шілде
Anonim
AT89C2051 көмегімен 8051 бағдарламалауға кіріспе (Қонақта: Ардуино)
AT89C2051 көмегімен 8051 бағдарламалауға кіріспе (Қонақта: Ардуино)

8051 (MCS-51 деп те аталады)-80-жылдардағы MCU дизайны, ол бүгінгі күнге дейін танымал болып қала береді. Қазіргі заманғы 8051 үйлесімді микроконтроллерлер көптеген жеткізушілерден, барлық пішіндер мен өлшемдерде және перифериялық қондырғылардың кең ауқымында қол жетімді. Бұл нұсқаулықта біз Atmel компаниясынан AT89C2051 MCU қарастырамыз.

AT89C2051 - шағын (2Кбайт флэш, 128 байт жедел жады), арзан (бір чипке ~ 1,40 доллар) микроконтроллер.

  • 2.7-6В жұмыс
  • 15 енгізу -шығару жолдары
  • 2 таймер (16 биттік)
  • Ішкі және сыртқы үзілістер
  • UART
  • Микросхемадағы аналогтық компаратор
  • 24 МГц сағаты бар 2MIPS дейін

1 -қадам: талаптар

Талаптар
Талаптар

Талаптар:

  • Linux ДК (қажетті бағдарламалық қамтамасыз ету: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • AT89C2051 чипі (DIP20 пакеті)
  • 20 істікшелі ZIF ұясы
  • Optocoupler (жақсырақ MOSFET шығысы)
  • Arduino прототиптік қалқаны
  • 12 В қуат көзі
  • 5В қуат көзі
  • 16 МГц кристалды осциллятор
  • 2x 30pF конденсатор
  • 100nF конденсатор
  • Диод (мысалы: 1N400X)
  • Резисторлар (1K, 3K3)
  • Protoboard
  • Секіргіштер
  • Мыс сым

Қажетті бағдарламалық жасақтаманы тексеріңіз:

қандай питон3

қайсысы sdcc қайсысын жасайды

2 -қадам: бағдарламашыны құру

Бағдарламашыны құру
Бағдарламашыны құру
Бағдарламашыны құру
Бағдарламашыны құру
Бағдарламашыны құру
Бағдарламашыны құру

Бұл бөлім қысқаша болады, өйткені мен біраз уақыт бұрын бағдарламалау қалқанын құрдым. Мен құрастырылған тақтаның схемасы мен суреттерін тіркедім. Схеманың PDF файлын репозиторийден табуға болады.

Сізге бағдарламашылар тақтасын бағдарламалау қажет:

1. Репозиторийді клондау.

git клоны

2. AT89C2051_programmer/AT89_prog/AT89_prog.ino файлын Arduino IDE бағдарламасында ашыңыз.

3. Эскизді Arduino IDE -ден құрастырыңыз және жүктеңіз.

3 -қадам: Бағдарламалық жасақтаманы орнату

Бағдарламалық жасақтаманы орнату
Бағдарламалық жасақтаманы орнату
Бағдарламалық жасақтаманы орнату
Бағдарламалық жасақтаманы орнату

1. Python виртуалды ортасын құру.

python3 -m venv venv

. venv/bin/activate

2. at89overlord орнатыңыз. at89overlord - бұл мен жазған AT89C2051 чипінің ашық коды бар бағдарламашы, оның бастапқы кодын мына жерден табуға болады.

pip 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 -қадам: кодты түсіндіру

Кодты түсіндіру
Кодты түсіндіру

#қосу

#қосу

Біз sdcc -тен AT89X051 тақырыбын қосудан бастаймыз. Онда регистрлермен айнымалылар сияқты әрекет етуге арналған макростар бар. Біз сондай -ақ uint8_t және uint16_t бүтін сандар түрлерінің анықтамаларын қамтитын stdint.h қосамыз.

// Осциллятор 16 МГц деп есептейміз

#анықтаңыз 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) _ үзіліс (1) {

timer_counter-; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}

Timer0 толған сайын есептегіш төмендейді. Егер ол нөлге тең болса, ол бастапқы күйге қайтарылады. Бұл шамамен секундына бір рет болады, нәтижесінде ~ 0,5 Гц жарық диодты жыпылықтайды.

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; } басқа {P1 = 0x00; }}}

Біз таймер модулін конфигурациялаймыз және күйді басқарудың айнымалы мәнінің өзгеруін күтеміз. TMOD - таймер режимінің басқару регистрі. TL0 және TH0 - Timer0 басқару регистрлері. ET0-таймерді басқару регистріндегі (TCON) қосылатын timer0 биті. TR0 және EA - үзілісті қосу регистрінің (IE) биттері.

7 -қадам: Қосымша ресурстар

  • AT89C2051 мәліметтер парағы:
  • Шағын құрылғы C компиляторы (sdcc):
  • 8051 ресурстар:
  • AT89C2051 бағдарламашылар қоймасы:
  • сәлем-8051 репозиторийі:

Ұсынылған: