Turinys:
- 1 žingsnis: Reikalavimai
- 2 žingsnis: kurkite programuotoją
- 3 veiksmas: programuotojo programinės įrangos diegimas
- 4 žingsnis: lusto programavimas
- 5 žingsnis: Surinkimas
- 6 žingsnis: kodo paaiškinimas
- 7 žingsnis: papildomi ištekliai
Video: Įvadas į 8051 programavimą naudojant AT89C2051 (svečias: Arduino): 7 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:49
8051 (dar žinomas kaip MCS-51) yra 80-ųjų metų MCU dizainas, kuris išlieka populiarus ir šiandien. Šiuolaikinius su 8051 suderinamus mikrovaldiklius galima įsigyti iš įvairių tiekėjų, įvairių formų ir dydžių bei su įvairiais išoriniais įrenginiais. Šioje pamokoje apžvelgsime „Atmel“AT89C2051 MCU.
AT89C2051 yra nedidelis (2KB Flash, 128baitų RAM), pigus (~ 1,40 USD už mikroschemą) mikrovaldiklis.
- 2.7-6V veikimas
- 15 I/O linijų
- 2 laikmačiai (16 bitų)
- Vidiniai ir išoriniai pertraukimai
- UART
- Analoginis palyginimas mikroschemoje
- Iki 2MIPS su 24MHz laikrodžiu
1 žingsnis: Reikalavimai
Reikalavimai:
- „Linux“kompiuteris (reikalinga programinė įranga: „Arduino IDE“, „git“, „make“, sdcc)
- Arduino UNO
- AT89C2051 lustas (DIP20 paketas)
- 20 kontaktų ZIF lizdas
- Optronas (pageidautina MOSFET išvestis)
- „Arduino“prototipų skydas
- 12V maitinimo šaltinis
- 5V maitinimo šaltinis
- 16MHz kristalų osciliatorius
- 2x 30pF kondensatorius
- 100nF kondensatorius
- Diodas (pvz., 1N400X)
- Rezistoriai (1K, 3K3)
- Protoboard
- Džemperiai
- Varinė viela
Patikrinkite reikiamą programinę įrangą:
kuris python3
kurie padaro kuris sdcc kuris git
2 žingsnis: kurkite programuotoją
Šis skyrius bus trumpas, nes prieš kurį laiką sukūriau savo programavimo skydą. Pridedu surinktos plokštės schemą ir nuotraukas. Schemos PDF failą galima rasti saugykloje.
Turėsite užprogramuoti programuotojo lentą:
1. Klonuoti saugyklą.
git klonas
2. Arduino IDE atidarykite failą AT89C2051_programmer/AT89_prog/AT89_prog.ino.
3. Sukurkite ir įkelkite eskizą iš „Arduino IDE“.
3 veiksmas: programuotojo programinės įrangos diegimas
1. Sukurkite python virtualią aplinką.
python3 -m venv venv
. venv/bin/aktyvuoti
2. Įdiekite at89overlord. at89overlord yra mano parašyto AT89C2051 atvirojo kodo programuotojas. Jo šaltinio kodą rasite čia.
pip įdiegti at89overlord
3. Patikrinkite įdiegimą.
at89overlord -h
4 žingsnis: lusto programavimas
1. Klonuoti paprastą mirksėjimo projektą.
cd ~
git klonas https://github.com/piotrb5e3/hello-8051.git cd hello-8051/
2. Sukurkite programą.
padaryti
3. Prijunkite „Arduino“prie kompiuterio, prijunkite 12 V maitinimo šaltinį, įdėkite lustą AT89C2051 į ZIF lizdą.
4. Raskite „Arduino“nuoseklųjį prievadą.
ls /dev /tty*
5. Įkelkite sukurtą „IntelHex“failą į lustą. Jei jūsų „Arduino“prievadas skiriasi nuo /dev /ttyACM0, turite perduoti teisingą reikšmę naudodami komandinės eilutės parametrą -p.
at89overlord -f./hello.ihx
5 žingsnis: Surinkimas
Surinkite grandinę pagal schemą. PDF versiją galima rasti saugykloje.
Turėtumėte pamatyti žalią LED blykstę, kurios dažnis yra apie 0,5 Hz.
6 žingsnis: kodo paaiškinimas
#įtraukti
#įtraukti
Pradedame įtraukdami s89cc antraštę AT89X051. Jame yra makrokomandų, skirtų sąveikauti su registrais, tarsi jie būtų kintamieji. Taip pat įtraukiame stdint.h, kuriame yra uint8_t ir uint16_t sveikųjų skaičių tipų apibrėžimai.
// Darant prielaidą, kad osciliatorius yra 16MHz
#define INTERRUPTS_PER_SECOND 5208
Nutraukimas įvyksta, kai „Timer0“perpildomas. Jis sukonfigūruotas kaip vienas 8 bitų laikmatis, todėl tai vyksta kas 2^8 procesoriaus ciklus. Vienas procesoriaus ciklas užtrunka 12 laikrodžio ciklų, todėl pasiekiame 16000000/12/2^8 = 5208.33333.
nepastovus uint8_t led_state = 0;
nepastovus uint16_t timer_counter = INTERRUPTS_PER_SECOND;
Mes deklaruojame vedamos būsenos kontrolės ir pertraukimo skaitiklio kintamuosius.
void Timer0_ISR (void) _interrupt (1) {
timer_counter--; if (laikmatis_skaitiklis == 0) {led_state =! led_state; laikmačio_skaitiklis = INTERRUPTS_PER_SECOND; }}
Kiekvieną kartą, kai laikmatis0 perpildomas, skaitiklis mažinamas. Jei jis lygus nuliui, jis iš naujo nustatomas ir pasikeičia lemputės būsena. Tai įvyksta maždaug kartą per sekundę, todėl mirksi ~ 0,5 Hz LED.
int main () {
TMOD = 0x3; // Laikmačio režimas - 8 bitai, nėra prescaler. dažnis = OSCFREQ/12/2^8 TL0 = 0; // Išvalyti skaitiklį TH0 = 0; // Išvalyti registrą TR0 = 1; // Nustatykite paleisti laikmatį. ET0 = 1; // Nustatyti pertraukimą. EA = 1; // Nustatyti visuotinį pertraukimą. nors (1) {if (led_state) {P1 = 0xFF; } else {P1 = 0x00; }}}
Mes sukonfigūruojame laikmačio modulį ir laukiame pasikeitusio būsenos valdymo kintamojo. TMOD yra laikmačio režimo valdymo registras. TL0 ir TH0 yra „Timer0“valdymo registrai. ET0 yra įjungimo laikmačio 0 bitas laikmačio valdymo registre (TCON). TR0 ir EA yra pertraukos įgalinimo registro (IE) bitai.
7 žingsnis: papildomi ištekliai
- AT89C2051 duomenų lapas:
- Mažo įrenginio C kompiliatorius (sdcc):
- 8051 šaltiniai:
- AT89C2051 programuotojų saugykla:
- sveiki-8051 saugykla:
Rekomenduojamas:
Skaičiuojant nuo 0 iki 9999 naudojant 8051 naudojant 7 segmentų ekraną: 5 žingsniai
Skaičiavimas nuo 0 iki 9999 naudojant 8051 naudojant 7 segmentų ekraną: Sveiki visi! Šioje pamokoje mes jums pasakysime, kaip skaičiuoti nuo 0 iki 9999 naudojant keturis 7 segmentų ekranus, naudojant tik vieną prievadą ir 4 skaitmeninius kaiščius
Kaip nustatyti programavimą C/C ++: 5 žingsniai
Kaip nustatyti programavimą C/C ++: C ir C ++ yra populiarios programavimo kalbos, kurios greitai suteikia prieigą prie formulių sudarymo ir sudėtingų problemų sprendimo naudojant minimalius išteklius. Problema yra rasti būdą, kaip surinkti ir padaryti programą vykdomą. Vienas iš jūsų variantų gali būti
Įvadas į programavimą „Raspberry Pi“be rankinio kodavimo: 3 žingsniai
Įvadas į programavimą „Raspberry Pi“be rankinio kodavimo: Sveiki, ši instrukcija parodys, kaip „Raspberry Pi“paversti visiškai programuojamu automatizavimo įrenginiu, suderinamu su grafiškai orientuota programavimo kalba PLC, vadinamai funkcijų bloko diagrama (IEC 61131-3 standarto dalis). Tai gali būti
Laidžios želė spurgos - įvadas į siuvimo grandines naudojant „Makey Makey“: 4 žingsniai (su nuotraukomis)
Laidžios želė spurgos - įvadas į siuvimo grandines naudojant „Makey Makey“: „Twitter“pastebėjome, kad daugelis mūsų „Scratch“ir „Makey Makey“fanatikų norėjo daugiau sužinoti apie siuvimo grandines, todėl sukūrėme šią pamoką, kad galėtume greitai pristatyti siuvimo grandines ir kaip galite siūti kai kuriuos modulinius gabalus. (Tai yra
Įvadas į balso atpažinimą naudojant „Elechouse V3“ir „Arduino“: 4 žingsniai (su paveikslėliais)
Įvadas į balso atpažinimą naudojant „Elechouse V3“ir „Arduino“. Mes vis dar prisimename didelį jaudulį, kurį patyrėme kalbėdami su pirmuoju „Siri“įgalintu „iPhone“. Nuo to laiko balso valdymo įrenginiai išaugo iki labai aukšto lygio