Sommario:
- Passaggio 1: requisiti
- Passaggio 2: creazione del programmatore
- Passaggio 3: installazione del software di programmazione
- Passaggio 4: programmazione del chip
- Passaggio 5: assemblaggio
- Passaggio 6: spiegazione del codice
- Passaggio 7: risorse aggiuntive
Video: Introduzione alla programmazione 8051 con AT89C2051 (Guest Starring: Arduino): 7 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
L'8051 (noto anche come MCS-51) è un design MCU degli anni '80 che rimane popolare oggi. I moderni microcontrollori compatibili con 8051 sono disponibili da più fornitori, in tutte le forme e dimensioni e con un'ampia gamma di periferiche. In questo tutorial esamineremo l'MCU AT89C2051 di Atmel.
AT89C2051 è un microcontrollore piccolo (2Kbyte Flash, 128byte RAM), economico (~$1,40 per chip). Caratteristiche:
- Funzionamento a 2,7-6 V
- 15 linee I/O
- 2 timer (16 bit)
- Interruzioni interne ed esterne
- UART
- Comparatore analogico su chip
- Fino a 2 MIPS con un clock a 24 MHz
Passaggio 1: requisiti
Requisiti:
- PC Linux (software richiesto: Arduino IDE, git, make, sdcc)
- Arduino UNO
- Chip AT89C2051 (pacchetto DIP20)
- Presa ZIF a 20 pin
- Fotoaccoppiatore (preferibilmente uscita MOSFET)
- Scudo di prototipazione Arduino
- Alimentazione 12V
- Alimentazione 5V
- Oscillatore a cristallo da 16 MHz
- Condensatore 2x 30pF
- Condensatore da 100nF
- Diodo (es: 1N400X)
- Resistori (1K, 3K3)
- Protoboard
- ponticelli
- Filo di rame
Verifica il software richiesto:
quale pitone3
che fanno quale sdcc quale git
Passaggio 2: creazione del programmatore
Questa sezione sarà breve, poiché ho costruito il mio scudo di programmazione qualche tempo fa. Ho allegato lo schema e le immagini della scheda assemblata. Il PDF dello schema si trova nel repository.
Dovrai programmare la scheda del programmatore:
1. Clonare l'archivio.
git clone
2. Aprire il file AT89C2051_programmer/AT89_prog/AT89_prog.ino nell'IDE di Arduino.
3. Costruisci e carica lo schizzo dall'IDE di Arduino.
Passaggio 3: installazione del software di programmazione
1. Creare un ambiente virtuale Python.
python3 -m venv venv
. venv/bin/activate
2. Installa su89overlord. at89overlord è un programmatore Open Source per il chip AT89C2051 scritto da me. Il codice sorgente può essere trovato qui.
pip install at89overlord
3. Verificare l'installazione.
at89overlord -h
Passaggio 4: programmazione del chip
1. Clonare un semplice progetto Blink.
cd ~
git clone https://github.com/piotrb5e3/hello-8051.git cd hello-8051/
2. Creare l'applicazione.
fare
3. Collega Arduino al PC, collega l'alimentazione a 12V, posiziona il chip AT89C2051 nella presa ZIF.
4. Individua la porta seriale di Arduino.
ls /dev/tty*
5. Carica il file IntelHex costruito sul chip. Se la porta del tuo Arduino è diversa da /dev/ttyACM0 devi passare il valore corretto con il parametro -p della riga di comando.
at89overlord -f./hello.ihx
Passaggio 5: assemblaggio
Assemblare il circuito secondo lo schema. Una versione PDF può essere trovata nel repository.
Dovresti vedere il LED verde lampeggiare con una frequenza di circa 0,5Hz.
Passaggio 6: spiegazione del codice
#includere
#includere
Iniziamo includendo l'intestazione AT89X051 da sdcc. Contiene macro per interagire con i registri come se fossero variabili. Includiamo anche stdint.h che contiene le definizioni dei tipi interi uint8_t e uint16_t.
// Supponendo che l'oscillatore sia 16MHz
#define INTERRUPTS_PER_SECOND 5208
Si verifica un interrupt quando il Timer0 va in overflow. È configurato come un singolo timer a 8 bit, quindi questo accade ogni 2^8 cicli del processore. Un ciclo del processore richiede 12 cicli di clock e quindi arriviamo a 16000000/12/2^8 = 5208.33333.
volatile uint8_t led_state = 0;
volatile uint16_t timer_counter = INTERRUPTS_PER_SECOND;
Dichiariamo il controllo dello stato del led e le variabili del contatore di interruzione.
void Timer0_ISR(void) _interrupt (1) {
contatore_temporizzatore--; if(timer_counter == 0) { led_state = !led_state; timer_counter = INTERRUPTS_PER_SECOND; } }
Ogni volta che il Timer0 va in overflow il contatore viene decrementato. Se è uguale a zero viene resettato, e cambia lo stato del led. Ciò si verifica circa una volta al secondo, con conseguente frequenza di lampeggio del LED di ~0,5Hz.
int main() {
TMOD = 0x3; // Modalità timer - 8 bit, nessun prescaler. freq = OSCFREQ/12/2^8 TL0 = 0; // Cancella contatore TH0 = 0; // Cancella registro TR0 = 1; // Imposta il timer per l'esecuzione. ET0 = 1; // Imposta l'interruzione. EA = 1; // Imposta l'interrupt globale. while(1) { if (led_state) { P1 = 0xFF; } altrimenti { P1 = 0x00; } } }
Configuriamo il modulo timer e attendiamo i cambiamenti nella variabile di controllo dello stato del led. TMOD è il registro di controllo della modalità timer. TL0 e TH0 sono registri di controllo Timer0. ET0 è il bit di abilitazione del timer0 nel registro di controllo del timer (TCON). TR0 e EA sono bit nel registro di abilitazione degli interrupt (IE).
Passaggio 7: risorse aggiuntive
- Scheda tecnica AT89C2051:
- Compilatore C per piccoli dispositivi (sdcc):
- 8051 risorse:
- Archivio programmatore AT89C2051:
- hello-8051 repository:
Consigliato:
Introduzione: Piccola casa ecologica ispirata alla natura: 7 passaggi
Introduzione: Piccola casa ecologica ispirata alla natura: io sono Kristan Otten. Vivo nei Paesi Bassi, Almere. Ho 12 anni. Ho scelto questo istruibile, perché ho visto la foto in prima pagina e mi piace costruire case. Nei prossimi anni sarà più economico e più comodo essere autosufficienti. Quella
Introduzione alla programmazione di Raspberry Pi senza codifica manuale: 3 passaggi
Introduzione alla programmazione di Raspberry Pi senza codifica manuale: Ciao, questa guida ti mostrerà come trasformare il tuo Raspberry Pi in un dispositivo di automazione completamente programmabile compatibile con il linguaggio di programmazione orientato alla grafica per PLC chiamato Function Block Diagram (parte dello standard IEC 61131-3). Questo può essere
Aggiungi luci e musica spettrale alla tua lanterna Jack-O-Lantern - Nessuna saldatura o programmazione (a meno che tu non lo voglia): 9 passaggi (con immagini)
Aggiungi luci e musica spettrale alla tua Jack-O-Lantern - Nessuna saldatura o programmazione (a meno che tu non voglia): crea la Jack-O-Lantern più spaventosa sulla tua strada aggiungendo luci incandescenti e musica spettrale! Questo è anche un ottimo modo per provare Arduino e l'elettronica programmabile perché l'intero progetto può essere completato senza scrivere codice o saldare, ma
Introduzione alla robotica per studenti delle scuole elementari con controller Hummingbird: 18 passaggi
Introduzione alla robotica per studenti delle scuole elementari con controller Hummingbird: la maggior parte degli strumenti di robotica oggi sul mercato richiedono all'utente di scaricare software specifico sul proprio disco rigido. La bellezza del controller robotico Hummingbird è che può essere eseguito utilizzando un computer basato sul Web, come un Chromebook. È stato anche
Introduzione alla saldatura SMD: 8 passaggi (con immagini)
Introduzione alla saldatura SMD: molte persone qui potrebbero pensare che SMD sia impossibile poiché i pin sono così piccoli e la saldatura vuole aggrapparsi a ogni pin, ma in realtà è molto semplice. Questo ti insegnerà le basi della saldatura SMD se costruisci qualcosa che funzioni con la saldatura SMD e