Sisällysluettelo:

Johdanto 8051 -ohjelmointiin AT89C2051 -ohjelmalla (vieraileva pääosassa: Arduino): 7 vaihetta (kuvilla)
Johdanto 8051 -ohjelmointiin AT89C2051 -ohjelmalla (vieraileva pääosassa: Arduino): 7 vaihetta (kuvilla)

Video: Johdanto 8051 -ohjelmointiin AT89C2051 -ohjelmalla (vieraileva pääosassa: Arduino): 7 vaihetta (kuvilla)

Video: Johdanto 8051 -ohjelmointiin AT89C2051 -ohjelmalla (vieraileva pääosassa: Arduino): 7 vaihetta (kuvilla)
Video: Normaalijakauma - Esimerkkejä 2024, Marraskuu
Anonim
Johdanto 8051 -ohjelmointiin AT89C2051: llä (vieraileva pääosassa: Arduino)
Johdanto 8051 -ohjelmointiin AT89C2051: llä (vieraileva pääosassa: Arduino)

8051 (tunnetaan myös nimellä MCS-51) on 80-luvun MCU-malli, joka on edelleen suosittu. Nykyaikaisia 8051-yhteensopivia mikro-ohjaimia on saatavana useilta toimittajilta, kaikissa muodoissa ja kokoissa, ja niissä on laaja valikoima oheislaitteita. Tässä ohjeessa katsomme Atmelin AT89C2051 MCU: ta.

AT89C2051 on pieni (2 kt, Flash, 128 tavua RAM), halpa (~ 1,40 dollaria per siru) mikro -ohjain.

  • 2.7-6V toiminta
  • 15 I/O -linjaa
  • 2 ajastinta (16 bittiä)
  • Sisäiset ja ulkoiset keskeytykset
  • UART
  • Sirun analoginen vertailija
  • Jopa 2 MIPS 24 MHz: n kellolla

Vaihe 1: Vaatimukset

Vaatimukset
Vaatimukset

Vaatimukset:

  • Linux -tietokone (vaadittu ohjelmisto: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • AT89C2051 -siru (DIP20 -paketti)
  • 20-nastainen ZIF-liitäntä
  • Optoerotin (mieluiten MOSFET-lähtö)
  • Arduinon prototyyppikilpi
  • 12V virtalähde
  • 5V virtalähde
  • 16MHz kideoskillaattori
  • 2x 30pF kondensaattori
  • 100nF kondensaattori
  • Diodi (esim. 1N400X)
  • Vastukset (1K, 3K3)
  • Protoboard
  • Puserot
  • Kuparilanka

Tarkista tarvittavat ohjelmistot:

mikä python3

jotka tekevät mikä sdcc mikä git

Vaihe 2: Ohjelmoijan rakentaminen

Ohjelmoijan rakentaminen
Ohjelmoijan rakentaminen
Ohjelmoijan rakentaminen
Ohjelmoijan rakentaminen
Ohjelmoijan rakentaminen
Ohjelmoijan rakentaminen

Tämä osa on lyhyt, koska rakensin ohjelmointikilveni jokin aika sitten. Olen liittänyt kaavion ja kuvat kootusta levystä. Kaavion PDF -tiedosto löytyy arkistosta.

Sinun on ohjelmoitava ohjelmoijakortti:

1. Kloonaa arkisto.

git -klooni

2. Avaa tiedosto AT89C2051_programmer/AT89_prog/AT89_prog.ino Arduino IDE: ssä.

3. Rakenna ja lähetä luonnos Arduino IDE: stä.

Vaihe 3: Ohjelmointiohjelmiston asentaminen

Ohjelmointiohjelmiston asentaminen
Ohjelmointiohjelmiston asentaminen
Ohjelmointiohjelmiston asentaminen
Ohjelmointiohjelmiston asentaminen

1. Luo python -virtuaalinen ympäristö.

python3 -m venv venv

. venv/bin/aktivoi

2. Asenna at89overlord. at89overlord on avoimen lähdekoodin ohjelmoija AT89C2051 -sirulle, jonka olen kirjoittanut ja jonka lähdekoodi löytyy täältä.

pip asenna at89overlord

3. Tarkista asennus.

at89overlord -h

Vaihe 4: Sirun ohjelmointi

Chipin ohjelmointi
Chipin ohjelmointi
Chipin ohjelmointi
Chipin ohjelmointi
Chipin ohjelmointi
Chipin ohjelmointi
Piirin ohjelmointi
Piirin ohjelmointi

1. Kloonaa yksinkertainen vilkkuva projekti.

cd ~

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

2. Rakenna sovellus.

tehdä

3. Liitä Arduino tietokoneeseen, 12 V: n syöttö ja aseta AT89C2051 -siru ZIF -pistorasiaan.

4. Paikanna Arduinon sarjaportti.

ls /dev /tty*

5. Lataa rakennettu IntelHex -tiedosto sirulle. Jos Arduinon portti on eri kuin /dev /ttyACM0, sinun on annettava oikea arvo -p -komentoriviparametrilla.

at89overlord -f./hello.ihx

Vaihe 5: Kokoonpano

Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano

Kokoa piiri kaavion mukaisesti. PDF -versio löytyy arkistosta.

Sinun pitäisi nähdä vihreä LED -salama, jonka taajuus on noin 0,5 Hz.

Vaihe 6: Koodin selitys

Koodin selitys
Koodin selitys

#sisältää

#sisältää

Aloitamme sisällyttämällä sdcc: n AT89X051 -otsikon. Se sisältää makroja vuorovaikutukseen rekisterien kanssa ikään kuin ne olisivat muuttujia. Mukana on myös stdint.h, joka sisältää kokonaislukutyyppien uint8_t ja uint16_t määritelmät.

// Olettaen, että oskillaattori on 16MHz

#define INTERRUPTS_PER_SECOND 5208

Keskeytys tapahtuu, kun Ajastin0 ylittää. Se on määritetty yhdeksi 8 -bittiseksi ajastimeksi, joten tämä tapahtuu 2^8 suoritinjakson välein. Yksi prosessosykli kestää 12 kellosykliä, joten tulemme 16000000/12/2^8 = 5208.33333.

haihtuva uint8_t led_state = 0;

haihtuva uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Ilmoitamme led -tilan ohjaus- ja keskeytyslaskurimuuttujat.

void Ajastin0_ISR (mitätön) _interrupt (1) {

ajastin_laskuri--; jos (timer_counter == 0) {led_state =! led_state; ajastimen_laskuri = INTERRUPTS_PER_SECOND; }}

Joka kerta, kun ajastin0 ylittää, laskuri pienenee. Jos se on nolla, se nollataan ja led -tila muuttuu. Tämä tapahtuu noin kerran sekunnissa, jolloin tuloksena on ~ 0,5 Hz: n LED -vilkkutaajuus.

int main () {

TMOD = 0x3; // Ajastintila - 8 bittiä, ei esiasetinta. taajuus = OSCFREQ/12/2^8 TL0 = 0; // Tyhjennä laskuri TH0 = 0; // Tyhjennä rekisteri TR0 = 1; // Aseta ajastin toimimaan. ET0 = 1; // Aseta keskeytys. EA = 1; // Aseta maailmanlaajuinen keskeytys. while (1) {if (led_state) {P1 = 0xFF; } muu {P1 = 0x00; }}}

Määritämme ajastinmoduulin ja odotamme muutoksia led -tilan ohjausmuuttujassa. TOD on ajastintilan ohjausrekisteri. TL0 ja TH0 ovat Timer0 -ohjausrekistereitä. ET0 on ajastinohjausrekisterin (TCON) mahdollistavan ajastimen0-bitti. TR0 ja EA ovat bittejä keskeytyksen sallimisrekisterissä (IE).

Vaihe 7: Lisäresursseja

  • AT89C2051 -tietolomake:
  • Pienen laitteen C -kääntäjä (sdcc):
  • 8051 -resurssit:
  • AT89C2051 -ohjelmointivarasto:
  • hello-8051-arkisto:

Suositeltava: