Tabla de contenido:

Introducción a la programación del 8051 con AT89C2051 (protagonista invitado: Arduino): 7 pasos (con imágenes)
Introducción a la programación del 8051 con AT89C2051 (protagonista invitado: Arduino): 7 pasos (con imágenes)

Video: Introducción a la programación del 8051 con AT89C2051 (protagonista invitado: Arduino): 7 pasos (con imágenes)

Video: Introducción a la programación del 8051 con AT89C2051 (protagonista invitado: Arduino): 7 pasos (con imágenes)
Video: Microcontrolador 8051/8052 Introducción (Curso, Video #1) 2024, Noviembre
Anonim
Introducción a la programación del 8051 con AT89C2051 (protagonista invitado: Arduino)
Introducción a la programación del 8051 con AT89C2051 (protagonista invitado: Arduino)

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

Requisitos
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

Construyendo el programador
Construyendo el programador
Construyendo el programador
Construyendo el programador
Construyendo el programador
Construyendo el 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

Instalación del software del programador
Instalación del software del programador
Instalación del software del programador
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

Programando el Chip
Programando el Chip
Programando el Chip
Programando el Chip
Programando el Chip
Programando el Chip
Programando el Chip
Programando el 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

Montaje
Montaje
Montaje
Montaje
Montaje
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

Explicación del código
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: