Sadržaj:
- Korak 1: Zahtjevi
- Korak 2: Izrada programatora
- Korak 3: Instaliranje programatora za programiranje
- Korak 4: Programiranje čipa
- Korak 5: Montaža
- Korak 6: Objašnjenje koda
- Korak 7: Dodatni resursi
Video: Uvod u programiranje 8051 s AT89C2051 (Gostujuća uloga: Arduino): 7 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
8051 (poznat i kao MCS-51) je MCU dizajn iz 80-ih koji je i dalje popularan. Moderni mikrokontroleri kompatibilni s 8051 dostupni su od više prodavača, u svim oblicima i veličinama, sa širokim rasponom perifernih uređaja. U ovom uputstvu ćemo pogledati AT89C2051 MCU iz Atmela.
AT89C2051 je mali (2Kbyte Flash, 128byte RAM), jeftin (~ 1,40 USD po čipu) mikrokontroler.
- Rad 2.7-6V
- 15 I/O linija
- 2 tajmera (16 bita)
- Unutrašnji i vanjski prekidi
- UART
- Analogni komparator na čipu
- Do 2MIPS sa 24MHz taktom
Korak 1: Zahtjevi
Zahtjevi:
- Linux PC (potreban softver: Arduino IDE, git, make, sdcc)
- Arduino UNO
- AT89C2051 čip (paket DIP20)
- 20-polna ZIF utičnica
- Optokapler (po mogućnosti MOSFET izlaz)
- Arduino prototipni štit
- 12V napajanje
- 5V napajanje
- Kristalni oscilator od 16 MHz
- 2x 30pF kondenzator
- 100nF kondenzator
- Dioda (npr.: 1N400X)
- Otpornici (1K, 3K3)
- Protoboard
- Džemperi
- Bakrene žice
Provjerite potreban softver:
koji python3
koji prave koji sdcc koji git
Korak 2: Izrada programatora
Ovaj odjeljak će biti kratak, jer sam prije nekog vremena izgradio svoj programski štit. Priložio sam shemu i slike sastavljene ploče. PDF sheme može se pronaći u spremištu.
Morat ćete programirati ploču programera:
1. Klonirajte spremište.
git klon
2. Otvorite datoteku AT89C2051_programmer/AT89_prog/AT89_prog.ino u Arduino IDE -u.
3. Napravite i prenesite skicu iz Arduino IDE -a.
Korak 3: Instaliranje programatora za programiranje
1. Kreirajte python virtualno okruženje.
python3 -m venv venv
. venv/bin/aktivirati
2. Instalirajte at89overlord. at89overlord je programer otvorenog koda za čip AT89C2051 koji sam napisao. Izvorni kod možete pronaći ovdje.
pip install at89overlord
3. Provjerite instalaciju.
at89overlord -h
Korak 4: Programiranje čipa
1. Klonirajte jednostavan blink projekat.
cd ~
git clone https://github.com/piotrb5e3/hello-8051.git cd hello-8051/
2. Napravite aplikaciju.
napraviti
3. Spojite Arduino na PC, spojite napajanje od 12 V, postavite čip AT89C2051 u ZIF utičnicu.
4. Pronađite Arduino serijski port.
ls /dev /tty*
5. Otpremite izgrađenu IntelHex datoteku na čip. Ako se port vašeg Arduina razlikuje od /dev /ttyACM0, morate proslijediti ispravnu vrijednost s parametrom -p naredbene linije.
at89overlord -f./hello.ihx
Korak 5: Montaža
Sastavite krug prema shemi. PDF verzija može se pronaći u spremištu.
Trebali biste vidjeti zeleni LED bljesak s frekvencijom od oko 0,5Hz.
Korak 6: Objašnjenje koda
#include
#include
Počinjemo uključivanjem zaglavlja AT89X051 iz sdcc. Sadrži makroe za interakciju s registrima kao da su varijable. Uključujemo i stdint.h koji sadrži definicije cjelobrojnih tipova uint8_t i uint16_t.
// Pretpostavimo da je oscilator 16MHz
#define INTERRUPTS_PER_SECOND 5208
Do prekida dolazi kada se Timer0 prelije. Konfiguriran je kao jedan 8 -bitni mjerač vremena, pa se to događa svakih 2^8 ciklusa procesora. Jedan procesorski ciklus traje 12 ciklusa takta, pa dolazimo do 16000000/12/2^8 = 5208.33333.
volatile uint8_t led_state = 0;
volatile uint16_t timer_counter = INTERRUPTS_PER_SECOND;
Proglašavamo LED stanje kontrole i promenljive brojača prekida.
void Timer0_ISR (void) _interrupt (1) {
timer_counter--; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}
Svaki put kada se Timer0 prelije, brojač se smanjuje. Ako je jednako nuli, resetira se i LED stanje se mijenja. To se događa otprilike jednom u sekundi, što rezultira ~ 0,5Hz frekvencijom LED treperenja.
int main () {
TMOD = 0x3; // Timer mode - 8 bita, bez predskalera. učestalost = OSCFREQ/12/2^8 TL0 = 0; // Poništi brojač TH0 = 0; // Brisanje registra TR0 = 1; // Postavljanje tajmera za pokretanje. ET0 = 1; // Postavi prekid. EA = 1; // Postavljanje globalnog prekida. while (1) {if (led_state) {P1 = 0xFF; } else {P1 = 0x00; }}}
Konfiguriramo timer modul i čekamo promjene u LED varijabli kontrole stanja. TMOD je registar načina rada timera. TL0 i TH0 su upravljački registri Timer0. ET0 je bit-enableer-timer0 u registru upravljača timera (TCON). TR0 i EA su bitovi u registru za omogućavanje prekida (IE).
Korak 7: Dodatni resursi
- Tehnički list AT89C2051:
- Kompajler za mali uređaj C (sdcc):
- 8051 izvori:
- Spremište programera AT89C2051:
- spremište hello-8051:
Preporučuje se:
Kabel za programiranje "uradi sam" pomoću Arduino Uno - Baofeng UV -9R Plus: 6 koraka (sa slikama)
Programiraj sam kabel pomoću Arduino Uno-Baofeng UV-9R Plus: Zdravo svima, ovo je jednostavan vodič o tome kako pretvoriti vaš Baofeng UV-9R (ili plus) kabel za slušalice / ušni u kabel za programiranje pomoću Ardunio UNO-a kao USB-a Serijski pretvarač. [ODRICANJE ODGOVORNOSTI] Ne preuzimam nikakvu odgovornost za bilo kakvu štetu uzrokovanu
ATtiny85 Praćenje nosivih vibracionih aktivnosti i programiranje ATtiny85 sa Arduino Uno: 4 koraka (sa slikama)
ATtiny85 Sat za praćenje i programiranje nosivih vibracionih aktivnosti i praćenje ATtiny85 sa Arduino Uno: Kako napraviti sat za praćenje nosivih aktivnosti? Ovo je nosivi gadget dizajniran da vibrira kada otkrije stagnaciju. Provodite li većinu vremena na računaru poput mene? Sjedite li satima, a da toga niste svjesni? Tada je ovaj uređaj f
Uvod u programiranje Raspberry Pi bez ručnog kodiranja: 3 koraka
Uvod u programiranje Raspberry Pi bez ručnog kodiranja: Zdravo, ovo uputstvo će vam pokazati kako pretvoriti vaš Raspberry Pi u potpuno programabilni uređaj za automatizaciju kompatibilan s grafički orijentiranim programskim jezikom za PLC-ove pod nazivom Funkcijski blok dijagram (dio standarda IEC 61131-3). Ovo može biti
Arduino daljinsko/bežično programiranje i Power Bank domaća izrada: 12 koraka (sa slikama)
Arduino daljinsko/bežično programiranje i Power Bank Domaća izrada: Problem. Razvijam skicu u blizini računara i koristim usb i serijsku za " otklanjanje grešaka " u ovom slučaju kreiram lib za DHT12, isporučujem verziju na githubu biblioteke. Ali dolazi do problema: " kada temperatura padne ispod 0 očitana je vrijednost poništena
Najjeftiniji Arduino -- Najmanji Arduino -- Arduino Pro Mini -- Programiranje -- Arduino Neno: 6 koraka (sa slikama)
Najjeftiniji Arduino || Najmanji Arduino || Arduino Pro Mini || Programiranje || Arduino Neno: …………………………. PRETPLATITE SE na moj YouTube kanal za više video zapisa ……. .Ovaj projekt govori o tome kako spojiti najmanji i najjeftiniji arduino ikada. Najmanji i najjeftiniji arduino je arduino pro mini. Slično je arduinu