Satura rādītājs:
- 1. darbība. Prasības
- 2. darbība: programmētāja izveide
- 3. darbība: programmētāja programmatūras instalēšana
- 4. darbība: mikroshēmas programmēšana
- 5. solis: montāža
- 6. darbība: koda skaidrojums
- 7. darbība. Papildu resursi
Video: Ievads 8051 programmēšanā ar AT89C2051 (viesa lomā: Arduino): 7 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
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:
- 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
Šī 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
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
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
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
#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:
ATtiny85 valkājamo vibrējošo aktivitāšu izsekošanas pulkstenis un programmēšana ATtiny85 ar Arduino Uno: 4 soļi (ar attēliem)
ATtiny85 valkājamo vibrējošo aktivitāšu izsekošanas pulkstenis un programmēšana ATtiny85 ar Arduino Uno: Kā izveidot valkājamu aktivitāšu izsekošanas pulksteni? Šis ir valkājams sīkrīks, kas paredzēts vibrācijai, konstatējot stagnāciju. Vai jūs lielāko daļu laika pavadāt pie datora tāpat kā es? Vai jūs sēdējat stundām ilgi, nemanot? Tad šī ierīce ir f
Ievads Raspberry Pi programmēšanā bez kodēšanas ar rokām: 3 soļi
Ievads Raspberry Pi programmēšanā bez kodēšanas ar rokām: Sveiki, šī pamācība parādīs, kā pārvērst Raspberry Pi par pilnībā programmējamu automatizācijas ierīci, kas ir saderīga ar grafiski orientētu programmēšanas valodu PLC, ko sauc par funkciju bloku diagrammu (daļa no IEC 61131-3 standarta). Tas var būt
Darba sākšana ar Esp 8266 Esp-01 ar Arduino IDE - Esp dēļu instalēšana Arduino Ide programmēšanā un Esp programmēšana: 4 soļi
Darba sākšana ar Esp 8266 Esp-01 ar Arduino IDE | Esp dēļu instalēšana Arduino Ide programmēšanā un Esp programmēšana: Šajā pamācībā mēs iemācīsimies instalēt esp8266 plates Arduino IDE un kā programmēt esp-01 un augšupielādēt kodu tajā. Tā kā esp dēļi ir tik populāri, es domāju par pamācību labošanu šis un lielākā daļa cilvēku saskaras ar problēmu
Arduino tālvadības/bezvadu programmēšana un mājās gatavota Power Bank: 12 soļi (ar attēliem)
Arduino tālvadības/bezvadu programmēšana un pašmāju Power Bank: problēma. Es izstrādāju skici pie datora, un es izmantoju USB un seriālo, lai " atkļūdotu " Šajā gadījumā es izveidoju lib DHT12, es piegādāju versiju bibliotēkas github. Bet rodas problēma: "kad temperatūra nokrītas zem 0, nolasītā vērtība ir wro
Lētākais Arduino -- Mazākais Arduino -- Arduino Pro Mini -- Programmēšana -- Arduino Neno: 6 soļi (ar attēliem)
Lētākais Arduino || Mazākais Arduino || Arduino Pro Mini || Programmēšana || Arduino Neno: …………………………. Lūdzu, abonējiet manu YouTube kanālu, lai iegūtu vairāk videoklipu ……. Šis projekts ir par to, kā sasaistīt mazāko un lētāko arduino. Mazākais un lētākais arduino ir arduino pro mini. Tas ir līdzīgs arduino