Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
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:
- 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
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
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
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áž
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
#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: