Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
8051 (tuntud ka kui MCS-51) on 80-ndate aastate MCU disain, mis on endiselt populaarne. Kaasaegseid 8051-ga ühilduvaid mikrokontrollereid on saadaval mitmelt müüjalt, igas kujus ja suuruses ning laias valikus välisseadmeid. Selles juhendis vaatame Atmeli AT89C2051 MCU -d.
AT89C2051 on väike (2Kbyte Flash, 128byte RAM), odav (~ 1,40 $ kiibi kohta) mikrokontroller. Omadused:
- 2.7-6V töö
- 15 I/O liini
- 2 taimerit (16 bitti)
- Sisemised ja välised katkestused
- UART
- Kiibil olev analoogvõrdleja
- Kuni 2 MIPS 24MHz kellaga
Samm: nõuded
Nõuded:
- Linuxi arvuti (vajalik tarkvara: Arduino IDE, git, make, sdcc)
- Arduino UNO
- Kiip AT89C2051 (DIP20 pakett)
- 20-kontaktiline ZIF-pesa
- Optoelement (eelistatavalt MOSFET-väljund)
- Arduino prototüüpimise kilp
- 12V toide
- 5V toide
- 16MHz kristallostsillaator
- 2x 30pF kondensaator
- 100 nF kondensaator
- Diood (nt: 1N400X)
- Takistid (1K, 3K3)
- Protoboard
- Džemprid
- Vasktraat
Kontrollige vajalikku tarkvara:
milline python3
mis teeb mis sdcc mis git
2. samm: programmeerija loomine
See jaotis on lühike, kuna ehitasin oma programmeerimiskilbi mõni aeg tagasi. Lisasin kokkupandud plaadi skemaatika ja pildid. Skeemi PDF -faili leiate hoidlast.
Peate programmeerimisplaadi programmeerima:
1. Kloonige hoidla.
git kloon
2. Avage Arduino IDE fail AT89C2051_programmer/AT89_prog/AT89_prog.ino.
3. Koostage ja laadige üles eskiis Arduino IDE -st.
Samm: programmeerimistarkvara installimine
1. Looge python virtuaalne keskkond.
python3 -m venv venv
. venv/bin/aktiveeri
2. Installige at89overlord. at89overlord on minu kirjutatud kiibi AT89C2051 avatud lähtekoodiga programmeerija. Selle lähtekoodi leiate siit.
pip install at89overlord
3. Kontrollige installimist.
at89overlord -h
4. samm: kiibi programmeerimine
1. Kloonige lihtne vilkumisprojekt.
cd ~
git kloon https://github.com/piotrb5e3/hello-8051.git cd tere-8051/
2. Koostage rakendus.
tegema
3. Ühendage Arduino arvutiga, ühendage 12V toide, asetage kiip AT89C2051 ZIF -pistikupessa.
4. Leidke Arduino jadaport.
ls /dev /tty*
5. Laadige ehitatud IntelHex -fail kiibile üles. Kui teie Arduino port erineb failist /dev /ttyACM0, peate õige väärtuse edastama käsurea parameetriga -p.
at89overlord -f./hello.ihx
Samm: kokkupanek
Pange skeem kokku vastavalt skeemile. PDF -versiooni leiate hoidlast.
Te peaksite nägema rohelist LED -välku sagedusega umbes 0,5 Hz.
6. samm: koodi selgitus
#kaasake
#kaasake
Alustuseks lisame sdcc -st päise AT89X051. See sisaldab makroid registritega suhtlemiseks justkui muutujateks. Lisame ka stdint.h, mis sisaldab uint8_t ja uint16_t täisarvutüüpide määratlusi.
// Eeldades, et ostsillaator on 16MHz
#define INTERRUPTS_PER_SECOND 5208
Katkestus tekib siis, kui taimer0 ületab. See on konfigureeritud ühe 8 -bitise taimerina, nii et see juhtub iga 2^8 protsessoritsükli järel. Üks protsessoritsükkel võtab 12 taktsüklit ja seega jõuame 16000000/12/2^8 = 5208.33333.
lenduv uint8_t led_state = 0;
lenduv uint16_t timer_counter = INTERRUPTS_PER_SECOND;
Deklareerime juhitud olekukontrolli ja katkestusloenduri muutujad.
tühine Taimer0_ISR (tühine) _interrupt (1) {
taimer_loendur--; if (timer_counter == 0) {led_state =! led_state; taimer_loendur = INTERRUPTS_PER_SECOND; }}
Iga kord, kui taimer0 ületab, väheneb loendur. Kui see on võrdne nulliga, lähtestatakse ja LED -i olek muutub. See juhtub umbes kord sekundis, mille tulemuseks on ~ 0,5 Hz LED -i vilkumissagedus.
int main () {
TMOD = 0x3; // Taimerirežiim - 8 bitti, eelseadistust pole. sagedus = OSCFREQ/12/2^8 TL0 = 0; // Kustuta loendur TH0 = 0; // Kustuta register TR0 = 1; // Seadista taimer tööle. ET0 = 1; // Määra katkestus. EA = 1; // Määra globaalne katkestus. samas (1) {if (led_state) {P1 = 0xFF; } muu {P1 = 0x00; }}}
Seadistame taimerimooduli ja ootame muudatusi led -oleku juhtmuutuja. TMOD on taimerirežiimi juhtregister. TL0 ja TH0 on Timer0 juhtregistrid. ET0 on taimerijuhtimisregistri (TCON) lubamis-taimer0-bit. TR0 ja EA on bitid katkestamise lubamise registris (IE).
Samm: täiendavad ressursid
- AT89C2051 andmeleht:
- Väikese seadme C kompilaator (sdcc):
- 8051 ressursid:
- AT89C2051 programmeerijate hoidla:
- tere-8051 hoidla: