Kazalo:
- 1. korak: Zahteve
- 2. korak: Izdelava programerja
- 3. korak: Namestitev programske opreme za programerje
- 4. korak: Programiranje čipa
- 5. korak: Montaža
- 6. korak: Pojasnilo kode
- 7. korak: Dodatni viri
Video: Uvod v programiranje 8051 z AT89C2051 (gost v vlogi: Arduino): 7 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
8051 (znan tudi kot MCS-51) je zasnova MCU iz 80-ih, ki ostaja priljubljena še danes. Sodobni mikrokrmilniki, združljivi s standardom 8051, so na voljo pri več prodajalcih v vseh oblikah in velikostih ter s široko paleto zunanjih naprav. V tem navodilu bomo gledali na AT89C2051 MCU iz Atmela.
AT89C2051 je majhen (2Kbyte Flash, 128byte RAM), poceni (~ 1,40 USD na čip) mikrokrmilnik.
- 2.7-6V delovanje
- 15 V/I linij
- 2 časovnika (16 -bitni)
- Notranje in zunanje prekinitve
- UART
- Analogni primerjalnik na čipu
- Do 2MIPS s 24MHz uro
1. korak: Zahteve
Zahteve:
- Linux PC (potrebna programska oprema: Arduino IDE, git, make, sdcc)
- Arduino UNO
- Čip AT89C2051 (paket DIP20)
- 20-polna vtičnica ZIF
- Optoelement (po možnosti izhod MOSFET)
- Arduino prototipni ščit
- 12V napajanje
- 5V napajanje
- 16MHz kristalni oscilator
- 2x 30pF kondenzator
- 100nF kondenzator
- Dioda (npr.: 1N400X)
- Upori (1K, 3K3)
- Protoboard
- Skakalci
- Bakrena žica
Preverite, ali je potrebna programska oprema:
kateri python3
ki naredijo kateri sdcc kateri git
2. korak: Izdelava programerja
Ta razdelek bo kratek, saj sem pred časom zgradil svoj programski ščit. Priložil sem shemo in slike sestavljene plošče. PDF sheme lahko najdete v skladišču.
Programersko ploščo boste morali programirati:
1. Klonirajte skladišče.
git clone
2. Odprite datoteko AT89C2051_programmer/AT89_prog/AT89_prog.ino v Arduino IDE.
3. Ustvarite in naložite skico iz Arduino IDE.
3. korak: Namestitev programske opreme za programerje
1. Ustvarite navidezno okolje python.
python3 -m venv venv
. venv/bin/aktiviraj
2. Namestite at89overlord. at89overlord je odprtokodni programer za čip AT89C2051, ki sem ga napisal jaz. Njegovo izvorno kodo najdete tukaj.
pip install at89overlord
3. Preverite namestitev.
at89overlord -h
4. korak: Programiranje čipa
1. Klonirajte preprost utripajoč projekt.
cd ~
git clone https://github.com/piotrb5e3/hello-8051.git cd hello-8051/
2. Zgradite aplikacijo.
narediti
3. Priključite Arduino na računalnik, priključite 12V napajanje, postavite čip AT89C2051 v vtičnico ZIF.
4. Poiščite serijska vrata Arduino.
ls /dev /tty*
5. Naložite vgrajeno datoteko IntelHex na čip. Če so vrata vašega Arduina drugačna od /dev /ttyACM0, morate posredovati pravilno vrednost s parametrom ukazne vrstice -p.
at89overlord -f./hello.ihx
5. korak: Montaža
Sestavite vezje v skladu s shemo. Različico PDF najdete v skladišču.
Videti bi morali zeleno LED bliskavico s frekvenco okoli 0,5Hz.
6. korak: Pojasnilo kode
#vključi
#vključi
Začnemo z vključitvijo glave AT89X051 iz sdcc. Vsebuje makre za interakcijo z registri, kot da so spremenljivke. Vključujemo tudi stdint.h, ki vsebuje definicije tipov celih števil uint8_t in uint16_t.
// Ob predpostavki, da je oscilator 16MHz
#define INTERRUPTS_PER_SECOND 5208
Do prekinitve pride, ko se Timer0 preplavi. Konfiguriran je kot en sam 8 -bitni časovnik, zato se to zgodi vsakih 2^8 procesorskih ciklov. En procesorski cikel traja 12 ciklov ure in tako pridemo do 16000000/12/2^8 = 5208.33333.
hlapno uint8_t led_state = 0;
hlapni uint16_t timer_counter = INTERRUPTS_PER_SECOND;
Razglasimo spremenljivke vodilnega stanja in prekinimo števec.
void Timer0_ISR (void) _interrupt (1) {
števec časa-; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}
Vsakič, ko se Timer0 prelije, se števec zmanjša. Če je enako nič, se ponastavi in stanje LED se spremeni. To se zgodi približno enkrat na sekundo, zaradi česar utripa LED frekvenca ~ 0,5 Hz.
int main () {
TMOD = 0x3; // Način časovnika - 8 bitov, brez predznaka. freq = OSCFREQ/12/2^8 TL0 = 0; // Počisti števec TH0 = 0; // Počisti register TR0 = 1; // Nastavitev časovnika za zagon. ET0 = 1; // Nastavi prekinitev. EA = 1; // Nastavi globalni prekinitev. while (1) {if (led_state) {P1 = 0xFF; } else {P1 = 0x00; }}}
Konfiguriramo časovni modul in čakamo na spremembe v nadzorni spremenljivki stanja stanja. TMOD je nadzorni register časovnega načina. TL0 in TH0 sta krmilna registra Timer0. ET0 je bit enable-timer0 v registru krmiljenja časovnika (TCON). TR0 in EA sta bita v registru za omogočanje prekinitev (IE).
7. korak: Dodatni viri
- Podatkovni list AT89C2051:
- Prevajalnik malih naprav C (sdcc):
- 8051 viri:
- Skladišče programerjev AT89C2051:
- skladišče hello-8051:
Priporočena:
Uvod v programiranje Raspberry Pi brez ročnega kodiranja: 3 koraki
Uvod v programiranje Raspberry Pi brez ročnega kodiranja: Pozdravljeni, ta navodila vam bodo pokazala, kako spremeniti vaš Raspberry Pi v popolnoma programabilno napravo za avtomatizacijo, združljivo z grafično usmerjenim programskim jezikom za PLC-je, imenovano funkcijski blok diagram (del standarda IEC 61131-3). To je lahko
Arduino daljinsko/brezžično programiranje in Power Bank domače: 12 korakov (s slikami)
Arduino daljinsko/brezžično programiranje in Power Bank Domače: Problem. V bližini računalnika razvijem skico in uporabljam usb in serijsko za " odpravljanje napak " v tem primeru ustvarim knjižnico za DHT12, dostavim različico na knjižnici github.Prihaja pa težava: " ko temperatura pade pod 0, se odčitana vrednost zruši
Najcenejši Arduino -- Najmanjši Arduino -- Arduino Pro Mini -- Programiranje -- Arduino Neno: 6 korakov (s slikami)
Najcenejši Arduino || Najmanjši Arduino || Arduino Pro Mini || Programiranje || Arduino Neno: …………………………. PRIJAVITE SE na moj YouTube kanal za več videov ……. .Ta projekt govori o tem, kako povezati najmanjši in najcenejši arduino doslej. Najmanjši in najcenejši arduino je arduino pro mini. Podobno je arduinu
Programiranje ATTiny85, ATTiny84 in ATMega328P: Arduino kot ISP: 9 korakov (s slikami)
Programiranje ATTiny85, ATTiny84 in ATMega328P: Arduino Kot ponudnik internetnih storitev: Predgovor Pred kratkim sem razvil nekaj projektov IoT, ki temeljijo na ESP8266, in ugotovil, da se jedrni procesor trudi izvesti vse naloge, ki sem jih potreboval za upravljanje, zato sem se odločil distribuirati nekaj manj pomembne dejavnosti za drug mikrofon
Kako enostavno spremeniti znak "Light/LED" za enostavno programiranje Arduino: 7 korakov (s slikami)
Kako enostavno spremeniti znak "Light/LED" za enostavno programiranje Arduino: V tem navodilu bom pokazal, kako lahko vsakdo nekaj z lučmi spremeni v programabilne arduino utripajoče luči ali " premične luči "