Índice:

Introdução à programação do 8051 com AT89C2051 (Estrelado por convidado: Arduino): 7 etapas (com imagens)
Introdução à programação do 8051 com AT89C2051 (Estrelado por convidado: Arduino): 7 etapas (com imagens)

Vídeo: Introdução à programação do 8051 com AT89C2051 (Estrelado por convidado: Arduino): 7 etapas (com imagens)

Vídeo: Introdução à programação do 8051 com AT89C2051 (Estrelado por convidado: Arduino): 7 etapas (com imagens)
Vídeo: Ferramentas gratuitas para o microcontrolador 8051 (EDSIM51 e SimulIDE) 2024, Novembro
Anonim
Introdução à programação do 8051 com AT89C2051 (Estrelado por convidado: Arduino)
Introdução à programação do 8051 com AT89C2051 (Estrelado por convidado: Arduino)

O 8051 (também conhecido como MCS-51) é um design MCU dos anos 80 que permanece popular até hoje. Microcontroladores modernos compatíveis com 8051 estão disponíveis em vários fornecedores, em todas as formas e tamanhos, e com uma ampla variedade de periféricos. Neste instrutível, examinaremos o MCU AT89C2051 da Atmel.

AT89C2051 é um microcontrolador pequeno (2Kbyte Flash, 128byte RAM) e barato (~ $ 1,40 por chip). Características:

  • Operação 2,7-6V
  • 15 linhas de I / O
  • 2 temporizadores (16 bits)
  • Interrupções internas e externas
  • UART
  • Comparador analógico no chip
  • Até 2MIPS com relógio de 24 MHz

Etapa 1: Requisitos

Requisitos
Requisitos

Requisitos:

  • PC Linux (software necessário: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • Chip AT89C2051 (pacote DIP20)
  • Soquete ZIF de 20 pinos
  • Optoacoplador (de preferência com saída MOSFET)
  • Escudo de prototipagem Arduino
  • Fonte de alimentação 12V
  • Fonte de alimentação 5V
  • Oscilador de cristal de 16 MHz
  • 2x capacitor 30pF
  • Capacitor 100nF
  • Diodo (ex: 1N400X)
  • Resistores (1K, 3K3)
  • Protoboard
  • Jumpers
  • Fio de cobre

Verifique o software necessário:

qual python3

qual faz qual sdcc qual git

Etapa 2: Construindo o Programador

Construindo o Programador
Construindo o Programador
Construindo o Programador
Construindo o Programador
Construindo o Programador
Construindo o Programador

Esta seção será breve, pois construí meu escudo de programação há algum tempo. Anexei o esquema e as fotos da placa montada. O PDF do esquema pode ser encontrado no repositório.

Você terá que programar a placa do programador:

1. Clone o repositório.

git clone

2. Abra o arquivo AT89C2051_programmer / AT89_prog / AT89_prog.ino no Arduino IDE.

3. Construa e carregue o esboço do Arduino IDE.

Etapa 3: Instalando o software do programador

Instalando o software do programador
Instalando o software do programador
Instalando o software do programador
Instalando o software do programador

1. Crie um ambiente virtual python.

python3 -m venv venv

. venv / bin / activate

2. Instale o at89overlord. at89overlord é um programador de código aberto para o chip AT89C2051 escrito por mim. O código-fonte pode ser encontrado aqui.

pip install at89overlord

3. Verifique a instalação.

at89overlord -h

Etapa 4: Programando o Chip

Programando o Chip
Programando o Chip
Programando o Chip
Programando o Chip
Programando o Chip
Programando o Chip
Programando o Chip
Programando o Chip

1. Clone um projeto simples de piscar.

cd ~

git clone https://github.com/piotrb5e3/hello-8051.git cd hello-8051 /

2. Crie o aplicativo.

faço

3. Conecte o Arduino ao PC, conecte a fonte de 12 V, coloque o chip AT89C2051 no soquete ZIF.

4. Localize a porta serial do Arduino.

ls / dev / tty *

5. Carregue o arquivo IntelHex integrado para o chip. Se a porta do seu Arduino for diferente de / dev / ttyACM0, você deve passar o valor correto com o parâmetro de linha de comando -p.

at89overlord -f./hello.ihx

Etapa 5: Montagem

conjunto
conjunto
conjunto
conjunto
conjunto
conjunto

Monte o circuito de acordo com o esquema. Uma versão em PDF pode ser encontrada no repositório.

Você deve ver o LED verde piscar com uma frequência de cerca de 0,5 Hz.

Etapa 6: Explicação do código

Explicação do código
Explicação do código

#incluir

#incluir

Começamos incluindo o cabeçalho AT89X051 do sdcc. Ele contém macros para interagir com os registradores como se fossem variáveis. Também incluímos stdint.h que contém definições dos tipos inteiros uint8_t e uint16_t.

// Assumindo que o oscilador é 16 MHz

# define INTERRUPTS_PER_SECOND 5208

Uma interrupção ocorre quando o Timer0 transborda. Ele é configurado como um único temporizador de 8 bits, então isso acontece a cada 2 ^ 8 ciclos do processador. Um ciclo de processador leva 12 ciclos de clock e, portanto, chegamos a 16000000/12/2 ^ 8 = 5208,33333.

volátil uint8_t led_state = 0;

volátil uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Declaramos o controle de estado do led e as variáveis do contador de interrupções.

void Timer0_ISR (void) _interrupt (1) {

timer_counter--; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}

Cada vez que o Timer0 transborda, o contador diminui. Se for igual a zero é zerado e o estado do led é alterado. Isso ocorre cerca de uma vez por segundo, resultando em frequência de intermitência do LED de aproximadamente 0,5 Hz.

int main () {

TMOD = 0x3; // Modo temporizador - 8 bits, sem prescaler. freq = OSCFREQ / 12/2 ^ 8 TL0 = 0; // Limpar contador TH0 = 0; // Limpa o registro TR0 = 1; // Defina o cronômetro para funcionar. ET0 = 1; // Definir interrupção. EA = 1; // Definir interrupção global. while (1) {if (led_state) {P1 = 0xFF; } senão {P1 = 0x00; }}}

Configuramos o módulo do temporizador e aguardamos as alterações na variável de controle do estado do led. TMOD é o registro de controle do modo do temporizador. TL0 e TH0 são registradores de controle Timer0. ET0 é o bit de habilitação do timer0 no registro de controle do timer (TCON). TR0 e EA são bits no registro de habilitação de interrupção (IE).

Etapa 7: Recursos Adicionais

  • Folha de dados do AT89C2051:
  • Compilador C de dispositivo pequeno (sdcc):
  • Recursos do 8051:
  • Repositório do programador AT89C2051:
  • repositório hello-8051:

Recomendado: