Obsah:

Úvod do programování 8051 s AT89C2051 (hostující hvězda: Arduino): 7 kroků (s obrázky)
Úvod do programování 8051 s AT89C2051 (hostující hvězda: Arduino): 7 kroků (s obrázky)

Video: Úvod do programování 8051 s AT89C2051 (hostující hvězda: Arduino): 7 kroků (s obrázky)

Video: Úvod do programování 8051 s AT89C2051 (hostující hvězda: Arduino): 7 kroků (s obrázky)
Video: Programátor pro atmel ,stc rodiny 8051 (demo program) 2024, Prosinec
Anonim
Úvod do programování 8051 s AT89C2051 (hostující hvězda: Arduino)
Úvod do programování 8051 s AT89C2051 (hostující hvězda: Arduino)

8051 (také známý jako MCS-51) je design MCU z 80. let, který je dodnes populární. Moderní mikrokontroléry kompatibilní s 8051 jsou k dispozici od více dodavatelů, ve všech tvarech a velikostech a se širokou škálou periferií. V tomto pokynu se podíváme na MCU AT89C2051 od společnosti Atmel.

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

  • Provoz 2,7-6V
  • 15 I/O linek
  • 2 časovače (16 bitů)
  • Interní a externí přerušení
  • UART
  • Analogový komparátor na čipu
  • Až 2MIPS s hodinami 24 MHz

Krok 1: Požadavky

Požadavky
Požadavky

Požadavky:

  • Linux PC (požadovaný software: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • Čip AT89C2051 (balíček DIP20)
  • 20kolíková zásuvka ZIF
  • Optočlen (nejlépe výstup MOSFET)
  • Prototypový štít Arduino
  • Napájení 12V
  • Napájení 5V
  • 16MHz krystalový oscilátor
  • 2x 30pF kondenzátor
  • 100nF kondenzátor
  • Dioda (např. 1N400X)
  • Rezistory (1K, 3K3)
  • Protoboard
  • Svetry
  • Měděný drát

Zkontrolujte požadovaný software:

který python3

které dělají které sdcc které git

Krok 2: Sestavení programátoru

Budování programátora
Budování programátora
Budování programátora
Budování programátora
Budování programátora
Budování programátora

Tato část bude krátká, protože jsem před časem postavil svůj programovací štít. Připojil jsem schéma a obrázky sestavené desky. PDF se schématem lze nalézt v úložišti.

Budete muset naprogramovat programátorskou desku:

1. Klonujte úložiště.

klon git

2. Otevřete soubor AT89C2051_programmer/AT89_prog/AT89_prog.ino v Arduino IDE.

3. Vytvořte a nahrajte skicu z Arduino IDE.

Krok 3: Instalace softwaru programátoru

Instalace softwaru programátoru
Instalace softwaru programátoru
Instalace softwaru programátoru
Instalace softwaru programátoru

1. Vytvořte virtuální prostředí pythonu.

python3 -m venv venv

. venv/bin/aktivovat

2. Nainstalujte at89overlord. at89overlord je Open Source programátor pro mnou napsaný čip AT89C2051. Jeho zdrojový kód najdete zde.

pip install at89overlord

3. Ověřte instalaci.

at89overlord -h

Krok 4: Programování čipu

Programování čipu
Programování čipu
Programování čipu
Programování čipu
Programování čipu
Programování čipu
Programování čipu
Programování čipu

1. Klonujte jednoduchý projekt mrknutí.

cd ~

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

2. Sestavte aplikaci.

udělat

3. Připojte Arduino k PC, připojte napájení 12V, umístěte čip AT89C2051 do zásuvky ZIF.

4. Vyhledejte sériový port Arduina.

ls /dev /tty*

5. Nahrajte vytvořený soubor IntelHex na čip. Pokud se port vašeho Arduina liší od /dev /ttyACM0, musíte předat správnou hodnotu pomocí parametru příkazového řádku -p.

at89overlord -f./hello.ihx

Krok 5: Montáž

Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění

Sestavte obvod podle schématu. Verzi PDF najdete v úložišti.

Měli byste vidět zelený LED blesk s frekvencí kolem 0,5 Hz.

Krok 6: Vysvětlení kódu

Vysvětlení kódu
Vysvětlení kódu

#zahrnout

#zahrnout

Začneme zahrnutím záhlaví AT89X051 ze sdcc. Obsahuje makra pro interakci s registry, jako by to byly proměnné. Také zahrneme stdint.h, který obsahuje definice celočíselných typů uint8_t a uint16_t.

// Za předpokladu, že oscilátor je 16 MHz

#define INTERRUPTS_PER_SECOND 5208

K přerušení dojde, když časový spínač 0 přetéká. Je nakonfigurován jako jediný 8bitový časovač, takže se to děje každých 2^8 cyklů procesoru. Jeden procesorový cyklus trvá 12 hodinových cyklů, a tak se dostaneme k 16000000/12/2^8 = 5208,33333.

volatile uint8_t led_state = 0;

volatile uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Deklarujeme proměnné stavu řízení LED a čítače přerušení.

void Timer0_ISR (void) _interrupt (1) {

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

Pokaždé, když časovač 0 přetéká, počítadlo se sníží. Pokud se rovná nule, resetuje se a stav LED se změní. K tomu dochází přibližně jednou za sekundu, což má za následek ~ 0,5 Hz frekvenci blikání LED.

int main () {

TMOD = 0x3; // Režim časovače - 8 bitů, bez předřazeného měřiče. freq = OSCFREQ/12/2^8 TL0 = 0; // Vymazání počítadla TH0 = 0; // Vymazat registr TR0 = 1; // Nastavit spuštění časovače. ET0 = 1; // Nastavit přerušení. EA = 1; // Nastavit globální přerušení. while (1) {if (led_state) {P1 = 0xFF; } else {P1 = 0x00; }}}

Konfigurujeme modul časovače a čekáme na změny v proměnné stavu řízení LED. TMOD je řídicí registr režimu časovače. TL0 a TH0 jsou řídicí registry Timer0. ET0 je bit enable-timer0 v registru řízení časovače (TCON). TR0 a EA jsou bity v registru umožňujícího přerušení (IE).

Krok 7: Další zdroje

  • Datový list AT89C2051:
  • Kompilátor pro malé zařízení C (sdcc):
  • Zdroje 8051:
  • Úložiště programátoru AT89C2051:
  • úložiště ahoj-8051:

Doporučuje: