Satura rādītājs:

Ievads 8051 programmēšanā ar AT89C2051 (viesa lomā: Arduino): 7 soļi (ar attēliem)
Ievads 8051 programmēšanā ar AT89C2051 (viesa lomā: Arduino): 7 soļi (ar attēliem)

Video: Ievads 8051 programmēšanā ar AT89C2051 (viesa lomā: Arduino): 7 soļi (ar attēliem)

Video: Ievads 8051 programmēšanā ar AT89C2051 (viesa lomā: Arduino): 7 soļi (ar attēliem)
Video: AT89C55WD Easy Downloader 2024, Novembris
Anonim
Ievads 8051 programmēšanā, izmantojot AT89C2051 (viesa lomā: Arduino)
Ievads 8051 programmēšanā, izmantojot AT89C2051 (viesa lomā: Arduino)

8051 (pazīstams arī kā MCS-51) ir 80. gadu MCU dizains, kas joprojām ir populārs. Mūsdienīgi ar 8051 saderīgi mikrokontrolleri ir pieejami no dažādiem pārdevējiem visās formās un izmēros, kā arī ar plašu perifērijas ierīču klāstu. Šajā pamācībā mēs aplūkosim AT89C2051 MCU no Atmel.

AT89C2051 ir mazs (2KB Flash, 128baitu RAM), lēts (~ 1,40 ASV dolāri par mikroshēmu) mikrokontrolleris.

  • 2.7-6V darbība
  • 15 I/O līnijas
  • 2 taimeri (16 biti)
  • Iekšējie un ārējie pārtraukumi
  • UART
  • Mikroshēmas analogs salīdzinātājs
  • Līdz 2MIPS ar 24MHz pulksteni

1. darbība. Prasības

Prasības
Prasības

Prasības:

  • Linux dators (nepieciešamā programmatūra: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • Mikroshēma AT89C2051 (DIP20 pakete)
  • 20 kontaktu ZIF ligzda
  • Optoelementi (vēlams MOSFET izeja)
  • Arduino prototipu vairogs
  • 12V barošanas avots
  • 5V barošanas avots
  • 16MHz kristāla oscilators
  • 2x 30pF kondensators
  • 100nF kondensators
  • Diodes (piemēram: 1N400X)
  • Rezistori (1K, 3K3)
  • Protoboard
  • Džemperi
  • Vara stieple

Pārbaudiet nepieciešamo programmatūru:

kurš python3

kas padara kuru sdcc kuru git

2. darbība: programmētāja izveide

Programmētāja veidošana
Programmētāja veidošana
Programmētāja veidošana
Programmētāja veidošana
Programmētāja veidošana
Programmētāja veidošana

Šī sadaļa būs īsa, jo pirms kāda laika es izveidoju savu programmēšanas vairogu. Es pievienoju samontēto tāfeles shēmu un attēlus. Shēmas PDF failu var atrast repozitorijā.

Jums būs jāprogrammē programmētāja dēlis:

1. Klonējiet krātuvi.

git klons

2. Arduino IDE atveriet failu AT89C2051_programmer/AT89_prog/AT89_prog.ino.

3. Izveidojiet un augšupielādējiet skici no Arduino IDE.

3. darbība: programmētāja programmatūras instalēšana

Programmētāja programmatūras instalēšana
Programmētāja programmatūras instalēšana
Programmētāja programmatūras instalēšana
Programmētāja programmatūras instalēšana

1. Izveidojiet pitona virtuālo vidi.

python3 -m venv venv

. venv/bin/aktivizēt

2. Instalējiet at89overlord. at89overlord ir atvērtā pirmkoda programmētājs manis rakstītajai mikroshēmai AT89C2051. Tā pirmkodu var atrast šeit.

pip instalēt at89overlord

3. Pārbaudiet instalāciju.

at89overlord -h

4. darbība: mikroshēmas programmēšana

Čipa programmēšana
Čipa programmēšana
Čipa programmēšana
Čipa programmēšana
Čipa programmēšana
Čipa programmēšana
Čipa programmēšana
Čipa programmēšana

1. Klonējiet vienkāršu mirgošanas projektu.

cd ~

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

2. Izveidojiet lietojumprogrammu.

veidot

3. Pievienojiet Arduino datoram, pievienojiet 12 V barošanu, ievietojiet AT89C2051 mikroshēmu ZIF kontaktligzdā.

4. Atrodiet Arduino seriālo portu.

ls /dev /tty*

5. Augšupielādējiet izveidoto IntelHex failu mikroshēmā. Ja jūsu Arduino ports atšķiras no /dev /ttyACM0, jums jānorāda pareizā vērtība, izmantojot komandrindas parametru -p.

at89overlord -f./hello.ihx

5. solis: montāža

Montāža
Montāža
Montāža
Montāža
Montāža
Montāža

Salieciet ķēdi saskaņā ar shēmu. PDF versiju var atrast krātuvē.

Jums vajadzētu redzēt zaļo LED zibspuldzi ar frekvenci aptuveni 0,5 Hz.

6. darbība: koda skaidrojums

Koda skaidrojums
Koda skaidrojums

#iekļaut

#iekļaut

Mēs sākam, iekļaujot galveni AT89X051 no sdcc. Tas satur makro, lai mijiedarbotos ar reģistriem tā, it kā tie būtu mainīgie. Mēs iekļaujam arī stdint.h, kurā ir uint8_t un uint16_t veselu skaitļu veidu definīcijas.

// Pieņemot, ka oscilators ir 16MHz

#define INTERRUPTS_PER_SECOND 5208

Pārtraukums notiek, kad taimeris0 pārplūst. Tas ir konfigurēts kā viens 8 bitu taimeris, tāpēc tas notiek ik pēc 2^8 procesoru cikliem. Viens procesora cikls aizņem 12 pulksteņa ciklus, un tādējādi mēs nonākam pie 16000000/12/2^8 = 5208.33333.

gaistošs uint8_t led_state = 0;

gaistošs uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Mēs deklarējam vadītās valsts kontroles un pārtraukšanas skaitītāja mainīgos.

void Timer0_ISR (anulēts) _interrupt (1) {

taimeris_skaitītājs--; ja (taimera_skaitītājs == 0) {led_state =! led_state; taimera_skaitītājs = INTERRUPTS_PER_SECOND; }}

Katru reizi, kad taimeris0 pārplūst, skaitītājs tiek samazināts. Ja tas ir vienāds ar nulli, tas tiek atiestatīts, un LED stāvoklis tiek mainīts. Tas notiek aptuveni reizi sekundē, kā rezultātā mirgo ~ 0,5 Hz LED.

int main () {

TMOD = 0x3; // Taimera režīms - 8 biti, bez prescaler. biežums = OSCFREQ/12/2^8 TL0 = 0; // Notīrīt skaitītāju TH0 = 0; // Notīrīt reģistru TR0 = 1; // Iestatīt taimeri darbībai. ET0 = 1; // Iestatīt pārtraukumu. EA = 1; // Iestatīt globālu pārtraukumu. kamēr (1) {if (led_state) {P1 = 0xFF; } cits {P1 = 0x00; }}}

Mēs konfigurējam taimera moduli un gaidām izmaiņas vadītā stāvokļa vadības mainīgajā. TMOD ir taimera režīma vadības reģistrs. TL0 un TH0 ir Timer0 vadības reģistri. ET0 ir iespējošanas taimera bits taimera vadības reģistrā (TCON). TR0 un EA ir biti pārtraukuma iespējošanas reģistrā (IE).

7. darbība. Papildu resursi

  • AT89C2051 datu lapa:
  • Nelielas ierīces C kompilators (sdcc):
  • 8051 resursi:
  • AT89C2051 programmētāju krātuve:
  • labdien-8051 krātuve:

Ieteicams: