Mundarija:

AT89C2051 bilan 8051 dasturlashga kirish (Mehmonlar ishtirokida: Arduino): 7 qadam (rasmlar bilan)
AT89C2051 bilan 8051 dasturlashga kirish (Mehmonlar ishtirokida: Arduino): 7 qadam (rasmlar bilan)

Video: AT89C2051 bilan 8051 dasturlashga kirish (Mehmonlar ishtirokida: Arduino): 7 qadam (rasmlar bilan)

Video: AT89C2051 bilan 8051 dasturlashga kirish (Mehmonlar ishtirokida: Arduino): 7 qadam (rasmlar bilan)
Video: По коробкам #04 #Программаторы 1 энергонезависимых памятей и контроллеров : #Самоделки и #ETL Одесса 2024, Noyabr
Anonim
AT89C2051 bilan 8051 dasturlashiga kirish (Mehmonlar ishtirokida: Arduino)
AT89C2051 bilan 8051 dasturlashiga kirish (Mehmonlar ishtirokida: Arduino)

8051 (MCS-51 nomi bilan ham tanilgan)-bu 80-yillardagi MCU dizayni, bugungi kunda mashhur bo'lib qolmoqda. Zamonaviy 8051-ga mos keladigan mikrokontrollerlar har xil shakl va o'lchamlarda va atrof-muhit birliklarining keng assortimentida bir nechta sotuvchilardan mavjud. Bu yo'riqnomada biz Atmel'dan AT89C2051 MCU ni ko'rib chiqamiz.

AT89C2051 - bu kichik (2Kbaytli Flash, 128 baytli RAM), arzon (chip uchun ~ 1,40 dollar) mikrokontroller.

  • 2.7-6V kuchlanish
  • 15 kirish/chiqish liniyasi
  • 2 taymer (16 bit)
  • Ichki va tashqi uzilishlar
  • UART
  • Chipdagi analog taqqoslagich
  • 24 MGts chastotali 2MIPSgacha

1 -qadam: talablar

Talablar
Talablar

Talablar:

  • Linux kompyuter (kerakli dasturiy ta'minot: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • AT89C2051 chipi (DIP20 to'plami)
  • 20 pinli ZIF rozetkasi
  • Optocoupler (tercihen MOSFET chiqishi)
  • Arduino prototipli qalqoni
  • 12V quvvat manbai
  • 5V quvvat manbai
  • 16 MGts kristalli osilator
  • 2x30pF kondansatör
  • 100nF kondansatör
  • Diyot (masalan: 1N400X)
  • Rezistorlar (1K, 3K3)
  • Protoboard
  • Jumperlar
  • Mis sim

Kerakli dasturiy ta'minotni tekshiring:

qaysi python3

qaysi sdcc qaysi git

2 -qadam: Dasturchi yaratish

Dasturchi yaratish
Dasturchi yaratish
Dasturchi yaratish
Dasturchi yaratish
Dasturchi yaratish
Dasturchi yaratish

Bu bo'lim qisqa bo'ladi, chunki men bir muncha vaqt oldin dasturlash qalqonini qurganman. Men yig'ilgan taxtaning sxemasi va rasmlarini biriktirdim. Sxemaning PDF -ni omborda topish mumkin.

Siz dasturchi panelini dasturlashingiz kerak bo'ladi:

1. Ma'lumotlar omborini klonlang.

git klon

2. AT89C2051_programmer/AT89_prog/AT89_prog.ino faylini Arduino IDE -da oching.

3. Arduino IDE -dan eskizni yarating va yuklang.

3 -qadam: Dasturchi dasturini o'rnatish

Dasturchi dasturini o'rnatish
Dasturchi dasturini o'rnatish
Dasturchi dasturini o'rnatish
Dasturchi dasturini o'rnatish

1. Python virtual muhitini yarating.

python3 -m venv venv

. venv/bin/faollashtiring

2. at89overlord -ni o'rnating. at89overlord - bu AT89C2051 chipi uchun ochiq manba kodli dasturchi, uning manba kodini bu erda topishingiz mumkin.

pipni at89overlord -ga o'rnating

3. O'rnatishni tekshiring.

ot89 ustozi -h

4 -qadam: Chipni dasturlash

Chipni dasturlash
Chipni dasturlash
Chipni dasturlash
Chipni dasturlash
Chipni dasturlash
Chipni dasturlash
Chipni dasturlash
Chipni dasturlash

1. Oddiy miltillash loyihasini klonlang.

CD ~

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

2. Ilovani yarating.

qilmoq

3. Arduinoni shaxsiy kompyuterga ulang, 12V quvvat manbaiga ulang, AT89C2051 chipini ZIF rozetkasiga joylashtiring.

4. Arduino ketma -ket portini toping.

ls /dev /tty*

5. Chipga o'rnatilgan IntelHex faylini yuklang. Agar sizning Arduino portingiz /dev /ttyACM0 dan farq qilsa, siz to'g'ri qiymatni -p buyruq qatori parametri bilan o'tkazishingiz kerak.

ot89verlord -f./hello.ihx

5 -qadam: yig'ish

O'rnatish
O'rnatish
O'rnatish
O'rnatish
O'rnatish
O'rnatish

Sxemaga muvofiq sxemani yig'ing. PDF -versiyasini omborda topish mumkin.

Siz taxminan 0,5 Gts chastotali yashil LED chiroqni ko'rishingiz kerak.

6 -qadam: Kodni tushuntirish

Kodni tushuntirish
Kodni tushuntirish

#qo'shing

#qo'shing

Biz sdcc -dan AT89X051 sarlavhasini qo'shishni boshlaymiz. U o'zgarmaydiganlar kabi registrlar bilan ishlash uchun makrolarni o'z ichiga oladi. Ud8_t va uint16_t tamsayı turlarining ta'riflarini o'z ichiga olgan stdint.h ni ham o'z ichiga oladi.

// Osilator 16 MGts ga teng deb hisoblaymiz

#aniqlang INTERRUPTS_PER_SECOND 5208

Timer0 oshib ketganda uzilish sodir bo'ladi. U bitta 8 bitli taymer sifatida tuzilgan, shuning uchun bu har 2^8 protsessor tsiklida sodir bo'ladi. Bitta protsessor tsikli 12 soatlik tsiklni oladi va biz 16000000/12/2^8 = 5208.33333 ga yetamiz.

uchuvchi uint8_t led_state = 0;

uchuvchi uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Biz boshqariladigan davlat nazoratini e'lon qilamiz va hisoblagich o'zgaruvchilarini to'xtatamiz.

void Timer0_ISR (void) _ uzilish (1) {

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

Har safar Timer0 oshib ketganda, hisoblagich kamayadi. Agar u nolga teng bo'lsa, u asl holatiga qaytariladi va LED holati o'zgartiriladi. Bu sekundiga bir marta sodir bo'ladi, natijada ~ 0,5Hz LED yonib -o'chib turadi.

int main () {

TMOD = 0x3; // Taymer rejimi - 8 bit, oldindan hisoblagich yo'q. chastota = OSCFREQ/12/2^8 TL0 = 0; // Hisoblagichni tozalash TH0 = 0; // TR0 = 1 registrini tozalash; // Taymerni ishga tushirish uchun o'rnating. ET0 = 1; // uzilishni o'rnating. EA = 1; // Global uzilishni o'rnating. while (1) {if (led_state) {P1 = 0xFF; } boshqa {P1 = 0x00; }}}

Biz taymer modulini konfiguratsiya qilamiz va o'zgaruvchan holatni nazorat qilamiz. TMM - bu taymer rejimini boshqarish registri. TL0 va TH0 - Timer0 boshqaruv registrlari. ET0-taymerni boshqarish registridagi (TCON) faollashtiruvchi-timer0 biti. TR0 va EA - uzilishlarni yoqish registridagi (IE) bitlar.

7 -qadam: Qo'shimcha manbalar

  • AT89C2051 ma'lumotlar jadvali:
  • Kichik qurilma C kompilyatori (sdcc):
  • 8051 manbalari:
  • AT89C2051 dasturchi ombori:
  • salom-8051 ombori:

Tavsiya: