Përmbajtje:

Hyrje në Programimin 8051 Me AT89C2051 (Guest Starring: Arduino): 7 hapa (me fotografi)
Hyrje në Programimin 8051 Me AT89C2051 (Guest Starring: Arduino): 7 hapa (me fotografi)

Video: Hyrje në Programimin 8051 Me AT89C2051 (Guest Starring: Arduino): 7 hapa (me fotografi)

Video: Hyrje në Programimin 8051 Me AT89C2051 (Guest Starring: Arduino): 7 hapa (me fotografi)
Video: 3 Simple Way to Program ATtiny Microcontroller IC Full Guide in Hindi 2024, Nëntor
Anonim
Hyrje në Programimin 8051 Me AT89C2051 (Guest Starring: Arduino)
Hyrje në Programimin 8051 Me AT89C2051 (Guest Starring: Arduino)

8051 (i njohur gjithashtu si MCS-51) është një dizajn MCU nga vitet '80 që mbetet popullor sot. Mikrokontrolluesit modernë të pajtueshëm me 8051 janë në dispozicion nga shitës të shumtë, në të gjitha format dhe madhësitë, dhe me një gamë të gjerë të pajisjeve periferike. Në këtë udhëzues do të shikojmë MCU AT89C2051 nga Atmel.

AT89C2051 është një mikrokontrollues i vogël (Flash 2Kbyte, 128 bajt RAM), i lirë (1.40 dollarë për çip). Karakteristikat:

  • Funksionimi 2.7-6V
  • 15 rreshta I/O
  • 2 kohëmatës (16 bit)
  • Ndërprerjet e brendshme dhe të jashtme
  • UART
  • Krahasues analog në çip
  • Deri në 2MIPS me një orë 24MHz

Hapi 1: Kërkesat

Kërkesat
Kërkesat

Kërkesat:

  • PC PC Linux (softueri i kërkuar: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • Çip AT89C2051 (pako DIP20)
  • Fole ZIF me 20 kunja
  • Optokoupler (mundësisht MOSFET-output)
  • Mburoja prototipuese Arduino
  • Furnizimi me energji 12V
  • Furnizimi me energji 5V
  • Oshilator kristal 16MHz
  • Kondensator 2x 30pF
  • Kondensator 100nF
  • Diodë (p.sh.: 1N400X)
  • Rezistentët (1K, 3K3)
  • Protoboard
  • Kërcyesit
  • Tel bakri

Kontrolloni për softuerin e kërkuar:

cili piton3

të cilat bëjnë cilat sdcc cilat git

Hapi 2: Ndërtimi i Programuesit

Ndërtimi i Programuesit
Ndërtimi i Programuesit
Ndërtimi i Programuesit
Ndërtimi i Programuesit
Ndërtimi i Programuesit
Ndërtimi i Programuesit

Ky seksion do të jetë i shkurtër, pasi kam ndërtuar mburojën time të programimit disa kohë më parë. Unë kam bashkangjitur skemën dhe fotografitë e bordit të mbledhur. PDF -ja e skemës mund të gjendet në depo.

Ju do të duhet të programoni bordin e programuesit:

1. Klononi depon.

git klon

2. Hapni skedarin AT89C2051_programmer/AT89_prog/AT89_prog.ino në Arduino IDE.

3. Ndërtoni dhe ngarkoni skicën nga Arduino IDE.

Hapi 3: Instalimi i Softuerit Programues

Instalimi i Softuerit Programues
Instalimi i Softuerit Programues
Instalimi i Softuerit Programues
Instalimi i Softuerit Programues

1. Krijoni një mjedis virtual python.

python3 -m venv venv

Me venv/bin/aktivizo

2. Instaloni at89overlord. at89overlord është një programues me burim të hapur për çipin AT89C2051 të shkruar nga unë. Kodi burimor mund të gjendet këtu.

pip instalo at89overlord

3. Verifikoni instalimin.

at89livelord -h

Hapi 4: Programimi i çipit

Programimi i çipit
Programimi i çipit
Programimi i çipit
Programimi i çipit
Programimi i çipit
Programimi i çipit
Programimi i çipit
Programimi i çipit

1. Klononi një projekt të thjeshtë pulsimi.

cd

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

2. Ndërtoni aplikacionin.

bëj

3. Lidheni Arduino me PC, lidhni furnizimin me 12V, vendosni çipin AT89C2051 në prizën ZIF.

4. Gjeni portin serik të Arduino.

ls /dev /tty*

5. Ngarko skedarin e ndërtuar IntelHex në çip. Nëse porti juaj Arduino është i ndryshëm nga /dev /ttyACM0 ju duhet të kaloni vlerën e saktë me parametrin e rreshtit -p të komandës.

at89livelli -f./hello.ihx

Hapi 5: Asambleja

Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi

Mblidhni qarkun sipas skemës. Një version PDF mund të gjendet në depo.

Ju duhet të shihni ndezjen e gjelbër LED me një frekuencë prej rreth 0.5Hz.

Hapi 6: Shpjegimi i kodit

Shpjegimi i Kodit
Shpjegimi i Kodit

#përfshi

#përfshi

Fillojmë duke përfshirë kokën AT89X051 nga sdcc. Ai përmban makro për ndërveprimin me regjistrat sikur të ishin ndryshore. Ne gjithashtu përfshijmë stdint.h e cila përmban përkufizimet e llojeve të numrave të plotë uint8_t dhe uint16_t.

// Duke supozuar se oshilatori është 16MHz

#përcaktoni INTERRUPTS_PER_SECOND 5208

Një ndërprerje ndodh kur Timer0 tejmbush. Shtë konfiguruar si një kohëmatës i vetëm 8bit, kështu që kjo ndodh çdo cikël procesori 2^8. Një cikël procesori merr 12 cikle sahati, dhe kështu ne arrijmë në 16000000/12/2^8 = 5208.33333.

i paqëndrueshëm uint8_t led_state = 0;

i paqëndrueshëm uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Ne deklarojmë kontrollin e shtetit të udhëhequr dhe ndërpresim ndryshoret e numëruesit.

void Timer0_ISR (i pavlefshëm) _ndërprer (1) {

timer_counter--; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}

Sa herë që Kohëmatësi 0 tejmbush, numëruesi zvogëlohet. Nëse është e barabartë me zero, rivendoset, dhe gjendja led ndryshon. Kjo ndodh rreth një herë në sekondë, duke rezultuar në frekuencë pulsimi LED ~ 0.5Hz.

int kryesore () {

TMOD = 0x3; // Modaliteti i kohëmatësit - 8 bit, pa parashkrues. freq = OSCFREQ/12/2^8 TL0 = 0; // Pastruesi i qartë TH0 = 0; // Pastro regjistrin TR0 = 1; // Vendosni kohëmatësin që të funksionojë. ET0 = 1; // Vendos ndërprerjen. EA = 1; // Vendosni ndërprerjen globale. ndërsa (1) {if (led_state) {P1 = 0xFF; } tjetër {P1 = 0x00; }}}

Ne konfigurojmë modulin e kohëmatësit dhe presim ndryshime në ndryshoren e kontrollit të gjendjes led. TMOD është regjistri i kontrollit të modalitetit të kohëmatësit. TL0 dhe TH0 janë regjistra kontrolli Timer0. ET0 është biti i aktivizimit të kohëmatësit0 në regjistrin e kontrollit të kohëmatësit (TCON). TR0 dhe EA janë bit në regjistrin e aktivizimit të ndërprerjeve (IE).

Hapi 7: Burime shtesë

  • Fleta e të dhënave AT89C2051:
  • Pajisja e vogël C Përpilues (sdcc):
  • Burimet 8051:
  • Depoja e programuesit AT89C2051:
  • përshëndetje depoja-8051:

Recommended: