Índice:
- Etapa 1: Requisitos
- Etapa 2: Construindo o Programador
- Etapa 3: Instalando o software do programador
- Etapa 4: Programando o Chip
- Etapa 5: Montagem
- Etapa 6: Explicação do código
- Etapa 7: Recursos Adicionais
Vídeo: Introdução à programação do 8051 com AT89C2051 (Estrelado por convidado: Arduino): 7 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:39
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:
- 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
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
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
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
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
#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:
Cabo de programação DIY usando Arduino Uno - Baofeng UV-9R Plus: 6 etapas (com imagens)
Cabo de programação DIY usando Arduino Uno - Baofeng UV-9R Plus: Olá a todos, este é um guia simples sobre como converter seu cabo de fone de ouvido / fone de ouvido Baofeng UV-9R (ou plus) em um cabo de programação usando um Ardunio UNO como um USB Conversor serial. [ISENÇÃO DE RESPONSABILIDADE] Não assumo qualquer responsabilidade em qualquer dano causado
Introdução à programação do Raspberry Pi sem codificação manual: 3 etapas
Introdução à programação do Raspberry Pi sem codificação manual: Olá, este instrutível mostrará como transformar o Raspberry Pi em um dispositivo de automação totalmente programável compatível com a linguagem de programação orientada graficamente para PLCs chamados de diagrama de blocos de funções (parte do padrão IEC 61131-3). Isso pode ser
Servo controlado por joystick usando Arduino (com programação): 4 etapas
Servo controlado por joystick usando Arduino (com programação): Neste tutorial faremos um servo de controle por joystick usando Arduino Uno.Servo se moverá de acordo com o movimento do joystick
Como fazer um robô controlado por celular. Baseado em DTMF - Sem microcontrolador e programação - Controle de qualquer lugar do mundo - RoboGeeks: 15 etapas
Como fazer um robô controlado por celular. Baseado em DTMF | Sem microcontrolador e programação | Controle de qualquer lugar do mundo | RoboGeeks: Quer fazer um robô que possa ser controlado de qualquer lugar do mundo, vamos fazer isso
Arduino mais barato -- Menor Arduino -- Arduino Pro Mini -- Programação -- Arduino Neno: 6 etapas (com imagens)
Arduino mais barato || Menor Arduino || Arduino Pro Mini || Programação || Arduino Neno: …………………………. ASSINAR O meu canal no YouTube para mais vídeos ……. .Este projeto é sobre como fazer a interface de um arduino menor e mais barato de todos os tempos. O menor e mais barato arduino é o arduino pro mini. É semelhante ao Arduino