s - Voltar
Transcrição
s - Voltar
Curso de Microcontroladores Família MCS51® - Hardware e Software 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 1 Tópicos a serem estudados 1. Introdução • Retrospectiva 2. Apresentação da Família de Microcntroladores-MCS51 [Algumas variações: 89S5131-44pinos; 89C51-40pinos; 89C1051; 89C2051 e 89C4051-20pinos] 1. Características 2. Pinagem 3. Arquitetura 3. Descrição de hardware e Software 1. Portas de E/S - [I/O] 2. Organização de memória/Set de Instruções/Programação Estruturada 3. Barramento de Expansão 4. Sistema de interrupções/Programação da Interrupção 5. Timer/Counter - Programação 6. Outras Características/Programação/Informações Extras 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 2 Microcontroladores - Família-MCS51® Introdução 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 3 Microcontrolador - Família-MCS51® - Introdução • 1976 - Família MCS - 48 • Início da tecnologia de microcontroladores; • Microcontroladores 8048, 8748 e 8035; • Orientada para aplicações de controle. • Anos 80 – Família MCS- 51 • Família 8048 estendida; • Microcontroladores 8051, 8751 e 8031; • Maior performance sobre a MCS®- 48. • Na atualidade: Família MCS- 51 CHMOS • • • • 03/09/2012 80C51 Compatível com o original 8051; Microcontroladores 80C51, 87C51, 89C51 e 80C31 Modos de controle para redução de potência.; Referenciada como 80C51. Prof. Corradi - www.corradi.junior.nom.br 4 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br Características; Pinagem; Arquitetura. Apresentação: Microcontrolador - Família-MCS51® 5 Apresentação do 80C51- Características Básicas • • • • • • • • • • • • • • • Memória interna de programa (ROM) de 4KB, ou mais dependendo da versão do chip - [40 pinos] e 1KB a 4KB - [20 pinos]; Memória interna de dados (RAM) de 128 bytes, mais 128 bytes de registradores especiais [SFR] = 80C51. No 80C52 temos mais 128 bytes; 32 linhas de E/S - [I/O], para 40 pinos e 15 I/O para 20 pinos; 2 contadores/temporizadores de 16 bits - [ podendo chegar até 3 C/T para outras versões]; 5 fontes de interrupções - [ podendo chegar até 11 para outras versões]; Porta serial programável, [ possui outras formas de comunicação serial: CAN, I2C, USB]; Espaço de memória de programa externa até 64KB, [expansão usando P0 e P2]; Espaço de memória de dados externa até 64KB, [expansão usando P0 e P2]; Níveis lógicos CMOS compatíveis com TTL; 2 Modos para redução de potência: Power Down e Idle Oscilador interno; Velocidade de 4 MHz a 50 MHz; Disponível nas versões: Flash (reprogrammable), Flash ISP (In-System Programmable, Flash ISP - Single Cycle Core, Lighing MCUs, MP3 Reader MCUs, OTP (One-Time Programmable), ROM, EPROM. EEPROM, ROMless, Smart Card Reader MCUs e USB MCUs; Disponível nos encapsulamentos DIP e PLCC; Processador booleano. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 6 Apresentação do 80C51 - Pinagem Vcc – Tensão de alimentação do chip, 5V ± 10%, Pino 40. Aspecto Vss – Terra do circuito, Pino 20. Rst – Entrada de “reset” do chip. É ativo em nível lógico 1. XTAL1 e XTAL2 respectivamente, do Pinos 18 e 19. P0.0 P1.0 P2.0 P3.0 a a a a P0.7 P1.7 P2.7 P3.7 -Porta -Porta -Porta -Porta Entrada e saída, oscilador interno, 0, Pinos 39 a 32; 1, Pinos 1 a 8; 2, Pinos 21 a 28; 3, Pinos 10 a 17; PSEN – Pulso de leitura para memória de programa externa, pino 29; 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 7 Apresentação do 80C51 - Pinagem ALE/Prog – Dupla função, pino30. o ALE - Saída do pulso de habilitação para o armazenamento no latch externo do byte de endereço de baixa ordem, durante acessos à memória externa (Address Latch Enable); o PROG – Entrada para o pulso programação da EPROM (Pino 30); de EA/Vpp – Dupla função, pino 31. o EA – Entrada que Permite selecionar memória de programa interna ou externa (4KB): EA=1: Memória de programa interna; EA=0: Memória de programa externa. o Vpp – Entrada p/ Tensão de alimentação durante a programação da EPROM (12,75V); 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 8 Apresentação do 80C51 – Arquitetura Básica Interrupções Interrupções internas externas IE Memória de Memória de Programa Controle de Interrupção IP TCON Dados (256 bytes RAM) (4KB) TMOD TH0 TL0 C/T 0 – 16 bits T0 TH1 TL1 C/T 1 – 16 bits T1 CPU ULA - 8 bits Registros associados ( A,B, PSW, SP e PC ) P C O N Latch P0 Controle de barramento Oscilador Latch P1 Latch P2 Latch P3 Portas de E/S (32 linhas) PSEN ALE Memória RD SBUF - Tx SBUF - Rx Porta Serial WR P0 P2 BARRAMENTO DADOS\ENDEREÇOS 03/09/2012 S C O N P1 P3 TXD RXD FUNÇOES SECUNDÁRIAS Prof. Corradi - www.corradi.junior.nom.br 9 Apresentação do 80C51 - Arquitetura •Mais Detalhes 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 10 Apresentação do 80C51 - Arquitetura 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 11 Apresentação do 80C51 - Arquitetura 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 12 Microcontrolador 80C51 Obs.: Atualmente as MCU’s mais utilizados são: - AT89CXXXXX [ATMEL] - P89CXXXXX [PHILIPS] Hardware: Portas de E/S - [I/O]; Organização de memória; Barramento de expansão; Sistema de Interrupções. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 13 Hardware do 80C51 Portas de E/S - [I/O] 1. Organização; 2. Função; 3. Estrutura básica dos bits. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 14 Hardware 80C51 – Portas de E/S [I/O] • Organização – O 80C51 possui 32 linhas de E/S organizadas como 4 portas paralelas bidirecionais de 8 bits e nomeadas da seguinte forma: P0, P1, P2 e P3; • Função – Funções básicas de E/S; – Função de barramento de endereços e de dados (P0 e P2); – Funções especiais associadas aos módulos internos do 80C51 (P3). 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 15 Hardware do 80C51 – Portas de E/S •O programador Processo de gravação Esquema elétrico 03/09/2012 8 0 C 5 1 Prof. Corradi - www.corradi.junior.nom.br 16 Hardware do 80C51 – Portas de E/S ESTRUTURA DOS BITS DAS PORTAS DE E/S Bit da Porta 0 Bit da Porta 2 B2 B2 B1 B1 Mais detalhes 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 17 Hardware do 80C51 – Portas de E/S ESTRUTURA DOS BITS DAS PORTAS DE E/S Bit da Porta 1 Bit da Porta 3 Saída alternativa B2 B2 B1 B1 Entrada alternativa 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 18 Hardware do 80C51 Organização de memória/Set de Instruções 1. Memória de programa; 2. Memória de dados: 03/09/2012 – 256 bytes de RAM; [128 bytes uso geral, mais 128 de SFR. – Área de registradores especiais [SFR - mais 128 bytes]. Prof. Corradi - www.corradi.junior.nom.br 19 Hardware do 80C51 – Organização de Memória ESTRUTURA DA MEMÓRIA DO 80C51 MEMÓRIA DE PROGRAMA 64KB PC ( 16 bits) Memória de program a externa MEMÓRIA DE DADOS Apenas implementado no 80C52 Upper Área de registros especiais 4096 EA=1 Interna EA=0 0000 Externa Memória RAM externa 255 255 128 127 64 KB Memória Interna (128) 128 Lawer 0 00 RD WR PSEN 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 20 Hardware do 80C51 – Organização de Memória 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 21 Hardware do 80C51 – Organização de Memória MEMÓRIA INTERNA DE DADOS (128 bytes de RAM) 7FH 255 (FFH) 128 (80H) Área de registradores de funções especiais Área de bytes endereçáveis Área de bit e byte endereçáveis Banco 3 127 (7FH) Memória de dados (RAM de 128 bytes) 17H 10H 0FH 0 30H 2FH Banco com 8 registradores R7 20H 1FH R6 18H R4 Banco 2 R5 R3 R2 R1 Banco 1 07H Banco 0 R0 07H 00H 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 22 Hardware do 80C51 – Organização de Memória 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 23 Hardware do 80C51 – Organização de Memória 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 24 Hardware do 80C51 – Organização de Memória 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 25 03/09/2012 Exemplo: AT89S8252 Prof. Corradi - www.corradi.junior.nom.br 26 Hardware do 80C51 – Organização de Memória Hardware do 80C51 – Organização de Memória •Mais detalhes 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 27 Hardware do 80C51 – Organização de Memória 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 28 Hardware do 80C51 – Organização de Memória ÁREA DE REGISTRADORES DE FUNÇÕES ESPECIAIS Registrador A: – Registro de 8 bits que armazena um operando fonte e também o resultado de uma operação; Registrador B: – Registro de 8 bits utilizados nas operações de multiplicação e divisão e também para propósitos gerais; Registrador PSW [Program Status Word]: – É a palavra de status do programa. Seus bits indicam quais as ocorrências na última operação lógica realizada. Permite selecionar o banco de registradores a ser acessado. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 29 Hardware do 80C51 – Organização de Memória ÁREA DE REGISTRADORES DE FUNÇÕES ESPECIAIS FORMATO DO REGISTRADOR PSW CY AC F0 BITS DE FLAGS RS1 RS0 OV - P BITS DE SELEÇÃO DOS BANCOS RS1 RS0 Banco selecionado Carry auxiliar 0 0 0 F0 Definido pelo usuário 0 1 1 OV overflow 1 0 2 P Paridade do Acumulador 1 1 3 CY Carry AC 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 30 Hardware do 80C51 – Organização de Memória ÁREA DE REGISTRADORES DE FUNÇÕES ESPECIAIS Registrador DPTR – É um registrador de 16 bits utilizado em endereçamento indireto na memória de programa e na memória de dados externa. Este registro é um concatenação dos registros DPH e DPL. Registrador das Portas de E/S [P0, P1, P2 e P3] – São posições da memória RAM [SFR] associadas a cada bit das portas de E/S. Apontador de Pilha – SP [STACK POINTER] – Registro de 8 bits que contém o endereço do último dado armazenado na pilha (stack) ou o endereço do próximo dado a ser retirado da pilha. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 31 Hardware do 80C51 - Após o RESET 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 32 MCS-51 – Introdução ao Software 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 33 Introdução a Linguagem Assembly •“Linguagem assembly” e “assembler” [ou COMPILADOR] são coisas diferentes. A primeira representa um conjunto de regras usadas para escrever um programa para um determinado microcontrolador e a outra, é um programa que “roda” em um computador pessoal que traduz a linguagem assembly para uma linguagem de zeros e uns e/ou um formato em hexadecimal [formato INTEL]. Um programa escrito em “zeros” e “uns” diz-se que está escrito em “linguagem de máquina”. • O formato de uma instrução normalmente é retangular dividido em campos de bits. • Cada campo pode assumir o valor: • Op-code [código de operação = Set de Instruções], (primeiro campo) • Valor de uma constante • Endereço de memória • Endereço/nome de um registrador 10001 op-code 03/09/2012 10000001 00001111 operando Prof. Corradi - www.corradi.junior.nom.br 34 Introdução a Linguagem Assembly • Mostrar • O formato da Instrução - Formato INTEL® FONTE DESTINO op-code operando DESTINO op-code 03/09/2012 FONTE FONTE operando Prof. Corradi - www.corradi.junior.nom.br 35 Introdução a Linguagem Assembly •Rn - Registrador R0 – R7 do banco de registradores selecionado. •direto - 8-bits de endereço da posição da RAM de dados interna. Podem ser referentes tanto à RAM interna (0–7F) como ao espaço SFR (80 - FF). •@Ri - 8-bits da RAM interna de dados (00 - FF) endereçada indiretamente através de R0 ou R1 do banco de registradores selecionado. •#dado - valor de 8-bits contida na instrução. •#dado16 - valor de 16-bits contida na instrução. •addr16 - Endereço de destino em 16-bits. Usado pelas instruções LCALL e LJMP, podendo acessar toda a memória. •addr11 - Endereço de destino em 11-bits. Usado pelas instruções ACALL e AJMP, podendo acessar 2Kb de distância da instrução usada. •rel - Endereço relativo em 8-bits. Pode alcançar uma distância de -128 a +127 bytes de distância da instrução seguinte à instrução usada. Note que o valor negativo deve ser obtido por complemento de dois. •bit - Endereço direto do bit. Pode acessar a RAM interna e o espaço SFR. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 36 Introdução a Linguagem Assembly O Assembly e os Modos de endereçamento – Linguagem Assembly • Estrutura e sintaxe: Set de Instrução op-code 03/09/2012 DESTINO FONTE operando Prof. Corradi - www.corradi.junior.nom.br 37 Introdução a Linguagem Assembly O rótulo deve ser finalizado com dois pontos 03/09/2012 Os operandos devem ser separados por virgula O comentário deve ser precedido por ponto e virgula Prof. Corradi - www.corradi.junior.nom.br 38 Modos de Endereçamento da família MCS51® • Tipos de Endereçamento – Modo direto: MOV A,30h ⇒ (A) ← (30h) – Modo indireto: MOV R0,#10h ⇒ (R0) ← 10h MOV @R0,#20h ⇒ (10h) ← 20h – Modo Registrador: MOV A,Rn ⇒ (A) ← (Rn) – Modo Específico a Registrador: RL A ⇒ Rotaciona á esquerda MUL AB ⇒ A = LSB B = MSB – Modo imediato: MOV B,#0Fh ⇒ (B) ← 0Fh – Modo endereçamento á memória (MP) e (MD): MOVC A,@A+DPTR MOVX @DPTR,A 03/09/2012 [MOVC = MOVE CODE] [MOVX = MOVE EXTERNAL] Prof. Corradi - www.corradi.junior.nom.br 39 Exemplo 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 40 Exemplos de rotações 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 41 Set de Instruções da família MCS51® 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 42 Software do 80C51 - Algoritmo / Fluxograma 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 43 Software do 80C51 - Fluxograma •SIMBOLOGIA BÁSICA PARA CONSTRUÇÃO DE DIAGRAMA DE BLOCOS (Fluxograma) 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 44 Software do 80C51 - Fluxograma 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 45 Software do 80C51 - Fluxograma [exemplo] 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 46 Codificação Assembly do 8051 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 47 Codificação Assembly do 8051 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 48 Codificação Assembly do 8051 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 49 Codificação Assembly do 8051 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 50 Codificação Assembly do 8051 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 51 Codificação Assembly do 8051 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 52 Modos de Endereçamento do 8051 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 53 Modos de Endereçamento do 8051 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 54 Modos de Endereçamento do 8051 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 55 Modos de Endereçamento do 8051 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 56 Modos de Endereçamento do 8051 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 57 Modos de Endereçamento do 8051 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 58 Modos de Endereçamento do 8051 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 59 Exemplo de Programação - Assembly para o 80C51 Situação Problema: Acionar um LED – Conforme Hardware abaixo • Criar o Algoritmo e o fluxograma – (Solução do Problema) • Que tipo de movimento podemos utilizar? • Resposta: Movimento de bit uso do flag – carry [cy ou apenas c] • Proposta – Ao acionarmos a chave SW1 o LED1 deve acender e ao acionarmos SW1 novamente o LED1 deve apagar. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 60 Software do 80C51 - Fluxograma e Algoritmo Acionamento do LED através de uma chave retentiva Definição das Variáveis: SW1 = P1.0 LED = P1.2 Movimento de dados; utilizando o flag carry [c]. Mover SW1 para carry Mover o conteúdo do carry para LED Nome do programa SW1 equ p1.0 equ p1.2 Led Volta: mov c,SW1 mov led,c jmp volta end 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 61 Exemplo 02 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 62 Mnemônicos (Programa Assembly) 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 63 Mnemônicos (Programa Assembly) 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 64 Solução no uVision [editor de Assembly] 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 65 Exercício de aplicação Baseado no sistema mínimo acima desenvolver um programa em Assembly para comutar o LED toda vez que o botão SW2 for acionado. Ao ligar o circuito pela primeira vez o LED deve estar apagado [desligado]. - 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 66 Exemplo de Programação - Assembly para o 80C51 Exemplo 02- uso de sub-rotina Executando o programa acima, obtemos o seguinte efeito: 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 67 Estruturas de Programação Decisões: • Desviam o fluxo de execução do programa conforme determinada condição for verdadeira ou falsa (IF - ELSE) Repetições: • Permitem a repetição de um conjunto de ações (loop) enquanto determinada condição for verdadeira ou falsa (FOR, WHILE, DO - WHILE) 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 68 Exemplo: Estrutura de decisão CLR C SUBB A, R0 JZ IGUAL JC MAIOR ;faz carry=0 ;subtrai R0 de A ;se R0=A salta para IGUAL ;se R0>A salta para MAIOR MOV R1, #01 SJMP FIM ;sinaliza em R1 que R0<A MOV R1, #02 SJMP FIM ;sinaliza em R1 que R0>A MOV R1, #00 ;sinaliza em R1 que R0=A ;segue em frente MENOR: MAIOR: IGUAL: FIM: 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 69 Exemplo: Estrutura de repetição MOV R0, #16 LOOP1: DJNZ R0, LOOP1 MOV A, #20H LOOP2: DEC A JNZ LOOP2 03/09/2012 ;repetições = 16 ;seqüência de instruções ;repete se R0! = 0 ;repetições = 32 ;seqüência de instruções ;repete se A! = 0 Prof. Corradi - www.corradi.junior.nom.br 70 Tdecorrido 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br Obs.: As linhas de programas acima são sub-rotinas, assim é necessário serem finalizadas com RET e serem solicitadas com CALL. MOV R1,#kte2 (1 CM) DJNZ R1,$ (2 CM) DJNZ R0,Kte (2 CM) RET (2 CM) MOV R0,#Kte1 (1 CM) 12 * (3 + 2 * kte) = Fcristal 71 12 *{3 + [kte1 (3 + 2 * kte2 )]} = Fcristal Tdecorrido Utilizando dois registradores (16 bits) MOV R0,#kte (1 CM) DJNZ R0,$ (2 CM) RET (2 CM) Utilizando um único registrador (8 bits) Kte: • • Sub-rotinas de tempo sem o uso de TIMER/COUNTER DJNZ MOV DJNZ MOV DJNZ RET 03/09/2012 72 ;(2µs) – (2µs x 255 x 255 x 7) = 0.91 seg ;(1µs) – ( 1µs x 255 x 7) = 1.7ms ;(2µs) – (2µs x 255 x 7) = 3.57ms ;(1µs) – (1µs x 7) = 7µs ;(2µs) – (2µs x 7) = 14µs ;(2µs) ;(1µs) ;(1µs) ;(1µs) Prof. Corradi - www.corradi.junior.nom.br R5,SALTO1 R5,#255 R6,SALTO1 R6,#255 R7,SALTO1 MOV R5,#255 MOV R6,#255 MOV R7,#7 Total: 0.92 segundos. SALTO1: TEMPO_1S: ; As instruções do 8051 levam 1µs para serem executadas, porém algumas ;instruções de desvio como a DJNZ são executadas em 2µs. ; Sub-rotina de tempo de 1 segundo Exemplo de uma sub-rotina de 1s Exemplo de Sub-rotina de tempo para 24 Bits Tempo: Cálculo do tempo: mov R0,#kte1 tt0: mov R1,#kte2 tt1: mov R2,#kte3 Cálculo de kte3 para um determinado atraso. djnz R2,$ Se usarmos: fxtal = 12 MHz, kte1 = 255 e kte2 = 255; kte3 poderá ser calculada por: djnz R1,tt1 djnz R0,tt0 ret 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 73 Hardware do 80C51 Barramento de expansão 1. Expansão de memória de programa; 2. Expansão de memória de dados. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 74 Hardware do 80C51 – Barramento de Expansão PORTA 0 PORTA 2 ALE AD0 – AD7: Dados e parte baixa do endereço A15 - A8: Parte alta do endereço ALE: Separação de endereços/dados 80C51 P3.7 P3.6 PSEN 03/09/2012 RD: Pulso de leitura para memória externa de dados WR: Pulso de escrita para memória externa de dados PSEN: Habilitação de leitura para memória externa de programa Prof. Corradi - www.corradi.junior.nom.br 75 Hardware do 80C51 – Barramento de Expansão EXPANSÃO DE MEMÓRIA DE PROGRAMA - Espaço de endereçamento de 64Kb; - Espaço completo (64 Kbytes) é endereçável indiretamente via registrador de 16 bits PC ou DPTR; 80C51 A8 – A15 PORTA 2 ROM/EPROM ALE AD7-AD0 PORTA 0 Armazena endereço (A0 – A7) A7-A0 D7 - D0 PSEN 03/09/2012 Endereço Dados OE Prof. Corradi - www.corradi.junior.nom.br 76 Hardware do 80C51 – Barramento de Expansão CICLO DE LEITURA DA MEMÓRIA DE PROGRAMA Ciclo de leitura = 6 períodos de clock XTAL 1 2 3 4 5 2 1 6 3 4 5 6 1 2 3 4 5 1 6 ALE PSEN DADOS P0 P2 03/09/2012 PCL1 1 PCH1 FLOAT DADOS PCL2 2 DADOS PCL3 PCH2 Prof. Corradi - www.corradi.junior.nom.br 3 PCH3 77 Hardware do 80C51 – Barramento de Expansão EXPANSÃO DE MEMÓRIA DE DADOS - Espaço de endereçamento de 64Kb; - Memória endereçável via registradores de 8 bits (R0 e R1): - - Segmentos de 256 bytes; Técnica de paginação de memória Espaço completo (64 Kbytes) é endereçável indiretamente via registrador de 16 bits (DPTR); Bits de páginas 80C51 Página (P2) RAM I/O PORTA 2 ENDEREÇOS endereços ALE PORTA 0 Armazena endereço (A0 – A7) Dados dados WR WR RD OE 03/09/2012 8 bits em P0 0 0 0 00 - FFH 0 0 1 00 - FFH 0 1 0 00 - FFH 0 1 1 00 - FFH 1 0 0 00 - FFH 1 0 1 00 - FFH 1 1 0 00 - FFH 1 1 1 00 - FFH Prof. Corradi - www.corradi.junior.nom.br 78 Hardware do 80C51 – Barramento de Expansão CICLO DE LEITURA NA MEMÓRIA DE DADOS Ciclo de leitura = 12 períodos de clock XTAL 1 2 3 4 5 6 8 7 9 10 11 12 1 2 3 4 5 6 ALE RD P0 Se o próximo acesso for na memória de programa externa DPL OU RI FLOAT DADOS P2 DPH 03/09/2012 OU SFR DE P2 FLOAT PCL PCH Prof. Corradi - www.corradi.junior.nom.br 79 Hardware do 80C51 – Barramento de Expansão CICLO DE ESCRITA NA MEMÓRIA DE DADOS Ciclo de leitura = 12 períodos de clock XTAL 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 ALE WR P0 Se a próximo acesso for na memória de programa externa DPL OU RI DADOS PCL P2 DPH 03/09/2012 OU SFR DE P2 Prof. Corradi - www.corradi.junior.nom.br PCH 80 Hardware do 80C51 Sistema de Interrupções 1. 2. 3. 4. 03/09/2012 Descrição geral; Regras para atendimento das interrupções; Vetores de endereços das rotinas; Registradores especiais. Prof. Corradi - www.corradi.junior.nom.br 81 Hardware do 80C51 – Interrupções O SISTEMA DE INTERRUPÇÃO DO 80C51 • 5 fontes de interrupções: • 2 interrupções externas – /INT0 e /INT1 • 3 interrupções internas (TF0, TF1 e TI/RI, originadas dos módulos contador 0, contador 1 e módulo serial, respectivamente). • 2 níveis de atendimento: • Alta prioridade; • Baixa prioridade. • 3 registros de funções especiais para controle das interrupções: • IE – Habilitação das interrupções; • IP – Seleção de prioridade; • TCON – 4 bits LSB para configuração da interrupções externas. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 82 Hardware do 80C51 – Interrupções Obs. No software com interrupção, o instante de ocorrência da interrupção não é previsto, isto é, ela é assíncrona e depende de um evento externo. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 83 Hardware do 80C51 – Interrupções • Não Vetorada -> dispositivo que o interrompe envia o endereço de desvio. • Vetorada -> endereço fixo de desvio. • Mascaramento -> propriedade do uC em permitir que um dispositivo interrompa-o. • Prioridade -> podemos programar a prioridade da interrupção para evitar conflitos. • Origem -> Interna e Externa • Tipo de disparo -> por nível ou por borda 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 84 Hardware do 80C51 – Interrupções REGRAS DE ATENDIMENTO DAS INTERRUPÇÕES • Interrupções são atendidas de modo que, uma interrupção de baixa prioridade possa ser interrompida por uma de alta prioridade; • Quando duas interrupções de mesma prioridade ocorrem simultaneamente, o 80C51 realiza uma varredura para selecionar a interrupção a ser atendida, obedecendo a seqüência: 03/09/2012 Prioridade Fonte Função Mais alta INT0 Interrupção externa 0 TF0 Interrupção do contador 0 INT1 Interrupção externa 1 TF1 Interrupção do contador 1 TI/RI Interrupção da porta serial Prof. Corradi - www.corradi.junior.nom.br 85 Hardware do 80C51 – Interrupções VETOR DE ENDEREÇO DAS INTERRUPÇÕES • Cada interrupção está associada a um endereço na memória de programa, que marca o início da rotina de serviço de interrupção. Memória de programa ~ 002BH 0023H Endereços das rotinas de tratamento de interrupção 001BH 0013H ~ Porta serial Contador 1 Interrupção externa 1 Contador 0 000BH 8 bytes 0003H reset 03/09/2012 Rotinas de tratamento das interrupções Interrupção externa 0 Obs. Estes endereços são relativos à ROM/EPROM/FLASH do uC. Logo, se utilizarmos estas interrupções devemos deixar estes locais reservados. Se gravarmos um software neste locais e ocorrer uma interrupção o sistema se perde. 0000H Prof. Corradi - www.corradi.junior.nom.br 86 Hardware do 80C51 – Interrupções Ilustração do processo de Interrupção [Vetorada] 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 87 Hardware do 80C51 – Interrupções Obs.: O espaço 0003H à 0012H deve ser suficiente para criar o software de ‘serviço de interrupção’ caso contrário deve se a partir do endereço inicial 0003H criar uma instrução desvio para outro local da MP que permita gravar todo o software e finalizar com a instrução RETI. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 88 Hardware do 80C51 – Interrupções [exemplo] 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 89 Hardware do 80C51 – Interrupções REGISTROS ESPECIAIS DO SISTEMA DE INTERRUPÇÃO REGISTRADOR IE Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 EA - - ES ET1 EX1 ET0 EX0 Símbolo Função Estado do bit Hab/desab. EA Habilitação global da Interrupções 1 Habilitada ES Hab/Desab. interrupção da porta serial 0 Desabilitada ET1 Hab/Desab. interrupção do Contador 1 EX1 Hab/Desab. interrupção externa 1 ET0 Hab/Desab. interrupção do Contador 0 EX0 Hab/Desab. interrupção externa 0 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 90 Hardware do 80C51 – Interrupções REGISTROS ESPECIAIS DO SISTEMA DE INTERRUPÇÃO REGISTRADOR IP Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - - - PS PT1 PX1 PT0 PX0 Símbolo Função PS Define prioridade de interrupção da porta serial PT1 Define prioridade de interrupção do Contador 1 PX1 Define prioridade de interrupção externa 1 PT0 Define prioridade de interrupção do Contador 0 PX0 Define prioridade de interrupção externa 0 03/09/2012 Estado do bit Prioridade 1 Alta 0 baixa Prof. Corradi - www.corradi.junior.nom.br 91 Hardware do 80C51 – Interrupções REGISTROS ESPECIAIS DO SISTEMA DE INTERRUPÇÃO REGISTRADOR TCON Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 SÍMBOLO 03/09/2012 FUNÇÃO IT0 0 1 IT1 0 1 IE0 1 0 Sinaliza um pedido de interrupção em INT 0. Após atendimento de INT 0. IE1 1 0 Sinaliza um pedido de interrupção em INT 1. Após atendimento de INT 1 INT 0 é ativa pelo nível INT 0 ativa pela transição DE 1 → 0 INT 1 é ativa pelo nível INT 1 ativa pela transição DE 1 → 0 Prof. Corradi - www.corradi.junior.nom.br 92 Hardware do 80C51 – Interrupções ESQUEMA DE INTERRUPÇÕES DO 80C51 BIT DE TCON INT0 0 IT0 1 IE IP Prioridade ALTA IE0 BAIXA TF0 INT1 0 1 IT1 IE1 TF1 RI TX •Mais detalhes 03/09/2012 HABILITAÇÃO INDIVIDUAL HABILITAÇÃO GLOBAL Prof. Corradi - www.corradi.junior.nom.br 93 Software do 80C51 - Exemplo - Programa com Interrupção externa • Fluxograma a nível de conceito para um programa de teste de uma Interrupção 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 94 Software do 80C51 - Resolução 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 95 Timer/Counter • Modos de Trabalho do Timer/Counter – – – – Modo Modo Modo Modo 0 = Contador com capacidade máxima de 13 bits 1 = Contador com capacidade máxima de 16 bits 2 = Contador com capacidade de 8 bits “auto-reload” 3 = Contador de 8 bits/duplo temporizador • Como programar o Timer/Counter (timer0 e timer1) – Exercício: Programar os Timer/Counters para: • 1- Timer/Counter 0 para contagem de 50ms • 2- Timer/Counter 1 para contagem de 50us com “autoreload” 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 96 Prof. Corradi - www.corradi.junior.nom.br Obs.: Cristal de 12Mhz (pulso de 1us) F = CLK/12.N N = CLK/12.F Podemos usar o Modo 0? 03/09/2012 • Resolução 97 Programação dos Modos • • TMOD = Timer mode – End. (89h) TCON = Timer control – End. (88h) • TR1 e TR0 : Flag de liga/desliga (TRx) – TRx = 1 liga – TRx = 0 desliga TF1 e TF0 : flag de indicação de “estouro” de contagem (“overflow”) – TFx = 1 overflow do contador – TFx = 0 contador sem overflow • 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 98 03/09/2012 ESPERA: Prof. Corradi - www.corradi.junior.nom.br JNB TF0,ESPERA CLR TR0 END MOV TMOD,#01H MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000) SETB TR0 Como programar no Modo 1 99 Gerar tempo de 1 segundo Obs. – 20 x 50 ms = 1000 ms = 1 s ORG 00h MOV TMOD,#01h ; C/T NO MODO 1 MOV R0,#20d ; CARREGO R0 COM VALOR 20 INI: VOLTA: MOV TH0,#HIGH(65535-50000) MOV TL0,#LOW(65535-50000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 DJNZ R0,VOLTA CPL P1.0 JMP INI END 03/09/2012 ; LIGA O TIMER 0 ; FICA EM LOOP ATÉ O TF0 ‘ESTUORAR’ ; DESLIGA CONTADOR ; LIMPA FLAG PARA PRÓXIMA ; CONTAGEM ; DECREMENTA R0, PASSANDO POR 20 ; VEZES NO TIMER DE 50 ms ; PULSA P1.0 ; RETORNA AO INÍCIO ; FIM DE PROGRAMAÇÃO Prof. Corradi - www.corradi.junior.nom.br 100 Outras características importantes em Microprocessadores/Microcontroladores • As versões CHMOS (89C51, 89S52, etc…) da família MCS51® possuem dois modos de controle de redução de potência de operação do chip . • 1. Modo Idle • 2. Modo Power Down 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 101 Registrador envolvido no IDLE • O Registrador (SFR) utilizado para o controle de potência é o PCON. PCON Não endereçável a Bit • IDL = 1 -> o oscilador funciona somente para as Interrupções e os Timers. • Não existe sinal de clock para a CPU. • O status da CPU é preservado: o SP, o PC, o PSW, o ACC e todos os outros registradores mantêm seus dados durante o tempo em que a CPU estiver em Modo Idle. • As Portas mantêm seus estados lógicos que tinham quando o Modo Idle foi ativado . 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 102 Existem 2 Modos de terminar o Modo Idle: 1. Ativação de uma Interrupção habilitada • • • • Zera automaticamente o bit IDL Atende a sub-rotina de Interrupção Ao executar o RETI entra novamente no Modo Idle Os Flags GF1 e GF2 podem ser utilizados para indicar se as interrupções ocorreram durante o modo normal de operação ou durante o Modo Idle 2. Reset de Hardware 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 103 Modo Power Down • • • • • • PD = 1 -> O oscilador pára. Todas as funções param. O conteúdo da RAM interna e dos SFRs se mantém. Neste Modo Vcc pode ser reduzido para até 2 Volts. A única forma de sair deste modo e através do reset de hardware . O consumo é da ordem de 10 uA. PD tem precedência sobre IDL 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 104 Outras características importantes em Microprocessadores/Microcontroladores Bits de Proteção (Lock Bits) • São Bits que permitem a proteção do código do usuário gravado em um Microcontrolador. • Para a família MCS51® existem 3 Bits de proteção que podem ser gravados durante a fase de programação do chip. • Uma vez programados, os Bits de Proteção só podem ser alterados através de uma operação de Chip Erase. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 105 Outras características importantes em Microprocessadores/Microcontroladores •Watchdog Timer • Dispositivo de temporização de Hardware que “Reseta” o Microcontrolador se o programa, devido a falhas, negar fornecer o serviço do “watchdog” (por exemplo, escrever em uma determinada posição de memória ou em determinado Bit). – Simples -> apenas Reseta o Micro – Complexo -> Salva informações de “debug” em mídias fixas. • A rotina de atendimento ao “Watchdog Timer” pode colocar o Microcontrolador em um “estado seguro” desligando motores, saídas de alta tensão, etc; até que a falha seja resolvida. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 106 Exemplo de Microcontrolador com Watchdog Timer implementado no chip. •DS80C320 fabricado pela Dallas Semiconductor (núcleo do 8051) • Quando o Watchdog é habilitado, o programa do usuário deve escrever em um determinado SFR regularmente permitindo ao Watchdog saber se o programa está executando corretamente. •Se o programa não realizar a escrita dentro de um determinado período de tempo, o Watchdog assume que o programa falhou e realiza um Reset ou uma Interrupção, dependendo da configuração. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 107 Programação de Microcontroladores •Microcontroladores com Memória de Programa Flash podem ser programados de 3 maneiras: 1. Programação Paralela (método Tradicional) -> Exige um dispositivo – Programador – O chip do Microcontrolador é programado separadamente. Única metodologia de programação para dispositivos com memória EPROM. 2. 3. In-System Programming (ISP) In Application Programming (IAP) •Retorna 03/09/2012 Programação In-Circuit •O Programador Prof. Corradi - www.corradi.junior.nom.br 108 Programação paralela do Microcontrolador 89S52 • Os endereços de cada linha do código deve ser fornecido através das portas P1 e P2 (P2.0 a P2.5). • Os dados (códigos do programa) devem entrar através da porta P0. • Os Pinos P2.6, P2.7, P3.6, P3.7 selecionam a operação: Apagar, Ler, Escrever, Gravar Lock Bit, etc… 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 109 In-System Programming (ISP) Processo no qual um Microcontrolador montado em uma placa de circuito impresso pode ser apagado ou programado com o código final do usuário sem removê-lo da placa. • Para a programação o Microcontrolador deve ser ligado no “Modo ISP” . • O Microcontrolador recebe comandos e dados através de um software localizado, por exemplo, em um PC. • Terminada a operação de ISP o dispositivo é reconfigurado para que possa operar normalmente. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 110 In-System Programming (ISP) • A programação “in-circuit” via ISP pode ser realizada através de canais seriais do Microcontrolador. • Os Microcontroladores que possuem a possibilidade de programação ISP têm um programa localizado na parte superior da Memória de Programa (BOOTROM) chamado de BOOT LOADER. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 111 In-System Programming (ISP) 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 112 In-System Programming (ISP) •SPI (Serial Peripheral Interface) é um duto padrão serial, síncrono, desenvolvido pela Motorola e utilizado por diversos fabricantes de Microcontroladores. • Os dispositivos se comunicam em uma relação Mestre/escravo onde o Mestre inicia a comunicação. •SCLK -> Clock gerado pelo Mestre •MOSI -> Master data Output, Slave data Input •MISO -> Master data Input, Slave data Output •SS -> Slave Select 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 113 In-System Programming (ISP) Em um esquema de múltiplos escravos, o Mestre deve gerar sinais separados de Slave Select (SS) para cada Escravo. • O SPI não tem um mecanismo de confirmação de dado recebido (acknowledgement). • O SPI é indicado para aplicações que transferem diretamente um cordão de Dados (Data Stream). • Razão de Transmissão do SPI = 1Mbps 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 114 Utilização do duto SPI do Microcontrolador 89S52 para programação “in-circuit”. • Durante a transferência dos dados o pino de RESET deve ficar em nível lógico 1. • Após a gravação, deve-se colocar o pino de RESET em zero para operação normal do chip. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 115 In Application Programming (IAP) • Algumas aplicações tem a necessidade de apagar ou reprogramar o código do programa sob controle da própria aplicação. Exemplo: • Armazenar informações de calibração “em vôo” • Carregar novas partes do código do programa “em vôo” • A capacidade de um Microcontrolador de apagar ou reprogramar o código do programa na aplicação do usuário (end-user) é conhecida como IAP. • Em geral, as rotinas do Boot Loader que realizam a programação no modo ISP, também são responsáveis pelo Modo IAP. • Não existe um Mestre para gravar o programa. A própria aplicação pode realizar a tarefa. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 116 Introdução ao Protocolo I2C As comunicações em bus I2C (Inter-Integrated Circuit) processam-se de dois circuitos. As designações e as funções atribuídas a esses circuitos são as seguintes: • SDA (Serial DAta Line):- serve de suporte à transmissão de dados e endereços. • SCL (Serial CLock line):- suporta a transmissão de sinais que garantem o sincronismo entre dispositivos (sinais de relógio). O bus é bidirecional - pois, os sinais transmitidos podem ter origem em qualquer dispositivo e a sua gestão pode ser partilhada por vários dispositivos que possuam a capacidade de gerar sinais de relógio e controlar processos de transferência de informação - masters; diz-se, por isso, que, no bus I2C, é adotada uma filosofia multimaster. No bus, podem ligar-se dispositivos de vários tipos, incluindo os que podem receber dados -receptores-, os que podem enviar dados -emissores- e os que podem desempenhar ambas as funções. Cada dispositivo é reconhecido, no bus, por um endereço. Em bus I2C, são permitidos ritmos de transmissão até 100Kbits/s, no modo standard, e até 400Kbits/s, no modo fast; este modo é suportado apenas por alguns dispositivos, que exibem características próprias, como o fato de possuírem supressores de ruído e blocos do tipo schimit trigger, nos circuitos de ligação aos pinos SCL e SDA. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 117 Introdução ao Protocolo I2C Dispositivos Ligados através de um BUS I2C Nas linhas SDA e SCL, inserem-se resistências de pull-up, viabilizando a ligação dos dispositivos, cujas saídas apresentam configurações do tipo open-drain ou open-collector. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 118 Introdução ao Protocolo I2C A transmissão ocorre da seguinte forma: Se o microcontrolador desencadear um processo de transferência de dados para qualquer dispositivo do bus, o mesmo toma o controle e lança o endereço do dispositivo no circuito SDA, envia os dados, gera os sinais de relógio inerentes ao processo, na linha SCL, e encarrega-se de sinalizar o fim do processo. Esta transmissão processa-se entre um master-emissor e um slave-receptor. O oposto ocorre quando um dos dispositivos solicita a transmissão de dados. Nos dispositivos, a informação sobre o estado de ocupação do bus é obtida com base na detecção de condições START -(S) e STOP -(P); o bus considera-se ocupado após a geração de uma condição START e só considera livre a detecção de uma condição STOP 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 119 Introdução ao Protocolo I2C A condição START é definida pela ocorrência de um flanco descendente na linha SDA, quando a linha SCL está no estado high; a condição STOP é definida pela ocorrência de um flanco ascendente na linha SDA, quando a linha SCL está no estado high. Só os masters podem impor estas condições no bus. 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 120 Introdução ao Protocolo I2C Para projetar sistemas que transmitam informações através de um bus I2C, é necessário conhecer as características de cada um dos dispositivos que se ligam ao bus (endereço, palavras de instrução, tensão de alimentação,...); esta informação, deve ser obtida em manuais de fabricantes dos dispositivos. Para obtenção de informações adicionais sobre o bus, recomenda-se a consulta do material disponibilizado pela PHILIPS e por outros fabricantes de microcontroladores; aí, existe informação detalhada sobre alguns processadores derivados do 8051, que - como o 83C751 e o 83C752 - apresentam características adequadas para operarem em bus I2C, pois possuem SFRs e pinos (com configuração do tipo open-drain) dedicados para este efeito 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 121 Exemplo de Interfacing para o 80C51 •External Memory •Hex Keypad •7-segment LED displays •8-bit ADC and DAC •8255 PPI 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 122 Interfaceamento com o Mundo! Display 7 Segmentos 8051 ADC DAC External address, data, & control buses Teclado RAM ROM Hex Memória Externa 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 123 External Memory 74HC138 A13 A14 A15 A B C O0 O1 O2 O3 O4 O5 O6 O7 E1 E2 E3 CS 8031 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 ALE P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 G D D D D D D D D 373 Q Q Q Q D Q Q Q A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 8K EPROM CS D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 8K RAM A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 WR OE RD PSEN (P3.6) (P3.7) WR RD EA 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 124 Hex Keypad row3 C D E F 8 9 A B 4 5 6 7 0 1 2 3 row2 R O W row1 row0 column 0 column 1 column 2 column 3 Column Key Pressed = row × 4 + column 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 125 4×4 Matrix Hex Keypad 8051 Column 3 Column 2 Column 1 Column 0 P1.7 P1.6 C D E F 8 9 A B 4 5 6 7 0 1 2 3 P1.5 P1.4 P1.3 Row 3 P1.2 P1.1 P1.0 Row 2 Row 1 Row 0 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 126 Scanning Algorithm #1 KSCAN: CALL JC CALL CALL RET ROWRD KSCAN COLRD CONVRT ; ; ; ; ; find which row has key-press No key pressed, scan again find which column has key-press convert key press to hex value return to calling program CLR MOV MOV JNB MOV JNB MOV JNB MOV JNB SETB C P1,#0F0H R0,#0 P1.0,GOBK1 R0,#1 P1.1, GOBK1 R0,#2 P1.2, GOBK1 R0,#3 P1.3, GOBK1 C ; ROWRD: ; ; ; ; ; ; ; ; ; ; make all column “0” and row “1” Is key-press in row 0? Yes, return Is key-press in row 1? Yes, return Is key-press in row 2? Yes, return Is key-press in row 3? Yes, return No key-press detected, return error (C=1) GOBK1: RET 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 127 Scanning Algorithm #2 COLRD: MOV P1,#0FH ; make all column “1” and row “0” MOV JNB MOV JNB MOV JNB MOV JNB JMP R1,#0 P1.4,GOBK2 R1,#1 P1.5,GOBK2 R1,#2 P1.6,GOBK2 R1,#3 P1.7,GOBK2 COLRD ; Is key-press in column 0? ; Yes, go back ; Is key-press in column 1? ; Yes, go back ; Is key-press in column 2? ; Yes, go back ; Is key-press in column 3? ; Yes, go back ; No key-press detected, keep reading GOBK2: RET ; ; multiply row by 4 and add product to column and exit with hex key-press in A. CONVRT: MOV B,#4 MOV A,R0 MUL AB ADD A,R1 RET 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 128 Debouncing for the key pressed KSCAN: MOV DEB: CALL JC DJNZ CALL CALL RET 03/09/2012 R2, #50 ROWRD KSCAN R2, DEB COLRD CONVRT ; debounce count ; find which row has key-press ; No key pressed, scan again ; Yes, repeat 50 times ; find which column has key-press ; convert key press to hex value ; return to calling program Prof. Corradi - www.corradi.junior.nom.br 129 Debouncing for the key pressed and released KSCAN: MOV DEB: CALL JC DJNZ CALL CALL KSCAN1: MOV DEB1: CALL JNC DJNZ RET 03/09/2012 R2, #50 ROWRD KSCAN R2, DEB COLRD CONVRT ; debounce count ; find which row has key-press ; No key pressed, scan again ; Yes, repeat 50 times ; find which column has key-press ; convert key press to hex value R2, #50 ROWRD KSCAN1 R2, DEB1 ; debounce count ; find which row has key-press ; No key released, scan again ; Yes, repeat 50 times ; return to calling program Prof. Corradi - www.corradi.junior.nom.br 130 CALL CONVRT Key Pressed = row × 4 + column A = R0 × 4 + R1 CONVRT: MOV MOV MUL ADD RET B,#4 A,R0 AB A,R1 (3,2) (1,1) (1,4) (1,1) (6,8) CONVRT: MOV RL RL ADD RET A,R0 A A A,R1 (1,1) (1,1) (1,1) (1,1) (4,4) 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 131 7-segment LED displays a f b g Common Anode → ‘0’ == ON Common Cathode → ‘1’ == ON c e d h Exemplo: ‘E’ h g f 03/09/2012 e d c b → 10000110 (CA) a Prof. Corradi - www.corradi.junior.nom.br 132 Interfacing to Two 7-segment LED VCC 8051 VCC Tr1 Tr2 a b c d e f g h a b c d e f g h 74LS07 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 LED 1 LED 2 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 133 Sample Program to display “HI” CHAR_H CHAR_I ; BEGIN: CLR MOV SETB CALL ; CLR MOV SETB CALL ; SJMP ; DELAY_25: …….. ; END 03/09/2012 EQU EQU 89H 0F9H P3.5 P1,#CHAR_H P3.4 DELAY_25 ; turn off LED2 ; display “H” on LED1 ; delay for 25 ms P3.4 P1,#CHAR_I P3.5 DELAY_25 ; turn off LED1 ; display “I” on LED2 ; delay for 25 ms BEGIN ; repeat displays Prof. Corradi - www.corradi.junior.nom.br 134 Sample Program (cont.) #1 DELAY_25: MOV LOOP2: MOV LOOP1: DJNZ DJNZ RET R1,#49 ; second-loop counter (1us) R0,#0FFH ; first-loop counter (1us) R0,LOOP1 R1,LOOP2 ; loop 255 times ; loop 49 times (2us) (2us) (2us) Total time = 1 + ( 2×255 + 2 + 1) × 49 + 2 = 25.1ms 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 135 Sample Program (cont.) #2 DELAY_25: MOV : MOV LOOP: DJNZ DJNZ RET R1,#49 R0,#0FFH ; second-loop counter ; first-loop counter (1us) (1us) R0,LOOP R1,LOOP ; loop 255 times ; loop 49 times (2us) (2us) (2us) Total time = 1 + 1 + ( 2×255 + 2) + (2 x 256 + 2) × 48 + 2 = 25.2ms 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 136 8-bit ADC and DAC Interfacing to 8-bit ADC +5V P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 8051 VCC Analogue input Vin(+) Vin(-) A. Gnd Vref/2 ADC0801 NC R CLK P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 03/09/2012 D0 D1 D2 D3 D4 D5 D6 D7 WR INTR 10 kΩ CLK IN RD CS 150 pF D. Gnd Prof. Corradi - www.corradi.junior.nom.br 137 ADC Sample Program ; An ADC conversion subroutine that gets a converted sample, ; places it in the R0 register and returns. CONVRT: MOV MOV ; START: CLR SETB ; JB ; MOV SETB RET 03/09/2012 P1,#0FFH P3,#0FFH ; make both Port 1 & Port 3 ; as input ports P3.0 P3.0 ; send start of conversion signal ; low-to-high to start conversion P3.1,$ ; wait for sample R0,P1 P3.1 ; get converted reading ; clear interrupt ; return to main program Prof. Corradi - www.corradi.junior.nom.br 138 Interfacing to 8-bit DAC +5V 1k Ω VCC P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 +5V D0 Vref(+) D1 1k Ω D2 Vref(-) D3 D4 1 D5 NC D6 MC1408L8 D7 8051 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 4.7k Ω COMP Io 15 pF GND - Vo + VEE LM301 -12V 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 139 8255 PPI Interfacing to 8255 03/09/2012 PA3 1 40 PA4 PA2 2 39 PA5 PA1 3 38 PA6 PA0 4 37 PA7 /RD 5 36 /WR /CS 6 35 RESET GND 7 34 D0 A1 8 33 D1 A0 9 32 D2 PC7 10 31 D3 PC6 11 30 D4 PC5 12 29 D5 PC4 13 28 D6 PC3 14 27 D7 PC2 15 26 Vcc PC1 16 25 PB7 PC0 17 24 PB6 PB0 18 23 PB5 PB1 19 22 PB4 PB2 20 21 PB3 8255 Prof. Corradi - www.corradi.junior.nom.br 140 Interfacing to 8255 (cont.) Memory IC 8051 Port 0 D0 – D7 74373 D Q G ALE Port 2 A8 – A15 D0-D7 Port A A0 – A7 A0 A1 /WR /RD Port B 8255 Port C 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 141 Aspecto DIP – 40 pinos 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 142 Aspecto DIP – 20 pinos 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 143 Aspecto PLCC Retorna 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 144 Aspecto de Montagem 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 145 Programador de baixo custo 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 146 Programador de baixo custo - ISP 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 147 Programador Comercial – Médio Custo 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 148 EXPANSÃO DE MEMÓRIA DE PROGRAMA +5VCC 0.1/50 4KB 31 SW1 40 EA 1/50 74373 P0.7 10K D-FF 9 RST D7 P0.0 P2.0 P2.2 20 D0 A0 A1 OE CK CE A11 OE ALE PSEN 18 03/09/2012 19 2732 With external program memory Prof. Corradi - www.corradi.junior.nom.br 149 EXPANSÃO DE MEMÓRIA DE DADOS +5VCC +5VCC 0.1/50 4KB 31 SW1 40 EA 1/50 74373 P0.7 D-FF P0.0 OE 9 RST 10K D0 A0 A1 D7 P2.0 P2.2 20 CK CE A11 OE ALE RD WR 18 03/09/2012 19 WE 6132 With external data memory Prof. Corradi - www.corradi.junior.nom.br 150 Procedimento Processo de comunicação •Retorna 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 152 Arquitetura P1.1 P1.0 P3.5 P3.4 T2EX T2 T1 T0 INT0 INT1 P3.2 P3.3 RAM 256 (8052, 8032) Timer 2 Timer 1 Interrupt Control Other Registers 128 (8051, 8031) ROM or EPROM 8K(8052, 8752) 4K(8051, 8751) 0K(8031, 8032) Timers Timer 0, 1 (8051, 8031) Timer 0,1,2 (8052, 8032) Timer 0 Serial port CPU Oscillator Bus Control sI/O Ports WR RD P3.6 P3.7 XTAL1 XTAL2 EA RSTALE PSEN P0 P1 P2 P3 (Address/Data) (Address) 03/09/2012 sSerial Port RxD P3.0 TxD P3.1 Prof. Corradi - www.corradi.junior.nom.br 153 Arquitetura RAM Addr. Register Vcc Vss P0.0 ~ P0.7 P2.0 ~ P2.7 Port 0 drivers Port 2 drivers Port 0 latch Port 2 latch RAM Acc TEMP1 ALU PSW Timing and Control OSC XTAL1 Buffer PCON SCON TMOD TCON T2CON TH0 TH1 TL0 TL2 RCAP2H TL1 TH2 SBUF IE IP RCAP2L Internal Serial Port and Timer Block PC Incrementer Program Counter Instruction Register PSEN ALE EA RST Program Address Register Stack Pointer TEMP2 B Register EPROM /ROM DPTR Port 1 latch Port 3 latch Port 1 drivers Port 3 drivers P1.0 ~ P1.7 P3.0 ~ P3.7 XTAL2 MCSMCS-51 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 154 155 Serial Port Timer Control 128× ×8 RAM Control PLA Control Engine Instruction Decoder P3 P2 P0 PORT 0 Vcc Vss P1 PORT 2 Driver PORT 3 PSEN ALE/PROG EA/VDD XTAL2 Control Register Bank 3 Register Bank 2 Register Bank 1 Register Bank 0 Driver OSC & Timing Circuitry XTAL1 Program Control PCH PCL 03/09/2012 Rotate Control Interrupt Control 4K× ×8 None (8031) ROM (8051) EPROM (8751) EEPROM (8951) P Acc B IP IE SBUF SCON TH1 TL1 TH0 TL0 TMOD TCON DPH DPL SP Program Memory Address Decoder F0 RS1 RS0 OV PORT 1 RAM Address Decoder Arquitetura Special Function Register Address Decoder CY AC Prof. Corradi - www.corradi.junior.nom.br ALU Parity Internal Data Memory Low 128 bytes 7FH FFH F0H F7 F6 F5 F4 F3 F2 F1 F0 B Direct and Indirect Addressing E0H 18H 17H 7F 77 6F 67 5F 57 4F 47 3F 37 2F 27 1F 17 0F 07 7E 76 6E 66 5E 56 4E 46 3E 36 2E 26 1E 16 0E 06 R7 R0 R7 10H R0 0FH R7 08H 07H R0 R7 00H R0 Byte Address 03/09/2012 7D 75 6D 65 5D 55 4D 45 3D 35 2D 25 1D 15 0D 05 7C 74 6C 64 5C 54 4C 44 3C 34 2C 24 1C 14 0C 04 7B 73 6B 63 5B 53 4B 43 3B 33 2B 23 1B 13 0B 03 Bank 3 Bank 2 Bank 1 Bank 0 7A 79 72 71 6A 69 62 61 5A 59 52 51 4A 49 42 41 3A 39 32 31 2A 29 22 21 1A 19 12 11 0A 09 02 01 FFH E7 E6 E5 E4 E3 E2 E1 E0 Acc 8052 only D0H D7 D6 D5 D4 D3 D2 D1 D0 PSW MOV 30H,A MOV @R0,A 2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 27H 26H 25H 24H 23H 22H 21H 20H 1FH High 128 bytes SFR ( Direct Addressing ) 78 70 68 60 58 50 48 40 38 30 28 20 18 10 08 00 8052 only 8052 only 8052 only 8052 only CDH CCH CBH CAH TH2 TL2 RCAP2H RCAP2L C8H CF CE CD CC CB CA C9 C8 T2CON (8052) B8H - B0H B7 B6 B5 B4 B3 B2 B1 B0 P3 A8H AF - - BC BB BA B9 B8 IPC A0H A7 A6 A5 A4 A3 A2 A1 A0 P2 99H 98H SBUF 9F 9E 9D 9C 9B 9A 99 98 SCON 90H 97 96 95 94 93 92 91 90 P1 8DH 8CH 8BH 8AH 89H 88H 8F 8E 8D 8C 8B 8A 89 88 87H 83H 82H 81H 80H Indirect Addressing Only - AD AC AB AA A9 A8 IEC DPH DPL 87 86 85 84 83 82 81 80 SP P0 Byte Address MOV @R0,A TH1 TH0 TL1 TL0 TMOD TCON PCON 80H Byte address Prof. Corradi - www.corradi.junior.nom.br 156 Configuração Interna - I/O Ports •Voltar 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 157 Mode 0 : (MCS-48 Timer - 13-bit Timer/Counter) 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 158 Mode 1 : ( 16-bit Timer/Counter) 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 159 Mode 2 : ( 8-bit Auto-reload Timer/Counter) 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 160 Mode 2 : ( 8-bit Auto-reload Timer/Counter) Retorna 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 161 Mode 3 :("Split" Timer) 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 162 (TCON.0, 88H) IT0 IP IE Interrupt Enable Interrupt Priority Register Register 0 (pin 12, INT0/P3.2) 1 IE0 INT0 0 EX0 1 PX0 (TCON.1, 89H) (IE.0, A8H) 1 TF0 (TCON.5, 8DH) Timer 0 Overflow Flag (TCON.2, 8AH) 0 ET0 PT0 (IE.1, A9H) IT1 0 (pin 13, INT1/P3.3) 1 0 EX1 PX1 (TCON.3, 8BH) (IE.2, AAH) (SCON.1, 99H) TI R1 (SCON.0, 98H) (T2CON.7, CFH) TF2 EXF2 (T2CON.6, CEH) (IP.2) (BAH) 1 TF1 (TCON.7, 8FH) Timer 1 Overflow Flag (IP.1) (B9H) 1 IE1 INT1 (IP.0) (B8H) 0 ET1 PT1 (IE.3, ABH) (IP.3) (BBH) 1 0 ES PS (IE.4, ACH) (IP.4) (BCH) 1 0 ET2 PT2 (IE.5, ADH) (IP.5) (BDH) EA (IE.7, AFH) 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br High Priority 0003H 000BH 0013H 001BH 0023H 002BH polling hardware 0003H 000BH 0013H 001BH 0023H 002BH polling hardware Low Priority 163 RST pino ( 9 ) – XTAL pino (18 e 19) +5V +5V 10µ µF MCS-51 + 9 1K RST 8.2K Reset no Microcontrolador 80C51 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 164 Internal Program & Data Memory +5V 31 EA 19 X1 18 X2 20pF 20pF 12MHz 9 RST +5V + 10µ µF 8,2K 03/09/2012 12 13 14 15 INT0 INT1 T0 T1 1 2 3 4 5 6 7 8 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 MCS-51 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 39 38 37 36 35 34 33 32 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 21 22 23 24 25 26 27 28 RD WR PSEN ALE TxD RxD 17 16 29 30 11 10 Prof. Corradi - www.corradi.junior.nom.br 165 External Program Memory 31 19 EA X1 20pF 18 X2 20pF 12MHz 9 + 10µ µF 1K 1 2 3 4 5 6 7 8 39 38 37 36 35 34 33 32 3 4 7 8 13 14 17 18 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 21 22 23 24 25 26 27 28 11 RD WR PSEN ALE TxD RxD 17 16 29 30 11 10 RST +5V 12 13 14 15 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 INT0 INT1 T0 T1 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 D0 D1 D2 D3 D4 D5 D6 D7 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 2 5 6 9 12 15 16 19 G OC 1 74LS373 10 9 8 7 6 5 4 3 25 24 21 23 2 26 27 1 20 22 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 O0 O1 O2 O3 O4 O5 O6 O7 11 12 13 15 16 17 18 19 CE OE 27512 64K EPROM MCS-51 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 166 External Data Memory +5V 31 19 EA X1 20pF 18 X2 20pF 12MHz 9 + 10µ µF 1K 1 2 3 4 5 6 7 8 39 38 37 36 35 34 33 32 3 4 7 8 13 14 17 18 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 21 22 23 24 25 26 27 28 11 RD WR PSEN ALE TxD RxD 17 16 29 30 11 10 RST +5V 12 13 14 15 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 INT0 INT1 T0 T1 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 D0 D1 D2 D3 D4 D5 D6 D7 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 2 5 6 9 12 15 16 19 G OC 1 74LS373 10 9 8 7 6 5 4 3 25 24 21 23 2 26 1 20 27 22 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 CS1 O0 O1 O2 O3 O4 O5 O6 O7 11 12 13 15 16 17 18 19 WE OE 62256 32K SRAM MCS-51 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 167 Compreenda o formato Intel-HEX Observe o exemplo abaixo escrito no formato ASM51 cseg at 8000h jmp main org 8100h main: clr a mov r7,#0 loop: mov a,r7 cpl a mov p1,a mov r6,#50h djnz r6,$ djnz r7,loop jmp $ end 03/09/2012 Após o código ter sido compilado (Assembrer), obtemos o Intel-HEX abaixo. :03800000028100FA :0F810000E47F00EFF4F5907E50DEFEDFF680FEA8 :00000001FF Verifique também o arquivo Listing (.lst). 8000 8000 028100 8100 8100 8101 8103 8104 8105 8107 8109 810B 810D E4 7F00 EF F4 F590 7E50 DEFE DFF6 80FE 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 cseg at 8000h jmp main org 8100h main: clr a mov r7,#0 loop: mov a,r7 cpl a mov p1,a mov r6,#50h djnz r6,$ djnz r7,loop jmp $ end Prof. Corradi - www.corradi.junior.nom.br • segue 168 Compreenda o formato Intel-HEX O ficheiro INTELHEX,é uma forma de representar um ficheiro binário em ASCII (representado em Hexadecimal) Podem existir 3 representações: • 8‐bit, para processadores de 8‐bit, com 16 bit de endereçamento • 16‐bit para processadores bit, de 16‐bit, com 20 bit de endereçamento segmentado • 32‐bit, para processadores, com espaço de endereçamento de 32 bit •• A representação hexadecimal do código é codificada em caracteres ASCII alfanuméricos. •• Assim o valor binário de 8 bit, 0011‐1111 é 3F em hexadecimal •• Esta representação precisa de 2 x mais que os bytes na representação binária •• A representação hexadecimal é agrupada em “records”, a salientar: – Data record (8‐, 16‐, 32‐ bit) – End Of File record (8‐, 16‐, 32‐ bit) • segue 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 169 Compreenda o formato Intel-HEX Agora estude o significado de cada campo no arquivo .HEX. • Retorna 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 170 Bloco de uma ROM ROM m+1 bit Address [Endereço] Capacidade : 2 m +1 A0 A1 D0 D1 A2 D2 Am 2m+1 × (n + 1) OE : Output Enable n+1 bit Data Dn ROM PROM EEPROM connect to RD of µP CE (CS ) 03/09/2012 : Chip Enable to Address decoder CE OE Prof. Corradi - www.corradi.junior.nom.br 171 Dispositivos U3 27XX EPROM U1 8 7 6 5 4 3 2 1 23 22 19 20 18 21 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 U2 O0 O1 O2 O3 O4 O5 O6 O7 9 10 11 13 14 15 16 17 OE CE VPP 8 7 6 5 4 3 2 1 23 22 19 21 20 18 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 O0 O1 O2 O3 O4 O5 O6 O7 9 10 11 13 14 15 16 17 OE/VPP CE 10 9 8 7 6 5 4 3 25 24 21 23 2 22 27 20 1 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 O0 O1 O2 O3 O4 O5 O6 O7 11 12 13 15 16 17 18 19 OE PGM CE VPP 2716 2732 2764 16 kbit 2 kbyte 32 kbit 4 kbyte 64 kbit 8 kbyte PGM and VPP are used to programming 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 172 Dispositivos 27XXX EPROM U7 U4 10 9 8 7 6 5 4 3 25 24 21 23 2 26 22 27 20 1 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 U6 U5 D0 D1 D2 D3 D4 D5 D6 D7 11 12 13 15 16 17 18 19 OE PGM CE VPP 10 9 8 7 6 5 4 3 25 24 21 23 2 26 27 22 20 1 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 D0 D1 D2 D3 D4 D5 D6 D7 11 12 13 15 16 17 18 19 10 9 8 7 6 5 4 3 25 24 21 23 2 26 27 1 OE CE 22 20 VPP 28 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 O0 O1 O2 O3 O4 O5 O6 O7 11 12 13 15 16 17 18 19 OE/VPP CE VCC 12 11 10 9 8 7 6 5 27 26 23 25 4 28 29 3 2 24 31 22 1 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16 D0 D1 D2 D3 D4 D5 D6 D7 13 14 15 17 18 19 20 21 OE PGM CE VPP 27128 27256 27512 27010 128 kbit 16 kbyte 256 kbit 32 kbyte 512 kbit 64 kbyte 1024 kbit 128 kbyte 03/09/2012 Prof. Corradi - www.corradi.junior.nom.br 173 Dispositivos 28XX E2PROM 8 7 6 5 4 3 2 1 23 22 19 20 21 18 24 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 I/O0 I/O1 I/O2 I/O3 I/O4 I/O5 I/O6 I/O7 9 10 11 13 14 15 16 17 10 9 8 7 6 5 4 3 25 24 21 23 2 OE WE CE 22 27 20 VCC 28 A0 I/O0 A1 I/O1 A2 I/O2 A3 I/O3 A4 I/O4 A5 I/O5 A6 I/O6 A7 I/O7 A8 A9 RDY/BUSY A10 A11 A12 11 12 13 15 16 17 18 19 1 10 9 8 7 6 5 4 3 25 24 21 23 2 26 1 22 27 20 OE WE CE VCC 28 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 D0 D1 D2 D3 D4 D5 D6 D7 11 12 13 15 16 17 18 19 OE WE CE VCC 12 11 10 9 8 7 6 5 27 26 23 25 4 28 29 3 2 24 31 22 32 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16 D0 D1 D2 D3 D4 D5 D6 D7 13 14 15 17 18 19 20 21 OE WE CE VCC 12 11 10 9 8 7 6 5 27 26 23 25 4 28 29 3 2 30 1 24 31 22 32 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16 A17 A18 D0 D1 D2 D3 D4 D5 D6 D7 13 14 15 17 18 19 20 21 OE WE CE VCC 2816 2864 28256 28010 28040 16 kbit 2 kbyte 64 kbit 8 kbyte 256 kbit 32 kbyte 1026 kbit 128 kbyte 4096 kbit 512 kbyte Prof. Corradi - www.corradi.junior.nom.br 174 03/09/2012 Dispositivos RAM(Static) m+1 bit Address Capacity : 2 m +1 A0 A1 D0 D1 A2 D2 Am 2m+1 × (n + 1) RAM n+1 bit Data Dn Data bus is Bidirectional RD : Read signal connect to MemRD of µP WR : Write signal connect to MemWR of µP CS : Chip Select to Address decoder 03/09/2012 CS WR RD Prof. Corradi - www.corradi.junior.nom.br 175 03/09/2012 Final da Apresentação 176