Sistemas Embarcados: Microcontroladores Prof. Protásio Laboratório de Microengenharia/DEE/CEAR/UFPB Fundamentos de microcontroladores V1max 1 ▪ Bit (Binary digit) V1min ▪ Zero lógico (Ø) e Um lógico (1) 0V e 5V ou 3,3V Ø ▪ Byte ▪ Conjunto de 8 bits que representa valores entre 00H (=010) à FFH (=25510) ▪ Registrador ▪ Conjunto de células de memória (geralmente, flip-flop do tipo D) interligados a fim de formar um só conjunto de dados FF D Q D0 D1 D2 D3 D4 D5 D6 D7 CK Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 2 V0max 0V 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 A: Acumulador R/M R/M R/M A Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB Datapath 1 A Datapath 2 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 E8H Program Counter : 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 : CPU Banco de Registradores R7 ULA Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB UC 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 A R0 R1 : CY AC OV P R7 CY: carry flag AC: auxiliar carry OV: overflow flag P: parity 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. ULA Parity bit. Se o valor armazenado no acumulador for par então P = 1, caso contrário P = 0. 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 Fundamentos de microcontroladores ▪ Microcontrolador DAC CLOCK Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB COUNTER PWM CPU RAM ROM EEPROM ADC PORT ▪ Dispositivo que incorpora uma CPU, unidades de memória e dispositivos periféricos integrados em um mesmo chip. 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 REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) Endereçamento indireto Endereçamento direto 80H 7FH 30H 2FH 128 BYTES DE RAM INFERIOR Endereçamento Direto e Indireto 80H Endereçável por bit 128 BYTES DE RAM INFERIOR Endereçamento Direto e Indireto 20H 1FH Registradores de Propósito Geral 00H 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 REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) Endereçamento indireto Endereçamento direto 80H 7FH MOV A,33H Move o conteúdo do endereço 33h para o acumulador 80H MOV A, @R0 Move o conteúdo do endereço contido no registrador R0 para o acumulador 30H 2FH Endereçável por bit 20H 1FH Registradores de Propósito Geral 00H Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB OBS: endereçamento imediato MOV A, #2 Move o valor 2 para o acumulador O valor 2 está na memória de programa 27 Mapa de memória de dados do 8051 FFH FFH Endereçamento indireto Endereçamento direto PSW: Program Status Word REGISTER 1F 80H 7FH BANCO 3 80H 18 17 BANCO 2 10 0F 30H 2FH BANCO 1 Endereçável por bit 20H 1FH 08 07 BANCO 0 Registradores de Propósito Geral 00H Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 00 R7 R6 R5 R4 R3 R2 R1 R0 R7 R6 R5 R4 R3 R2 R1 R0 R7 R6 R5 R4 R3 R2 R1 R0 R7 R6 R5 R4 R3 R2 R1 R0 RS0 (PSW.3) REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) RS1 (PSW.4) 128 BYTES DE RAM SUPERIOR 0 0 0 1 1 0 1 1 28 Mapa de memória de dados do 8051 FFH FFH REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) 128 BYTES DE RAM SUPERIOR Endereçamento indireto 80H 7FH JNB 0x20.2, Address Endereçamento direto Pula para Address se o bit 20H.2 for 0 80H 27 30H 2FH 00 01 02 03 04 05 07 Endereçável por Bit Endereçável por bit 20H 1FH 20 00 01 02 03 04 05 07 Registradores de Propósito Geral 00H Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 29 REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) ▪ ACC ▪ Acumulador. As instruções específicas do acumulador referem-se a este simplesmente como A. ▪ MOV A, #100 ▪ A = 100 (em decimal) ▪B ▪ Registrador B ▪ Usado em operações de multiplicação e divisão. ▪ Pode ser usado para outras operações. ▪ MUL AB ▪ B:A = B × A Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 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 30 REGISTRADORES DE FUNÇÕES ESPECIAIS (SFR) ▪ PSW (Program Status Word) Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 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 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 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 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 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 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 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 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 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 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 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/ Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 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 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 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 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 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 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 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 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 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB 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 38 Mapa de memória de programa do 8051 0xFFFF 0xFFFF ROM Externa (até 64K) EA = 1 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) ROM (4K) 0x0023 0x001B 0x0013 0x000B 8 bytes 0x0003 0x0000 3 bytes PC = Contador de Programa 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 ****** ;**************************************** INICIO: ORG LJMP 0000H INICIO ORG CPL MOV DJNZ 0030H P2.0 R0,#50 R0,$ SJMP INICIO END ; Diretiva que informa ao montador o endereço da próxima instrução ; Pula para o endereço (rótulo) "INICIO" ; Complementa o estado do bit 0 da porta P2 ; Move o valor 50 em decimal para o registrador R0 ; Decrementa o valor em R0 e pula para "$"(mesmo endereço) se for ; diferente de zero ; Pula para o endereço "INICIO" ; 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 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB A linha verde indica “onde” está a simulação 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 R0,$ ▪ Loop 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: INICIO: LOOP: ORG LJMP 0000H INICIO ; Diretiva que informa ao montador o endereço da próxima instrução ; Pula para o endereço (rótulo) "INICIO" ORG CPL MOV MOV DJNZ DJNZ SJMP 0030H P2.0 R0,#250 R1,#250 R0,$ R1,LOOP INICIO ; Complementa o estado do bit 0 da porta P2 ; Move o valor 250 em decimal para o registrador R0 ; Move o valor 250 em decimal para o registrador R1 ; Decrementa o valor em R0 e pula para LOOP se for diferente de zero ; Decrementa o valor em R1 e pula para LOOP se for diferente de zero ; 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 Prof. Protásio / Laboratório de Microengenharia/DEE/CEAR/UFPB Exemplos - 00 indica que campo de dados (instruções) - 01 indica fim de arquivo. Em geral, o endereço especificado é 0000 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