Sistemas Embarcados Microcontroladores Prof. Protásio Laboratório de Microengenharia/DEE/CEAR/UFPB
Fundamentos de microcontroladores Bit (Binary digit) Zero lógico (Ø) e Um lógico (1) 0V e 5V ou 3,3V Byte Conjunto de 8 bits que representa valores entre 00H (=0 10 ) à FFH (=255 10 ) Registrador Conjunto de células de memória (geralmente, flip-flop do tipo D) interligados a fim de formar um só conjunto de dados 1 Ø V1 max V1 min V0 max 0V D FF CK Q D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 2
Fundamentos de microcontroladores Instrução Define uma única ação (tarefa) que a UCP pode executar por vez Exemplos de tarefa Leitura e escrita em registradores MOV A, R0 Mover o conteúdo do registrador R0 para o Acumulador A MOV R1, A Mover o conteúdo do acumulador para R1 OBS o registrador acumulador (A) é o que recebe o resultado da operação da ULA R/M Registrador/Memória R/M R/M R/M A Acumulador A Datapath 1 A Datapath 2 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 3
Fundamentos de microcontroladores Instrução Define uma única ação (tarefa) que a UCP pode executar por vez Exemplos de tarefa Leitura e escrita em registradores MOV A, R0 Mover o conteúdo do registrador R0 para o Acumulador A O registrador acumulador é o que recebe o resultado da operação da ULA MOV R1, A Mover o conteúdo do acumulador para R1 Leitura e escrita em uma posição da memória Operação lógica ou aritmética Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 4
Fundamentos de microcontroladores Tamanho de instrução em bytes Instruções de 1 byte Na memória de programa (code memory ou program memory) a instrução ocupa comente 1 espaço de memória Exemplo MOV A, R0 Opcode E8H Memória PC Program Counter E8H Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 5
Fundamentos de microcontroladores Tamanho de instrução em bytes Instruções de 2 bytes Exemplo MOV A,#25H Move o valor imediato 25h para o acumulador Opcode 74H Memória PC 74H 25H 2 bytes Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 6
Fundamentos de microcontroladores CPU Unidade central de processamento Registradores (REGs) Unidade de Controle(UC) Unidade de lógica e aritmética (ULA) A R0 R1 R7 CPU Banco de Registradores ULA UC Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 7
Fundamentos de microcontroladores ULA Realiza as operações lógicas e aritméticas. Por exemplo, soma, subtração, multiplicação, divisão, operações lógicas AND, OR, XOR, NOT, deslocamento de bits à direita e esquerda, incremento e decremento, comparações A ULA seta os flags de sinalização de acordo com o resultado da última operação no registrador de flag Registrador de flag CY AC OV P CY carry flag AC auxiliar carry OV overflow flag Overflow. Ocorre quando o resultado de uma operação aritmética é maior que 255 e assim não pode ser armazenado em um só registrador. P parity flag Parity bit. Se o valor armazenado no acumulador for par então P = 1, caso contrário P = 0. A R0 R1 R7 ULA Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 8
Fundamentos de microcontroladores Unidade de Controle (UC) É a unidade que executa as ações da UCP busca (fetch), decodificação e execução de instruções. Busca Buscar a instrução na memória apontada pelo PC Decodificação Identificação da instrução Execução Execução da instrução A UC é a unidade mais complexa da CPU que controla a ação da ULA e realiza a movimentação de dados e instruções de e para a CPU através de sinais de controle de microoperações internas da CPU de acordo com o clock. Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 9
Fundamentos de microcontroladores Unidade de Controle (UC) A UC contem entre outros dispositivos Decodificador de instruções Dispositivo utilizado para identificar as operações a serem realizadas relacionadas à instrução a ser executada; Registrador de instruções (RI) Regitrador que armazena a instrução a ser executada; ROM de microprogramação Memória não volátil que armazena as microinstrução (sinalização das microoperações internas) necessários para a execução de cada instrução da CPU Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 10
Fundamentos de microcontroladores Registradores Os registradores são espaços de armazenamento interno à CPU e de mais rápido acesso. Por isso, são também denominados de registradores internos São formandos por flip-flops A CPU pode realizar operações de leitura e escrita Podem armazenar 1 byte (8 bits) dados 2 bytes (word, 16 bits) dados ou endereços OBS um microcontrolador é denominado de 8 bits, se ele for capaz de processar informações de 8 em 8 bits por vez (operações aritméticas e de movimentação de dados), Analogicamente, para microcontroladores de 16 e 32. Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 11
EEPROM PORT Fundamentos de microcontroladores Microcontrolador Dispositivo que incorpora uma CPU, unidades de memória e dispositivos periféricos integrados em um mesmo chip. ADC COUNTER PWM DAC CPU CLOCK RAM ROM Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 12
Fundamentos de microcontroladores Elementos de microcontroladores CPU Em geral, as CPUs de microcontroladores são de baixíssimo poder de processamento (geralmente, um microprocessador de um ou mais gerações anteriores). E de baixo custo. As CPUs são também denominadas de Núcleo de processamento CPU core Existem vários microcontroladores baseados em núcleos 8051 ARM Etc. Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 13
Fundamentos de microcontroladores Elementos de microcontroladores Memória classificação quanto à volatividade Memória não-voláteis ROM (Read Only Memory) PROM/OPT (Programmable ROM/ One Time Programming) EPROM (Erasable and Programmable ROM) EEPROM (Electrically Erasable Programmable ROM) FLASH Memória voláteis RAM (Random Access Memory) Memória classificação quanto ao uso Memória de programa ou de código (em geral, não-volátil) Memória de dados (em geral, volátil) Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 14
Microcontrolador 8051
Microcontrolador 8051 Microcontrolador da família MCS-51 da Intel Características CPU de 8 bits otimizada para aplicações de controle Capacidade de processamento booleano (tratamento individual de bit) 4Kbytes de memória interna de programa 128 bytes de memória RAM interna de dados 64K de endereçamento de memória de programa 64K de endereçamento de memória de dados Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 16
Microcontrolador 8051 Características 32 linhas de E/S bidirecionais, endereçadas individualmente 2 temporizadores/contadores de 16 bits 5 entradas de interrupção com dois níveis de prioridade 3 internas 2 externas 1 oscilador interno de clock Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 17
Microcontrolador 8051 Organização interna básica (versão básica) Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 18
Microcontrolador 8051 Pinagem VCC (40) Alimentação (+) GND (20) Terra (-) P0.0 a P0.7 (32-39) Porta de E/S bidirecional de dreno aberto Por ser dreno aberto, a corrente máxima depende do resistor de pull-up. AD0 a AD7 (32-39) Pinos multiplexados de endereço e dados para acesso à memória externa. Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 19
Microcontrolador 8051 P0.0 a P0.7 (32-39) Porta de E/S bidirecional de dreno aberto Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 20
Microcontrolador 8051 Pinagem P1.0 a P1.7 (1-8) Porta de E/S bidirecional com pull-ups internos P2.0 a P2.7 (21-28) Porta de E/S bidirecional com pull-ups internos A8 a A15 (21-28) Pinos de endereço para acesso à memória externa. Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 21
Microcontrolador 8051 Pinagem P3.0 a P3.7 (10-17) Porta de E/S bidirecional com pull-ups internos RXD, TXD (10-11) Serial ~INT0, ~INT1 (12-13) Interrupções externas T0, T1 (14-15) Entrada externa de clock do timer0 e do timer1 WR, RD (16-17) Sinal de escrita e leitura da RAM externa Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 22
Microcontrolador 8051 Pinagem RST (9) Reset Um nível lógico 1 por dois ciclos de máquina reseta o chip ALE/~PROG (30) ALE = Address Latch Enable Indica à memória externa que os pinos AD0-AD7,A8-A15 têm o endereço Instruções de acesso à memória externa habilitam esse sinal ~PROG Pulso de programação da EPROM. Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 23
Microcontrolador 8051 Pinagem ~PSEN (29) Program Store Enable Pulso de leitura de memória externa ~EA/VPP (31) EA External access Enable Quando ligado à VSS, executa o programa na memória externa. VPP Recebe a tensão de programação de 21V da EPROM interna. Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 24
Microcontrolador 8051 Pinagem XTAL1, XTAL2 (19, 18) Entrada para o oscilador interno. Obs usando um cristal de 12MHz, o ciclo de clock será de 1/ (12M) = 0,083µs Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 25
Mapa de memória de dados do 8051 FFH FFH 128 BYTES DE RAM SUPERIOR Endereçamento indireto REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) Endereçamento direto 128 BYTES DE RAM INFERIOR Endereçamento Direto e Indireto 80H 7FH 80H 30H 2FH 20H 1FH 00H Endereçável por bit Registradores de Propósito Geral 128 BYTES DE RAM INFERIOR Endereçamento Direto e Indireto Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 26
Mapa de memória de dados do 8051 FFH FFH 128 BYTES DE RAM SUPERIOR Endereçamento indireto REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) Endereçamento direto MOV A,33H Move o conteúdo do endereço 33h para o acumulador 80H 7FH 80H 30H 2FH 20H 1FH 00H Endereçável por bit Registradores de Propósito Geral OBS endereçamento imediato MOV A, #2 Move o valor 2 para o acumulador MOV A, @R0 Move o conteúdo do endereço contido no registrador R0 para o acumulador O valor 2 está na memória de programa Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 27
RS1 (PSW.4) RS0 (PSW.3) Mapa de memória de dados do 8051 FFH FFH 128 BYTES DE RAM SUPERIOR REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) PSW Program Status Word REGISTER Endereçamento indireto Endereçamento direto 80H 7FH 30H 2FH 20H 1FH 00H Endereçável por bit Registradores de Propósito Geral 80H 1F R7 R6 R5 R4 R3 BANCO 3 R2 R1 18 R0 17 R7 BANCO 2 R6 R5 R4 R3 R2 R1 10 R0 0F R7 BANCO 1 R6 R5 R4 R3 R2 R1 08 R0 07 R7 R6 R5 R4 R3 BANCO 0 R2 R1 00 R0 0 0 0 1 1 0 1 1 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 28
Mapa de memória de dados do 8051 FFH FFH 80H 7FH 128 BYTES DE RAM SUPERIOR Endereçamento indireto 80H REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) Endereçamento direto JNB 0x20.2, Address Pula para Address se o bit 20H.2 for 0 30H 2FH 20H 1FH 00H Endereçável por bit Registradores de Propósito Geral 27 00 01 02 03 04 05 07 Endereçável por Bit 20 00 01 02 03 04 05 07 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 29
REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) ACC B Acumulador. As instruções específicas do acumulador referem-se a este simplesmente como A. MOV A, #100 A = 100 (em decimal) Registrador B Usado em operações de multiplicação e divisão. Pode ser usado para outras operações. MUL AB BA = B A FFH F0H E0H D0H B8H B0H A8H A0H 99H 98H 90H 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 87H 83H 82H 81H 80H B ACC PSW IP P3 IE P2 SBUF SCON P1 CKCON AUXR TH1 TH0 TL1 TL0 TMOD TCON PCON DPH DPL SP P0 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 30
REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) PSW (Program Status Word) FFH F0H E0H D0H B8H B0H A8H A0H 99H 98H 90H 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 87H 83H 82H 81H 80H B ACC PSW IP P3 IE P2 SBUF SCON P1 CKCON AUXR TH1 TH0 TL1 TL0 TMOD TCON PCON DPH DPL SP P0 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 31
REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) SP (Stack Pointer) Registrador de 8 bits que é incrementado antes de um dado ser armazenado por uma instrução PUSH ou CALL. No reset, o valor de SP = 07H Exemplo Suponha SP = 07H e A = 33H PUSH A Ao fim da execução tem-se 33H no endereço 08H da RAM interna e SP = 08H POP 34H Ao fim da execução tem-se 33H no endereço 34H da RAM interna e SP = 07H FFH F0H E0H D0H B8H B0H A8H A0H 99H 98H 90H 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 87H 83H 82H 81H 80H B ACC PSW IP P3 IE P2 SBUF SCON P1 CKCON AUXR TH1 TH0 TL1 TL0 TMOD TCON PCON DPH DPL SP P0 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 32
REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) DPTR (Data Pointer) 16 bits DPH high byte 8 bits DPL low byte 8 bits O registrador DPTR é usado para endereçamento indireto de Operação de leitura na memória de programa Operação de escrita/leitura na memória de dados externa FFH F0H E0H D0H B8H B0H A8H A0H 99H 98H 90H 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 87H 83H 82H 81H 80H B ACC PSW IP P3 IE P2 SBUF SCON P1 CKCON AUXR TH1 TH0 TL1 TL0 TMOD TCON PCON DPH DPL SP P0 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 33
REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) DPTR (Data Pointer) Exemplos MOV DPTR,#0123H Carrega o DPTR com o dado imediato #0123H INC DPTR Incrementa DPTR DPTR = DPTR + 1 MOVX A, @ DPTR Ler o conteúdo da memória externa de DADOS apontado pelo endereço em DPTR e salva em A MOVC A, @A + DPTR Ler o conteúdo da memória de PROGRAMA (CODE) apontado por (A + DPTR) e salva em A FFH F0H E0H D0H B8H B0H A8H A0H 99H 98H 90H 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 87H 83H 82H 81H 80H B ACC PSW IP P3 IE P2 SBUF SCON P1 CKCON AUXR TH1 TH0 TL1 TL0 TMOD TCON PCON DPH DPL SP P0 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 34
REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) P0, P1, P2 e P3 Registradores (Latchs) das Portas bidirecionais Port 0, Port 1, Port 2 e Port 3. Fonte http//www.mikroe.com/ FFH F0H E0H D0H B8H B0H A8H A0H 99H 98H 90H 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 87H 83H 82H 81H 80H B ACC PSW IP P3 IE P2 SBUF SCON P1 CKCON AUXR TH1 TH0 TL1 TL0 TMOD TCON PCON DPH DPL SP P0 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 35
REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) SBUF (Serial Data Buffer) De fato, são dois registradores separados Um para transmissão (transmit buffer) Quando um dado é enviado para o SBUF, vai para o transmit buffer e é transmitido serialmente Outro para recepção (receive buffer) Quando um dado é lido do SBUF, este vem do receive buffer que foi recebido serialmente SCON (Serial Control Register) Registrador de controle da comunicação serial Fonte http//www.mikroe.com FFH F0H E0H D0H B8H B0H A8H A0H 99H 98H 90H 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 87H 83H 82H 81H 80H B ACC PSW IP P3 IE P2 SBUF SCON P1 CKCON AUXR TH1 TH0 TL1 TL0 TMOD TCON PCON DPH DPL SP P0 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 36
REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) Registradores de Timer/Counter Par de registradores do Timer/Counter0 TH0, TL0 (16 bits) Par de registradores do Timer/Counter1 TH1, TL1 (16 bits) TCON Controle de Timer/Counter TMOD Modo de operação de Timer/Counter Fonte http//www.mikroe.com FFH F0H E0H D0H B8H B0H A8H A0H 99H 98H 90H 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 87H 83H 82H 81H 80H B ACC PSW IP P3 IE P2 SBUF SCON P1 CKCON AUXR TH1 TH0 TL1 TL0 TMOD TCON PCON DPH DPL SP P0 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 37
REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) IE Habilitação de interrupção IP Prioridade de interrupção PCON Power Control Idle ou power down FFH F0H E0H D0H B8H B0H A8H A0H 99H 98H 90H 8DH 8CH 8BH 8AH 89H 88H 87H 83H 82H 81H 80H B ACC PSW IP P3 IE P2 SBUF SCON P1 TH1 TH0 TL1 TL0 TMOD TCON PCON DPH DPL SP P0 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 38
Mapa de memória de programa do 8051 0xFFFF 0xFFFF EA = 1 ROM Externa (até 64K) EA = 0 ROM Externa (até 64K) 0x1000 0x1000 0x0FFF 0x0FFF ROM embarcada (4K) 0x0000 0x0000 EA Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 39
Mapa de memória de programa do 8051 Espaços reservados na memória de programa 0xFFFF Porta Serial Timer 1 Interrupções Int. Ext. 1 Timer 0 Int. Ext. 0 Reset (PC) PC = Contador de Programa 0x0023 0x001B 0x0013 0x000B 0x0003 0x0000 ROM (4K) 8 bytes 3 bytes Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 40
Expansão de Memória do 8051 Fonte http//www.mikroe.com Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 41
Ciclo de Instrução do 8051 Um ciclo de instrução consiste de 6 estados S1, S2, S3, S4, S5, S6 Cada estado é dividido em duas fases P1 1º ciclo de clock P2 2º ciclo de clock Dessa forma, um ciclo de instrução consiste de 12 ciclos de clock. De S1P1 S6P2 Com um cristal de 12MHz, então o ciclo de instrução é igual a (1/12M)*12 = 1µs Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 42
Programação Assembly 8051
Programação Assembly Ferramentas de simulação MCU 8051 IDE v1.4.7 An open source IDE for MCS-51 based microcontrollers for POSIX Systems, this software is licenced under the GNU GPL v2 licence. Download at http//mcu8051ide.sourceforge.net Proteus 8.0 Ferramenta para o design de projetos eletrônicos baseado em SPICE. Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 44
MCU 8051 IDE Execute o MCU 8051 IDE Criação de Projeto Project -> New Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 45
MCU 8051 IDE Execute o MCU 8051 IDE Criação de Projeto Project -> New Digite um nome para o projeto Indique a pasta que será salvo o projeto Defina o processador Finalize OBS Em Select MCU, pode-se obter informações gerais sobre a CPU Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 46
MCU 8051 IDE Área de edição de código Simulador Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 47
MCU 8051 IDE Na área de edição de código, insira o seguinte código ;**************************************** ;*** PROGRAMA PISCA LED ****** ;**************************************** ORG 0000H ; Diretiva que informa ao montador o endereço da próxima instrução LJMP INICIO ; Pula para o endereço (rótulo) "INICIO" ORG 0030H INICIO CPL P2.0 ; Complementa o estado do bit 0 da porta P2 MOV R0,#50 ; Move o valor 50 em decimal para o registrador R0 DJNZ R0,$ ; Decrementa o valor em R0 e pula para "$"(mesmo endereço) se for ; diferente de zero SJMP INICIO ; Pula para o endereço "INICIO" END ; Diretiva que informa ao montador o FIM DO PROGRAMA Após, salve o código File Save Monte o código Tools compile ou F11 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 48
MCU 8051 IDE O arquivo.hex é o que de fato deve ser transferido ao microcontrolador Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 49
MCU 8051 IDE Iniciando a simulação Simulator Start/Shutdown ou F2 A linha verde indica onde está a simulação Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 50
MCU 8051 IDE Simulação passo-a-passo Simulator Step ou F7 Executa a instrução corrente e pula para próxima instrução Abaixo ver-se que a instrução LJMP INICIO foi executada Ou seja, foi realizado o pulo para o endereço INICIO Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 51
MCU 8051 IDE Simulação passo-a-passo Próximo F7 Executa CPL P2.0 Observe que o valor de P2 muda Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 52
MCU 8051 IDE Simulação passo-a-passo Próximo F7 Executa MOV R0,#50 Observe que a RAM de Dados é modificada Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 53
MCU 8051 IDE Simulação passo-a-passo Próximo F7 Executa DJNZ R0,$ Observe que o valor em R0 é decrementado Observe que o ponteiro (linha verde) continua no mesmo lugar. Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 54
MCU 8051 IDE Simulação passo-a-passo Próximos 50 clicks em F7 Executa a instrução DJNZ Loop R0,$ 50x Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 55
MCU 8051 IDE Simulação passo-a-passo Próximo F7 Executa JMP INICIO Volta ao endereço INICIO Próximo F7 Executa CPL P2.0 E continua o laço INFINITO Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 56
MCU 8051 IDE Programa a cada 50 interações, o estado do bit 0 da porta 2 é modificado Se um LED for ligado a este pino, então este piscará Questão? Qual a frequência em que o LED piscará? Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 57
Cálculo da execução do programa Considerando um cristal de 12MHz Período de clock (Tc) = 83,3 ns 1/12MHz Ciclo de Instrução (Ti) = 1 µs 83,3 ns * 12 Instrução Número de Ciclos de Instrução por instrução Número de Ciclos de Instrução por loop CPL P2.0 1 1 MOV R0, #50 1 1 DJNZ R0,$ 2 2*50 SJMP INICIO 2 2 Tempo de execução do loop (T L ) = (1+1+2*50+2)* 1 µs = 104 µs Assim, o LED ficará ON por 104 µs e OFF por 104 µs Frequência de Oscilação do LED = 1/(2*T L ) 4,8 khz Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 58
Cálculo da execução do programa Qual a frequência caso o valor de inicial de R0 seja 250? Qual a frequência do LED caso o programa seja modificado para o abaixo ORG 0000H ; Diretiva que informa ao montador o endereço da próxima instrução LJMP INICIO ; Pula para o endereço (rótulo) "INICIO" ORG 0030H INICIO CPL P2.0 ; Complementa o estado do bit 0 da porta P2 MOV R0,#250 ; Move o valor 250 em decimal para o registrador R0 MOV R1,#250 ; Move o valor 250 em decimal para o registrador R1 LOOP DJNZ R0,$ ; Decrementa o valor em R0 e pula para LOOP se for diferente de zero DJNZ R1,LOOP ; Decrementa o valor em R1 e pula para LOOP se for diferente de zero SJMP INICIO ; Pula para o endereço "INICIO" END ; Diretiva que informa ao montador o FIM DO PROGRAMA Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 59
Inserção de breakpoints Compile o programa anterior e execute-o passo a passo (???). Para executar um trecho de programa de uma vez, pode-se inserir breakpoint. Click acima da numeração da linha desejada para inserção de um breakpoint Para executar até o breakpoint Simulator Run ou F9 Observe o tempo de execução Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 60
Arquivo de listagem Contem informações sobre o código montado e código montado. File Open Filter = Code listing (*.lst) PISCA_LED.lst Código de Máquina Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 61
Arquivo *.hex Contém o código de máquina que será gravado no microcontrolador File Open Filter = All files (*) PISCA_LED.hex Arquivo PISCA_LED.hex 03000000020030CB 0C003000B2A078FA79FAD8FED9FC80F46E 00000001FF Start code character em ASCII Byte count Número de bytes do código Address Endereço inicial da sequência de bytes de código Record type Valor entre 00 e 05 que especifica o tipo de campo de dado Data Sequência de bytes de código Checksum Byte de detecção de erro Exemplos - 00 indica que campo de dados (instruções) - 01 indica fim de arquivo. Em geral, o endereço especificado é 0000 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 62
Simulação no Proteus Monte o circuito abaixo no Proteus e rode o código visto Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 63
Exemplos de circuitos com o 8051 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 64
Exemplos de circuitos com o 8051 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 65
Tarefas Utilizando o MCU 8051 IDE e/ou o Proteus, monte os seguintes circuitos Contador de eventos (use uma chave para emular o evento) em que o número de evento em binário apareça em 8 LED. Contador de eventos (use uma chave para emular o evento) em que o número de evento em decimal apareça em 1 display de 7 segmentos. Cronômetro com mostrador de minutos e segundos. Sistema de verificação de senha via teclado numérico (keypad) 9x9. Se senha ok, LED on. Se senha incorreta, LED off e ALARME. Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 66