Tartalomjegyzék:

Bevezetés a 8051 programozásba az AT89C2051 segítségével (vendégszereplő: Arduino): 7 lépés (képekkel)
Bevezetés a 8051 programozásba az AT89C2051 segítségével (vendégszereplő: Arduino): 7 lépés (képekkel)

Videó: Bevezetés a 8051 programozásba az AT89C2051 segítségével (vendégszereplő: Arduino): 7 lépés (képekkel)

Videó: Bevezetés a 8051 programozásba az AT89C2051 segítségével (vendégszereplő: Arduino): 7 lépés (képekkel)
Videó: Varga Andor - Intel 8051 mikrokontroller család 2024, December
Anonim
Bevezetés a 8051 programozásba az AT89C2051 segítségével (vendégszereplő: Arduino)
Bevezetés a 8051 programozásba az AT89C2051 segítségével (vendégszereplő: Arduino)

A 8051 (más néven MCS-51) a 80-as évekbeli MCU-dizájn, amely ma is népszerű. A modern 8051-kompatibilis mikrokontrollerek több gyártótól kaphatók, minden formában és méretben, valamint perifériák széles választékával. Ebben az utasításban az Atmel AT89C2051 MCU -ját fogjuk nézni.

Az AT89C2051 egy kicsi (2Kbyte Flash, 128byte RAM), olcsó (~ 1,40 USD chipenként) mikrokontroller.

  • 2,7-6V működés
  • 15 I/O vonal
  • 2 időzítő (16 bit)
  • Belső és külső megszakítások
  • UART
  • Chipen belüli analóg összehasonlító
  • Akár 2MIPS 24MHz -es órával

1. lépés: Követelmények

Követelmények
Követelmények

Követelmények:

  • Linux PC (szükséges szoftver: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • AT89C2051 chip (DIP20 csomag)
  • 20 tűs ZIF foglalat
  • Optocsatoló (lehetőleg MOSFET kimenet)
  • Arduino prototípus -pajzs
  • 12V -os tápegység
  • 5V -os tápegység
  • 16 MHz -es kristály oszcillátor
  • 2x 30pF kondenzátor
  • 100nF kondenzátor
  • Dióda (pl. 1N400X)
  • Ellenállások (1K, 3K3)
  • Protoboard
  • Jumpers
  • Rézdrót

Ellenőrizze a szükséges szoftvert:

melyik python3

amelyek melyik sdcc -t melyik git teszik

2. lépés: A programozó felépítése

A programozó építése
A programozó építése
A programozó építése
A programozó építése
A programozó építése
A programozó építése

Ez a rész rövid lesz, mivel a programozási pajzsot egy ideje építettem. Csatoltam az összeállított tábla rajzát és képeit. A vázlatos PDF -fájl megtalálható a lerakatban.

Be kell programoznia a programozó táblát:

1. Klónozza a tárolót.

git klón

2. Nyissa meg az AT89C2051_programmer/AT89_prog/AT89_prog.ino fájlt az Arduino IDE -ben.

3. Készítse el és töltse fel a vázlatot az Arduino IDE -ből.

3. lépés: Programozó szoftver telepítése

Programozó szoftver telepítése
Programozó szoftver telepítése
Programozó szoftver telepítése
Programozó szoftver telepítése

1. Hozzon létre egy python virtuális környezetet.

python3 -m venv venv

. venv/bin/aktiválni

2. Telepítse az at89overlord programot. Az at89overlord egy nyílt forráskódú programozó az általam írt AT89C2051 chiphez. Forráskódja itt található.

pip install at89overlord

3. Ellenőrizze a telepítést.

at89overlord -h

4. lépés: A chip programozása

A chip programozása
A chip programozása
A chip programozása
A chip programozása
A chip programozása
A chip programozása
A chip programozása
A chip programozása

1. Egy egyszerű villogó projekt klónozása.

cd ~

git klón https://github.com/piotrb5e3/hello-8051.git cd hello-8051/

2. Készítse el az alkalmazást.

készítsen

3. Csatlakoztassa az Arduino -t a számítógéphez, csatlakoztassa a 12 V -os tápegységet, és helyezze az AT89C2051 chipet a ZIF aljzatba.

4. Keresse meg az Arduino soros portját.

ls /dev /tty*

5. Töltse fel a beépített IntelHex fájlt a chipre. Ha az Arduino portja eltér a /dev /ttyACM0 -tól, akkor a helyes értéket kell megadnia a -p parancssori paraméterrel.

at89overlord -f./hello.ihx

5. lépés: Összeszerelés

Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés

Szerelje össze az áramkört a vázlat szerint. A PDF -változat megtalálható a lerakatban.

Látnia kell a zöld LED -es villogást, amelynek frekvenciája körülbelül 0,5 Hz.

6. lépés: A kód magyarázata

Kódmagyarázat
Kódmagyarázat

#befoglalni

#befoglalni

Kezdjük azzal, hogy belefoglaljuk az AT89X051 fejlécet az sdcc -ből. Makrókat tartalmaz a regiszterekkel való interakcióhoz, mintha változók lennének. Ide tartozik az stdint.h is, amely az uint8_t és az uint16_t egész számok definícióit tartalmazza.

// Feltételezve, hogy az oszcillátor 16MHz

#define INTERRUPTS_PER_SECOND 5208

Megszakítás következik be, amikor az Timer0 túlcsordul. Egyetlen 8 bites időzítőként van konfigurálva, így ez 2^8 processzorciklusonként történik. Egy processzorciklus 12 óra ciklust vesz igénybe, így elérjük az 16000000/12/2^8 = 5208.33333 értéket.

illékony uint8_t led_state = 0;

illékony uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Kijelentjük a led állapotvezérlés és megszakítás számláló változókat.

void Timer0_ISR (void) _interrupt (1) {

timer_counter--; if (timer_counter == 0) {led_state =! led_state; időzítő_számláló = INTERRUPTS_PER_SECOND; }}

Minden alkalommal, amikor az Timer0 túlcsordul, a számláló csökken. Ha nulla, akkor visszaáll, és a led állapot megváltozik. Ez másodpercenként körülbelül egyszer fordul elő, ami ~ 0,5 Hz LED villogási frekvenciát eredményez.

int main () {

TMOD = 0x3; // Időzítő mód - 8 bit, nincs előskálázó. freq = OSCFREQ/12/2^8 TL0 = 0; // Számláló törlése TH0 = 0; // Regiszter törlése TR0 = 1; // Időzítő beállítása futásra. ET0 = 1; // Megszakítás beállítása. EA = 1; // Globális megszakítás beállítása. while (1) {if (led_state) {P1 = 0xFF; } else {P1 = 0x00; }}}

Konfiguráljuk az időzítő modult, és várjuk a változásokat a led állapotvezérlő változóban. A TMOD az időzítő mód vezérlő regisztere. A TL0 és a TH0 Timer0 vezérlőregiszterek. Az ET0 az engedélyezés-időzítő0 bit az időzítővezérlő regiszterben (TCON). A TR0 és az EA bitek a megszakítás engedélyezési regiszterben (IE).

7. lépés: További források

  • AT89C2051 adatlap:
  • Kis eszköz C fordító (sdcc):
  • 8051 források:
  • AT89C2051 programozó adattár:
  • hello-8051 adattár:

Ajánlott: