Obsah:

Úvod do programovania 8051 s AT89C2051 (hosťujúca hviezda: Arduino): 7 krokov (s obrázkami)
Úvod do programovania 8051 s AT89C2051 (hosťujúca hviezda: Arduino): 7 krokov (s obrázkami)

Video: Úvod do programovania 8051 s AT89C2051 (hosťujúca hviezda: Arduino): 7 krokov (s obrázkami)

Video: Úvod do programovania 8051 s AT89C2051 (hosťujúca hviezda: Arduino): 7 krokov (s obrázkami)
Video: Úvod do programovania 2024, December
Anonim
Úvod do programovania 8051 s AT89C2051 (hosťujúca hviezda: Arduino)
Úvod do programovania 8051 s AT89C2051 (hosťujúca hviezda: Arduino)

8051 (tiež známy ako MCS-51) je dizajn MCU z 80-tych rokov, ktorý je dnes stále populárny. Moderné mikrokontroléry kompatibilné s 8051 sú k dispozícii od viacerých dodávateľov, všetkých tvarov a veľkostí a so širokou škálou periférií. V tomto návode sa pozrieme na MCU AT89C2051 od spoločnosti Atmel.

AT89C2051 je malý (2 kB Flash, 128 bajt RAM), lacný (~ 1,40 USD za čip) mikrokontrolér. Vlastnosti:

  • Prevádzka 2,7-6V
  • 15 I/O riadkov
  • 2 časovače (16 bitov)
  • Interné a externé prerušenia
  • UART
  • Analógový komparátor na čipe
  • Až 2MIPS s hodinami 24 MHz

Krok 1: Požiadavky

Požiadavky
Požiadavky

Požiadavky:

  • Linux PC (požadovaný softvér: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • Čip AT89C2051 (balík DIP20)
  • 20-kolíková zásuvka ZIF
  • Optočlen (najlepšie na výstupe MOSFET)
  • Prototypový štít Arduino
  • Napájanie 12V
  • Napájanie 5V
  • 16MHz kryštálový oscilátor
  • 2x 30pF kondenzátor
  • Kondenzátor 100nF
  • Dióda (napr.: 1N400X)
  • Rezistory (1K, 3K3)
  • Protoboard
  • Svetre
  • Medený drôt

Skontrolujte požadovaný softvér:

ktorý python3

ktoré robia ktoré sdcc ktoré git

Krok 2: Zostavenie programátora

Budovanie programátora
Budovanie programátora
Budovanie programátora
Budovanie programátora
Budovanie programátora
Budovanie programátora

Táto časť bude stručná, pretože som pred časom postavil svoj programovací štít. Prikladám schému a obrázky zostavenej dosky. PDF schému je možné nájsť v úložisku.

Budete musieť naprogramovať dosku programátora:

1. Klonujte úložisko.

klon git

2. Otvorte súbor AT89C2051_programmer/AT89_prog/AT89_prog.ino v Arduino IDE.

3. Zostavte a nahrajte skicu z Arduino IDE.

Krok 3: Inštalácia softvéru programátora

Inštalácia softvéru programátora
Inštalácia softvéru programátora
Inštalácia softvéru programátora
Inštalácia softvéru programátora

1. Vytvorte virtuálne prostredie pythonu.

python3 -m venv venv

. venv/bin/aktivovať

2. Nainštalujte at89overlord. at89overlord je open source programátor pre mnou napísaný čip AT89C2051. Jeho zdrojový kód nájdete tu.

pip install at89overlord

3. Overte inštaláciu.

at89overlord -h

Krok 4: Programovanie čipu

Programovanie čipu
Programovanie čipu
Programovanie čipu
Programovanie čipu
Programovanie čipu
Programovanie čipu
Programovanie čipu
Programovanie čipu

1. Klonujte jednoduchý projekt žmurknutia.

CD ~

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

2. Zostavte aplikáciu.

urobiť

3. Pripojte Arduino k PC, pripojte napájanie 12V, umiestnite čip AT89C2051 do zásuvky ZIF.

4. Nájdite sériový port Arduina.

ls /dev /tty*

5. Nahrajte zabudovaný súbor IntelHex na čip. Ak sa port vášho Arduina líši od /dev /ttyACM0, musíte pomocou parametra príkazového riadka -p zadať správnu hodnotu.

at89overlord -f./hello.ihx

Krok 5: Zostavenie

zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie

Zostavte obvod podľa schémy. Verziu vo formáte PDF nájdete v úložisku.

Mali by ste vidieť zelený LED blesk s frekvenciou okolo 0,5 Hz.

Krok 6: Vysvetlenie kódu

Vysvetlenie kódu
Vysvetlenie kódu

#zahrnúť

#zahrnúť

Začneme zahrnutím hlavičky AT89X051 zo sdcc. Obsahuje makrá na interakciu s registrami, ako keby išlo o premenné. Tiež zahrnujeme stdint.h, ktorý obsahuje definície celočíselných typov uint8_t a uint16_t.

// Za predpokladu, že oscilátor je 16 MHz

#define INTERRUPTS_PER_SECOND 5208

K prerušeniu dôjde, keď časový spínač 0 pretečie. Je nakonfigurovaný ako jeden 8bitový časovač, takže sa to stáva každých 2^8 cyklov procesora. Jeden cyklus procesora trvá 12 hodinových cyklov, a tak sa dostaneme k 16000000/12/2^8 = 5208,33333.

volatile uint8_t led_state = 0;

volatile uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Deklarujeme premenné stavu riadenia a počítadla prerušení.

void Timer0_ISR (neplatné) _interrupt (1) {

časovač_počítadlo--; if (timer_counter == 0) {led_state =! led_state; časovač_počítadla = INTERRUPTS_PER_SECOND; }}

Zakaždým, keď časový spínač 0 pretečie, počítadlo sa zníži. Ak sa rovná nule, vynuluje sa a stav LED sa zmení. K tomu dochádza približne raz za sekundu, čo má za následok frekvenciu blikania LED diódy ~ 0,5 Hz.

int main () {

TMOD = 0x3; // Režim časovača - 8 bitov, bez predzosilňovača. frekv = OSCFREQ/12/2^8 TL0 = 0; // Vymazanie počítadla TH0 = 0; // Vymazať register TR0 = 1; // Nastavte časovač na spustenie. ET0 = 1; // Nastaviť prerušenie. EA = 1; // Nastavenie globálneho prerušenia. while (1) {if (led_state) {P1 = 0xFF; } else {P1 = 0x00; }}}

Konfigurujeme modul časovača a čakáme na zmeny v riadiacej premennej stavu LED. TMOD je riadiaci register režimu časovača. TL0 a TH0 sú riadiace registre Timer0. ET0 je bit enable-timer0 v registri riadenia časovača (TCON). TR0 a EA sú bity v registri umožňujúcom prerušenie (IE).

Krok 7: Ďalšie zdroje

  • Dátový list AT89C2051:
  • Kompilátor malého zariadenia C (sdcc):
  • Zdroje 8051:
  • Úložisko programátora AT89C2051:
  • úložisko ahoj-8051:

Odporúča: