Tabla de contenido:
- Paso 1: requisitos
- Paso 2: construcción del programador
- Paso 3: instalación del software del programador
- Paso 4: programación del chip
- Paso 5: Montaje
- Paso 6: Explicación del código
- Paso 7: Recursos adicionales
Video: Introducción a la programación del 8051 con AT89C2051 (protagonista invitado: Arduino): 7 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:44
El 8051 (también conocido como MCS-51) es un diseño de MCU de los años 80 que sigue siendo popular en la actualidad. Los microcontroladores modernos compatibles con 8051 están disponibles de varios proveedores, en todas las formas y tamaños, y con una amplia gama de periféricos. En este instructable, veremos el MCU AT89C2051 de Atmel.
AT89C2051 es un microcontrolador pequeño (2Kbyte Flash, 128byte RAM), barato (~ $ 1.40 por chip).
- Operación 2.7-6V
- 15 líneas de E / S
- 2 temporizadores (16 bits)
- Interrupciones internas y externas
- UART
- Comparador analógico en chip
- Hasta 2 MIPS con un reloj de 24 MHz
Paso 1: requisitos
Requerimientos:
- PC con Linux (software requerido: Arduino IDE, git, make, sdcc)
- Arduino UNO
- Chip AT89C2051 (paquete DIP20)
- Toma ZIF de 20 pines
- Optoacoplador (preferiblemente salida MOSFET)
- Escudo de prototipos de Arduino
- Fuente de alimentación 12V
- Fuente de alimentación 5V
- Oscilador de cristal de 16 MHz
- Condensador 2x 30pF
- Condensador 100nF
- Diodo (ex: 1N400X)
- Resistencias (1K, 3K3)
- Protoboard
- Jerséis
- Alambre de cobre
Compruebe el software necesario:
cual python3
que hacen que sdcc que git
Paso 2: construcción del programador
Esta sección será breve, ya que construí mi escudo de programación hace algún tiempo. Adjunto el esquema y las imágenes del tablero ensamblado. El PDF del esquema se puede encontrar en el repositorio.
Tendrás que programar la placa del programador:
1. Clone el repositorio.
clon de git
2. Abra el archivo AT89C2051_programmer / AT89_prog / AT89_prog.ino en Arduino IDE.
3. Cree y cargue el boceto desde el IDE de Arduino.
Paso 3: instalación del software del programador
1. Cree un entorno virtual de Python.
python3 -m venv venv
. venv / bin / activar
2. Instale at89overlord. at89overlord es un programador de código abierto para el chip AT89C2051 escrito por mí. Su código fuente se puede encontrar aquí.
pip instalar at89overlord
3. Verifique la instalación.
at89overlord -h
Paso 4: programación del chip
1. Clone un proyecto de parpadeo simple.
cd ~
clon de git https://github.com/piotrb5e3/hello-8051.git cd hello-8051 /
2. Cree la aplicación.
hacer
3. Conecte Arduino a la PC, conecte el suministro de 12V, coloque el chip AT89C2051 en el zócalo ZIF.
4. Localice el puerto serie de Arduino.
ls / dev / tty *
5. Cargue el archivo IntelHex integrado en el chip. Si el puerto de su Arduino es diferente de / dev / ttyACM0, debe pasar el valor correcto con el parámetro de línea de comando -p.
at89overlord -f./hello.ihx
Paso 5: Montaje
Ensamble el circuito de acuerdo con el esquema. Se puede encontrar una versión en PDF en el repositorio.
Debería ver el LED verde parpadear con una frecuencia de alrededor de 0.5Hz.
Paso 6: Explicación del código
#incluir
#incluir
Comenzamos por incluir el encabezado AT89X051 de sdcc. Contiene macros para interactuar con registros como si fueran variables. También incluimos stdint.h que contiene definiciones de tipos enteros uint8_t y uint16_t.
// Suponiendo que el oscilador es de 16MHz
#define INTERRUPTS_PER_SECOND 5208
Se produce una interrupción cuando el Timer0 se desborda. Está configurado como un solo temporizador de 8 bits, por lo que esto sucede cada 2 ^ 8 ciclos de procesador. Un ciclo de procesador toma 12 ciclos de reloj y, por lo tanto, llegamos a 16000000/12/2 ^ 8 = 5208,33333.
volátil uint8_t led_state = 0;
volátil uint16_t timer_counter = INTERRUPTS_PER_SECOND;
Declaramos las variables de control de estado del led y contador de interrupciones.
void Timer0_ISR (void) _interrupt (1) {
contador_temporizador--; if (contador_temporizador == 0) {led_state =! led_state; contador_temporizador = INTERRUPTS_PER_SECOND; }}
Cada vez que el Timer0 se desborda, el contador disminuye. Si es igual a cero, se reinicia y se cambia el estado del LED. Esto ocurre aproximadamente una vez por segundo, lo que resulta en una frecuencia de parpadeo del LED de ~ 0.5Hz.
int main () {
TMOD = 0x3; // Modo de temporizador: 8 bits, sin preescalador. frecuencia = OSCFREQ / 12/2 ^ 8 TL0 = 0; // Borrar contador TH0 = 0; // Borrar registro TR0 = 1; // Establecer el temporizador para que funcione. ET0 = 1; // Establecer interrupción. EA = 1; // Establecer interrupción global. while (1) {if (led_state) {P1 = 0xFF; } más {P1 = 0x00; }}}
Configuramos el módulo temporizador y esperamos cambios en la variable de control de estado del led. TMOD es el registro de control del modo temporizador. TL0 y TH0 son registros de control de Timer0. ET0 es el bit de habilitación del temporizador0 en el registro de control del temporizador (TCON). TR0 y EA son bits en el registro de habilitación de interrupciones (IE).
Paso 7: Recursos adicionales
- Hoja de datos de AT89C2051:
- Compilador C de dispositivo pequeño (sdcc):
- 8051 recursos:
- Repositorio del programador AT89C2051:
- repositorio hello-8051:
Recomendado:
Programación del DSKY abierto: 5 pasos (con imágenes)
Programando el Open DSKY: Bienvenido a nuestros Instructables en curso sobre la programación de su Open DSKY. Asegúrese de regresar ya que este Instructable seguirá creciendo a medida que producimos y lanzamos constantemente nuevo material de programación. Así que síguela, dale me gusta y marca como favorita. Esta serie de videos
Introducción a la programación de Raspberry Pi sin codificación manual: 3 pasos
Introducción a la programación de Raspberry Pi sin codificación manual: Hola, este instructivo le mostrará cómo convertir su Raspberry Pi en un dispositivo de automatización totalmente programable compatible con el lenguaje de programación orientado gráficamente para PLC llamado Diagrama de bloques de funciones (parte del estándar IEC 61131-3). Esto puede ser
Introducción a Esp 8266 Esp-01 con Arduino IDE - Instalación de placas Esp en Arduino Ide y programación Esp: 4 pasos
Introducción a Esp 8266 Esp-01 con Arduino IDE | Instalación de placas Esp en Arduino Ide y programación de Esp: En este instructables aprenderemos cómo instalar placas esp8266 en Arduino IDE y cómo programar esp-01 y cargar código en él Dado que las placas esp son tan populares, así que pensé en corregir un instructivo para esto y la mayoría de las personas enfrentan problemas
Escudo de programación del cargador de arranque ATMEGA328 para Arduino Uno: 3 pasos (con imágenes)
Escudo de programación del cargador de arranque ATMEGA328 para Arduino Uno: Escudo de programación del cargador de arranque ATMEGA328P para Arduino Uno A veces sucede y usted daña su microprocesador Arduino Uno Atmega328P. Puede cambiar de procesador. Pero primero necesita programar el cargador de arranque en él. Así que este tutorial de cómo hacer esto b
Lámpara de té del astrónomo - Introducción: 8 pasos (con imágenes)
Lámpara de té del astrónomo - Introducción: Recientemente me interesé por la astronomía y la observación de estrellas en mi tiempo libre y descubrí que había todo tipo de cosas interesantes que se pueden usar para hacer que la astronomía sea más interesante. Una de las primeras cosas que descubrí que quería era una linterna roja para h