Taula de continguts:
- Pas 1: requisits
- Pas 2: crear el programador
- Pas 3: Instal·lació del programari del programador
- Pas 4: Programació del xip
- Pas 5: Muntatge
- Pas 6: explicació del codi
- Pas 7: recursos addicionals
Vídeo: Introducció a la programació 8051 amb AT89C2051 (convidat destacat: Arduino): 7 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
El 8051 (també conegut com MCS-51) és un disseny MCU dels anys 80 que continua sent popular avui en dia. Els microcontroladors moderns compatibles amb 8051 estan disponibles a diversos proveïdors, en totes les formes i mides, i amb una àmplia gamma de perifèrics. En aquest instructiu veurem l’AT89C2051 MCU d’Atmel.
AT89C2051 és un microcontrolador petit (2Kbyte Flash, 128byte RAM), econòmic (~ 1,40 $ per xip).
- Funcionament de 2,7-6V
- 15 línies d'E / S
- 2 temporitzadors (16 bits)
- Interrupcions internes i externes
- UART
- Comparador analògic amb xip
- Fins a 2 MIPS amb un rellotge de 24 MHz
Pas 1: requisits
Requisits:
- PC Linux (programari requerit: Arduino IDE, git, make, sdcc)
- Arduino UNO
- Xip AT89C2051 (paquet DIP20)
- Endoll ZIF de 20 pins
- Optocoplador (preferiblement sortida MOSFET)
- Escut de prototipatge Arduino
- Alimentació de 12V
- Alimentació de 5V
- Oscil·lador de cristall de 16 MHz
- Condensador de 2x 30pF
- Condensador 100nF
- Diodo (ex: 1N400X)
- Resistències (1K, 3K3)
- Protoboard
- Saltadors
- Filferro de coure
Comproveu si hi ha programari necessari:
quin pitó3
que fan quins sdcc quins git
Pas 2: crear el programador
Aquesta secció serà breu, ja que vaig construir el meu escut de programació fa temps. He adjuntat l’esquema i les imatges del tauler muntat. El PDF de l'esquema es pot trobar al dipòsit.
Haureu de programar la placa del programador:
1. Cloneu el dipòsit.
git clon
2. Obriu el fitxer AT89C2051_programmer / AT89_prog / AT89_prog.ino a Arduino IDE.
3. Construïu i pengeu l'esbós des de l'IDE Arduino.
Pas 3: Instal·lació del programari del programador
1. Creeu un entorn virtual python.
python3 -m venv venv
. venv / bin / activate
2. Instal·leu at89overlord. at89overlord és un programador de codi obert per al xip AT89C2051 escrit per mi. El seu codi font es pot trobar aquí.
instal·lar pip a 89overlord
3. Verifiqueu la instal·lació.
at89overlord -h
Pas 4: Programació del xip
1. Cloneu un simple projecte de parpelleig.
cd ~
git clone https://github.com/piotrb5e3/hello-8051.git cd hello-8051 /
2. Creeu l'aplicació.
fer
3. Connecteu Arduino al PC, connecteu el subministrament de 12V, col·loqueu el xip AT89C2051 al sòcol ZIF.
4. Localitzeu el port sèrie d'Arduino.
ls / dev / tty *
5. Pengeu el fitxer IntelHex integrat al xip. Si el port del vostre Arduino és diferent de / dev / ttyACM0, heu de passar el valor correcte amb el paràmetre de línia d'ordres -p.
at89overlord -f./hello.ihx
Pas 5: Muntatge
Muntar el circuit segons l’esquema. Es pot trobar una versió PDF al repositori.
Hauríeu de veure el flaix LED verd amb una freqüència d’uns 0,5 Hz.
Pas 6: explicació del codi
#incloure
#incloure
Comencem per incloure la capçalera AT89X051 de sdcc. Conté macros per interactuar amb registres com si fossin variables. També incloem stdint.h que conté definicions de tipus enters uint8_t i uint16_t.
// Suposant que l’oscil·lador és de 16 MHz
#define INTERRUPTS_PER_SECOND 5208
Es produeix una interrupció quan el Timer0 es desborda. Està configurat com un sol temporitzador de 8 bits, de manera que això passa cada 2 ^ 8 cicles de processador. Un cicle de processador dura 12 cicles de rellotge i, per tant, arribem a 16000000/12/2 ^ 8 = 5208.33333.
volàtil uint8_t led_state = 0;
volàtil uint16_t timer_counter = INTERRUPTS_PER_SECOND;
Declarem les variables de control de l'estat del led i de comptador d'interrupcions.
void Timer0_ISR (void) _interrupt (1) {
comptador_temporitzador--; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}
Cada vegada que el Timer0 desborda el comptador disminueix. Si és igual a zero, es restableix i es canvia l'estat del led. Això es produeix aproximadament una vegada per segon, cosa que provoca una freqüència de parpelleig del LED de ~ 0,5 Hz.
int main () {
TMOD = 0x3; // Mode temporitzador: 8 bits, sense prescaler. freq = OSCFREQ / 12/2 ^ 8 TL0 = 0; // Esborra el comptador TH0 = 0; // Esborra el registre TR0 = 1; // Estableix el temporitzador perquè s’executi. ET0 = 1; // Estableix la interrupció. EA = 1; // Estableix una interrupció global. while (1) {if (led_state) {P1 = 0xFF; } else {P1 = 0x00; }}}
Configurem el mòdul de temporitzador i esperem canvis a la variable de control de l’estat del led. TMOD és el registre de control del mode de temporitzador. TL0 i TH0 són registres de control Timer0. ET0 és el bit enable-timer0 del registre de control del temporitzador (TCON). TR0 i EA són bits del registre d’habilitació d’interrupcions (IE).
Pas 7: recursos addicionals
- Full de dades AT89C2051:
- Compilador de petits dispositius C (sdcc):
- 8051 recursos:
- Dipòsit del programador AT89C2051:
- repositori hola-8051:
Recomanat:
Cable de programació de bricolatge amb Arduino Uno - Baofeng UV-9R Plus: 6 passos (amb imatges)
Cable de programació de bricolatge mitjançant Arduino Uno - Baofeng UV-9R Plus: Ei, tothom, aquesta és una guia senzilla sobre com convertir el cable per a auriculars / auriculars Baofeng UV-9R (o més) en un cable de programació mitjançant un Ardunio UNO com a USB Convertidor de sèrie. [EXCLUSIÓ DE RESPONSABILITAT] No em faig responsable de cap dany causant
Rellotge i programació de seguiment d'activitats vibrants portables ATtiny85 ATtiny85 amb Arduino Uno: 4 passos (amb imatges)
Rellotge i programació de seguiment d'activitats vibrants portables ATtiny85 ATtiny85 amb Arduino Uno: Com fer que el rellotge de seguiment d'activitat portable? Es tracta d’un gadget usable dissenyat per vibrar quan detecta l’estancament. Passes la major part del temps a l’ordinador com jo? Estàs assegut durant hores sense adonar-te’n? Llavors, aquest dispositiu és f
Four Pies: el nou Raspberry Pi 4 - Projecte destacat i celebració: 6 passos
Four Pies: el nou Raspberry Pi 4 - Projecte destacat i celebració. Introducció i aparador de vídeo Pie Pi 3.14 Pies Result
Introducció a la programació de Raspberry Pi sense codificació manual: 3 passos
Introducció a la programació de Raspberry Pi sense codificació manual: Hola, aquest instructiu us mostrarà com convertir el vostre Raspberry Pi en un dispositiu d’automatització totalment programable compatible amb un llenguatge de programació orientat gràficament per als PLC anomenat Diagrama de blocs de funcions (part de la norma IEC 61131-3). Això pot ser
Introducció a Esp 8266 Esp-01 amb Arduino IDE - Instal·lació de taules Esp a Arduino Ide i programació Esp: 4 passos
Introducció a Esp 8266 Esp-01 amb Arduino IDE | Instal·lació de taules Esp a Arduino Ide i programació Esp: En aquest instructables aprendrem a instal·lar taules esp8266 a Arduino IDE i a programar esp-01 i penjar-hi codi. Com que les taules esp són tan populars, vaig pensar a corregir un instructablesfor això i la majoria de la gent té problemes