www.mackenzie.com.br APOSTILA LABORATÓRIO DE MICROPROCESSADORES APLICAÇÃO PRIMEIRO SEMESTRE - 2004 PROF. IVAIR REIS N. ABREU www.ivair.com.br APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO ÌNDICE PLANEJAMENTO DIDÁTICO PEDAGÓGICO 4 EXPERIÊNCIA 1 - REVISÃO ASM51/AVSIM51 5 EXPERIÊNCIA 2 - REVISÃO ASM51/AVSIM51 9 FOLHA DE RESPOSTAS – EXPERIÊNCIA 2 11 EXPERIÊNCIA 3 - REVISÃO CONJUNTO DE INSTRUÇÕES 8051 12 FOLHA DE RESPOSTAS – EXPERIÊNCIA 3 17 EXPERIÊNCIA 4 - KIT 8031 18 FOLHA DE RESPOSTAS – EXPERIÊNCIA 4 23 EXPERIÊNCIA 5 - ALARME COM O KIT 8031 / GRAVAÇÃO DE EPROM 24 FOLHA DE RESPOSTAS – EXPERIÊNCIA 5 26 EXPERIÊNCIA 6 - SISTEMA DE TEMPORIZAÇAO/INTERRUPÇÃO 8051 27 FOLHA DE RESPOSTAS – EXPERIÊNCIA 6 34 EXPERIÊNCIA 7 - TECLADO MATRICIAL 35 FOLHA DE RESPOSTAS – EXPERIÊNCIA 7 39 EXPERIÊNCIA 8 - COMUNICAÇÃO SERIAL 40 FOLHA DE RESPOSTAS – EXPERIÊNCIA 8 43 EXPERIÊNCIA 9 - CONVERSOR A/D 8 BITS 44 2 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO FOLHA DE RESPOSTAS – EXPERIÊNCIA 9 48 EXPERIÊNCIA 10 - PROJETO COMPLETO 49 EXPERIÊNCIA 11 - INTRODUÇÃO AO START KIT TMS320ERROR! BOOKMARK NOT DEFINED FOLHA DE RESPOSTAS – EXPERIÊNCIA 11ERROR! BOOKMARK NOT DEFINED. EXPERIÊNCIA 12 - APRESENTAÇÃO DO PROJETO DE PESQUISA 50 Revisão: 05/08/2003 3 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO PLANEJAMENTO DIDÁTICO PEDAGÓGICO LABORATÓRIO DE MICROPROCESSADORES APLICAÇÃO SEGUNDO SEMESTRE 2003 CURSO SUPERIOR DE TECNOLOGIA ELÉTRICA UNIDADE: F.C.I DISCIPLINA: Laboratório de Microprocessadores Aplicação PROFESSOR: Ivair Reis Neves Abreu Departamento: Eletrônica ETAPA: 6 CARGA HORÁRIA: 2 aulas práticas OBJETIVOS: o aluno deverá adquirir praticar os conceitos básicos de sistemas com microcontroladores e processadores digitais de sinal ao nível de projeto físico e programação em linguagem de montagem (e máquina) para teste do sistema elaborado. METODOLOGIA Aula prática com computadores e ferramentas de programação (compiladores e simuladores) e utilização de placa didática (kit) baseada no microcontrolador da família 8051. No final do curso o aluno deverá apresentar um projeto prático utilizando a placa didática e todos os conceitos ministrados no curso (projeto de hardware e firmware básico). CRITÉRIO DE AVALIAÇÃO Nota de Laboratório = 0,33 x Participação + 0,33 Experiência 12 + 0,33 Trabalho Prático Participação = presença e entrega da folha de respostas das 10 primeiras experiências. Experiência 12 - Entregue individualmente no último dia útil do laboratório. Trabalho Prático - Grupo de 4 alunos entregue no último dia útil de laboratório. BIBLIOGRAFIA - APLICAÇÕES PRÁTICAS DO MICRONTROLADOR 8051. Vidal Pereira da Silva Jr. - Érica DATABOOK EMBEDED APLICATIONS 8051 / 89Sxxx. Intel / ATMEL (www.atmel.com) THE 8051 FAMILY OF MICROCONTROLLERS. Richard H. Barnett. Prentice Hall. THE 8051 MICROCONTROLLER. I. Schott Mackenzie. Prentice Hall. APOSTILA DE LABORATÓRIO DE MICROPROCESSADORES APLICAÇÕES. Ivair Reis Neves Abreu Internet: www.microcontroller.com www.8052.com www.vidal.com.br www.icmaster.com www.microchip.com www.ti.com www.zilog.com www.motorola.com www.cypress.com 4 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO EXPERIÊNCIA 1 - Revisão ASM51/AVSIM51 1) - Objetivo: ASM51/AVSIM51 revisão dos comandos básicos do sistema de desenvolvido 2) - Introdução Teórica: - Edição: utilizar o programa EDIT (DOS) ou BLOCO DE NOTAS. utilizar WORD ou WORDPAD salvar arquivo como TXT - Compilação: ASM51 <nome.asm> - Conversão OBJ para HEX: OH <nome.hex> to <nome.obj> - Simulação: AVSIM51 (com o arquivo nome.hex) ou TSCONTROL - Gravação de EPROM ou memória flash (8951). Se - Compilação do programa fonte: através do compilador ASM51, convertemos as instruções contidas no editor para linguagem de máquina. Este programa gera dois arquivos: NOME.LST -> arquivo imprimível onde serão guardadas as mensagem dos possíveis erros gerados pelo compilador. Este arquivo deve ser sempre acessado em caso de detecção de erros. NOME.HEX -> programa a ser simulado e gravado em uma EPROM. Ex: "ASM51 TESTE1.ASM" - Conversor: pelo fato do simulador e o processo de gravação de EPROM utilizar normalmente um arquivo tipo HEX, faz-se necessário a presença do programa OH para converter este arquivo .OBJ para .HEX. A estrutura da chamada de OH é a seguinte: 'OH <nome.obj> TO <nome.hex>' - Simulação do programa fonte: realizado através do simulador 'AVSIM51' da AVOCET. Para executar o programa basta digitar: 'AVSIM51' São apresentadas 6 opções de entrada, onde trabalharemos com a opção 'A: 8051'. Como o microcontrolador já apresenta memória ROM e RAM, não há necessidade de configurarmos através do 'SET' a área de memória. Apenas carregamos o programa através do comando 'LOAD - AVOCET'. Observe a presença de todos os registradores internos do 8051 e dos 4 ports P0, P1, P2 e P3 no lado direito inferior da tela. Esta etapa poderá ser saltada se digitarmos: 'AVSIM51 A' A tela do programa possui duas regiões de trabalho: comandos e display. O cursor se colocará inicialmente no menu de comandos e com o 5 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO acionamento da tecla ESC poderemos trabalhar no campo display. Acionando ESC novamente voltamos ao campo comandos. Os principais comandos utilizados em nosso curso são vistos abaixo: - Dump: configura as janelas de memória 1 e 2 do campo display. A opção '1' configura a primeira janela e a opção '2' configura a segunda janela. Uma vez selecionada a janela, optando pela opção 'ABSOLUTE' simplesmente entramos com o endereço inicial desejado. Na opção 'INDIRECT' associaremos o endereço da janela com um par de registradores. Ex: 1) - 'DUMP 1 ABSOLUTE 30H' -> o primeiro endereço da janela 1 será 30h. 'DUMP 2 INDIRECT SP - 10h'-> o primeiro endereço da janela 2 será o endereço do apontador de pilha menos 10h. - Expression: permite altermos o valor do registrador apontado pelo cursor quando no modo display. Ex: EXPRESSION: '0Fh + 1' -> o número 10h será armazenado no registrador especificado pelo cursor. - commandFile: permite guardamos em um arquivo uma seqüência de comandos do compilador para poder ser utilizado posteriormente. OPEN abre o arquivo, CLOSE fecha o arquivo, RESTART reinicializa o arquivo e LOAD executa os comandos gravados no arquivo anteriormente aberto e fechado. Este comando é muito utilizado para inicializar o AVSIM. Ex: 'COMMAND FILE OPEN <nome do arquivo> <seqüência de comandos> CLOSE'. Para executarmos a seqüência de comandos acima basta: 'COMMANDFILE LOAD <nome do arquivo> - Load: carrega programa ou tabelas de símbolos. Permite carregarmos programas compilados pela AVOCET ou INTEL (formato .hex). Normalmente utilizaremos a opção AVOCET. Ex: 'LOAD AVOCET <nome do programa>' - Patchcode: permite entrar ou alterar uma instrução diretamente do teclado na posição apontada pelo cursor no campo do programa. As opções OPEN e CLOSE permitem criar-se um arquivo no disquete. - Quit: digitando 'E' saímos do AVSIM51. - Set: configura parâmetros de memória, pontos de parada, etc. A opção 'Memory-Map' configura a área de RAM ou ROM. Necessita do fornecimento do endereço inicial e final da memória. Ex: 'SET MEMORY-MAP READY-ONLY 0H 0FFFH' -> configura área de memória ROM de 0 a 0FFFh. 'SET MEMORY-MAP RAM-ACESS 2000H 20FFH' -> configura área de memória de dados RAM de 2000h a 20FFh. Atenção: o comando 'CONTROL C' sai de qualquer comando. Não utilizar ESC pois simplesmente sairemos para o campo DISPLAY. Para simularmos o programa carregado utilizaremos as teclas de função: 6 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO - F10 -> executa instruções passo a passo. - F9 -> volta uma instrução executada (comando UNDO). - F1 -> executa o programa seqüencialmente até encontrar um "break-point". - F2 -> move cursor do 'break-point' para frente. - F4 -> move cursor do 'break-point' para trás. - F3 -> fixa um ponto de 'break-point'. Este ponto só será apagado quando o programa ao ser executado (com F1 ou F10) passar por aquele endereço. - F5 -> muda velocidade de simulação do F1. 3) - Editar o programa EXP1.ASM carregando todos os registradores Rn com o número 01, 02, etc., o acumulador com 08, somar os valores de r1 e acumulador, incrementar o resultado e retornar para o ponto da soma: 3.2) - Compilar o programa seguindo a seguinte sequência: FIX EXP1.ASM ASM51 EXP1.ASM OH EXP1.OBJ TO EXP1.HEX 3.3) - Utilizar o programa AVSIM51 na primeira opção configurando a memória de programa (ROM) através do comando SET, M.M e ROM -> 0h a 0fffh. A memória de dados (RAM) através do comando SET, M.M e RAM -> 0h a ffh. Carregar o programa através do comando LOAD - AVOCET – EXP1.HEX. Configurar as duas janelas através do comando DUMP da seguinte forma: DUMP 1 -> 50H (para visualizar os resultados) 3.4) - Rodar o programa através dos comandos F10 e F9. Observar atentamente o efeito que cada instrução provoca nos registradores e nas áreas de memória 1 (resultados). Observar que o PC é incrementado a cada instrução. 7 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO FOLHA DE RESPOSTAS – EXPERIÊNCIA 1 Nome:____________________________ número:__________ Data: ________________ Visto: ________________ 1) – Escrever rapidamente os comandos para editar, compilar e simular o programa EXP1.ASM 2) – Fazer um programa em Assembler para: - Carregar o Acumulador com o número 07. Somar o dado do acumulador com o número 05 Guardar o resultado na área de memória 30H. 8 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO EXPERIÊNCIA 2 - Revisão ASM51/AVSIM51 1) - Objetivo: ASM51/AVSIM51 revisão dos comandos básicos do sistema de desenvolvido 2) - Introdução Teórica: - Edição: utilizar o programa EDIT (DOS) ou BLOCO DE NOTAS. utilizar WORD ou WORDPAD salvar arquivo como TXT - Compilação: ASM51 <nome.asm> - Conversão OBJ para HEX: OH <nome.hex> to <nome.obj> - Simulação: AVSIM51 (com o arquivo nome.hex) ou TSCONTROL - Gravação de EPROM ou memória flash (8951). Se Para simularmos o programa carregado utilizaremos as teclas de função: - F10 -> executa instruções passo a passo. - F9 -> volta uma instrução executada (comando UNDO). - F1 -> executa o programa seqüencialmente até encontrar um "break-point". - F2 -> move cursor do 'break-point' para frente. - F4 -> move cursor do 'break-point' para trás. - F3 -> fixa um ponto de 'break-point'. Este ponto só será apagado quando o programa ao ser executado (com F1 ou F10) passar por aquele endereço. - F5 -> muda velocidade de simulação do F1. 3) - Editar o programa EXP2.ASM carregando todos os registradores Rn com o número 01, 02, etc., o acumulador com 08, somar os valores de r1 e acumulador, incrementar o resultado e retornar para o ponto da soma: ;*** inicio do programa da experiência número 1 *** ;* NOME: ;* NUMERO: ;* TURMA: ;*** pilha equ 70h endre equ 50h ;area para armazenar resultados arit. endmex equ 2000h;area de memoria externa org 0 inicio: jmp iniprg org 30h iniprg: mov sp,#pilha mov a,#01 ;* rotina aritmética rotina: mov r0,#05h mov r1,#endre ;operacao de soma 9 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO add a,r0 mov @r1,a ;guarda resultado da soma inc r1 ;incrementa endereco resultado ;operacao OU mov a,#053h mov r0,#0a5h orl a,r0 mov @r1,a inc r1 inc a jmp rotina end 3.2) - Compilar o programa seguindo a seguinte sequência: FIX EXP2.ASM ASM51 EXP2.ASM OH EXP2.OBJ TO EXP2.HEX 3.3) - Utilizar o programa AVSIM51 na primeira opção configurando a memória de programa (ROM) através do comando SET, M.M e ROM -> 0h a 0fffh. A memória de dados (RAM) através do comando SET, M.M e RAM -> 0h a ffh. Carregar o programa através do comando LOAD - AVOCET – EXP1.HEX. Configurar as duas janelas através do comando DUMP da seguinte forma: DUMP 1 -> 50H (para visualizar os resultados) 3.4) - Rodar o programa através dos comandos F10 e F9. Observar atentamente o efeito que cada instrução provoca nos registradores e nas áreas de memória 1 (resultados). Observar que o PC é incrementado a cada instrução. 3.5) – Fazer 2 retornos e verificar os valores os endereços de memória RAM Resultados: Primeiro Loop: 50H =____51H = Segundo Loop: 50H = ___51H = 10 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO FOLHA DE RESPOSTAS – EXPERIÊNCIA 2 Nome:____________________________ número:__________ Data: ________________ Visto: ________________ 1) – Qual a função do PC dentro do microprocessador? 2) - Qual a função do SP dentro do microprocessador? 3) - Como observamos a região da memória RAM e dos Ports? 4) – Qual a área do simulador que observamos os resultados das somas e operação OU? 11 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO EXPERIÊNCIA 3 - Revisão Conjunto de Instruções 8051 1) - Objetivo: revisão das instruções do microcontrolador 8051. 2) - Introdução Teórica: As instruções do microcontrolador 8051 podem ser dividas em 5 grupos: 2.1) - Instruções de Transferência de Informação: - MOV destino,fonte: copia dado da fonte para o destino. - MOVC A,@A+(PC ou DPTR): leitura de tabela da ROM com endereço armazenado em A (offeset) + DPTR ou PC (início da tabela) - MOVX destino,fonte: leitura da RAM externa - PUSH direto: salva na pilha (SP+1) dado direto - POP direto: resgata da pilha (SP-1) dado direto - XCH destino,fonte: troca dados da fonte com destino - XCHD A,@Ri: troca apenas nibble inferior 2.2) - Instruções Aritméticas: ADD A,operando: soma dado indicado pelo operando com o dado do acumulador. Resultado no acumulador. ADDC A,operando: idem somando bit 'carry' SUBB A,operando: subtrai dado do acumulador do operando. Resultado no acumulador. INC operando: soma 1 ao operando. DEC operando: subtrai 1 do operando. MUL AB: multiplica dado do acumulador com dado do registrador B. Resultado em A e B. DIV AB: divide A de B. Resultado inteiro em A e resto em B. DA A: ajusta decimalmente o Acumulador. 2.3) - Instruções Lógicas: ANL operando1,operando2: operação AND entre operandos. ORL operando1,operando2: operação OU entre operandos. XRL operando1,operando2: operação XOR entre operandos. CLR CPL RL RLC RR RRC SWAP A: A: A: A: A: A: A: Resultado em A. Resultado em A. Resultado em A. zera acumulador inverte acumulador rotaciona acumulador para esquerda rotaciona acumulador com carry para esquerda. rotaciona acumulador para direita rotaciona acumulador com carry para esquerda. troca os nibbles do acumulador. 12 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO 2.4) - Instruções de Controle: - CALL endereço: chama subrotina, salvando endereço de PC na pilha (SP+1 e SP+2) - RET: retorna da subrotina - RETI: retorna da subrotina de interrupção - JMP endereço: salta para o endereço especificado - JMP @A+DPTR: salta para o endereço da soma do acumulador e DPTR. - JZ endereço: salta para endereço se flag Z é 1 - JNZ endereço: salta para endereço se flag Z é 0 - CJNE oper1,oper2,offeset: compara dados do operando 1 e 2. Se diferente, salta para PC + offset - DJNZ oper,endereço: decrementa valor do operando. Se diferente de zero, retorna para o endereço. Utilizada para realizar rotinas de loop, onde o valor de contagem é guardado no operando. - NOP: instrução sem efeito que ocupa um ciclo de máquina. 2.5) - Instruções Booleanas: inverso inverso - CLR operando: limpa bit do operando SETB operando: seta bit do operando CPL operando: complementa bit do operando ANL C,bit (/bit): operação AND entre o carry e o bit (/bit -> do bit). Resultado no carry. ORL C,bit (/bit): operação OU entre o carry e o bit (/bit -> do bit). Resultado no carry. MOV C,bit: transfere bit para o carry MOV bit,C: transfere carry para o bit JC endereço: se carry=1, salta para endereço JNC endereço: se carry=0, salta para endereço JB bit,endereço: se bit=1, salta para endereço JNB bit,endereço: se bit=0, salta para endereço JBC bit,endereço: se bit=1, salta e limpa bit 3) - Procedimento: 3.1) - Editar o programa EXP3.ASM mostrado abaixo: ;*** Experiência número 3 *** ;* NOME: ;* Número: ;* Turma: ;* Descrição: revisao das 4 operacoes arimeticas, operacoes lógicas e ;controle booleano através de 1 chave e 1 motor ;*** pilha equ 50h memext equ 2000h result equ 30h ;definicoes boleanas chave bit p1.0 motor bit p1.1 13 APOSTILA DE LABORATÓRIO memcha inicio: retor: MACKENZIE equ 0 org 0 jmp org mov mov inicio 30h sp,#pilha dptr,#memext mov mov mov mov mov mov mov mov mov call call jmp r0,#0aah r1,#7fh r2,#01h r3,#02h r4,#03h r5,#04h r6,#05h r7,#06h a,#55h revarlo revbool retor MICROPROCESSADORES APLICAÇÃO ;define pilha interna ;define ponteiro de memória ;externa ;carrega r0 com aah ;subrotina aritmética ;* subrotinas ;* revisao das instrucoes aritmético/logicas revarlo: push mov mov mov add mov inc mov subb mov inc mov mul mov inc mov inc mov div mov inc ;* rotina lógica mov mov anl acc a,P0 r0,#05h r1,#result a,r0 @r1,a r1 r0,#02h a,r0 @r1,a r1 b,#6fh ab @r1,a r1 @r1,b r1 b,#02h ab @r1,a r1 ;le o valor de P0 ;guarda resultado da soma a,#0ffh r0,#0ah a,r0 14 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO mov @r1,a inc r1 mov r0,#0a5h orl a,r0 mov @r1,a inc r1 xrl a,r0 mov @r1,a inc r1 mov a,#0a5h cpl a swap a mov @r1,a inc r1 rl a rl a rr a mov @r1,a pop acc ret ;* revisao das instrucoes booleanas REVBOOL: PUSH ACC PUSH PSW MOV C,CHAVE CPL C ;INVERTE CONDICAO CPL C MOV MEMCHA,C ;GUARDA NA MEMORIA JB MEMCHA,ligamo ;SE CHAVE=1, LIGA MOTOR CLR MOTOR JMP FIMROBO LIGAMO: SETB MOTOR FIMROBO: POP PSW POP ACC RET END 3.2) - Compilar arquivo corrigido: ASM51 EXP3.ASM 3.3) - Se houver mensagem de erro, acessar o arquivo 'EXP1.LST' para verificar erros. Corrigir os mesmos no arquivo fonte original 'EXP1.ASM' 3.4) - Transformar o arquivo EXP1.OBJ para EXP1.HEX com o programa OH: OH EXP3.OBJ TO EXP3.HEX 3.5) - Simular o arquivo compilador chamando o AVSIM51, escolhendo a opção A e executando os comandos: - SET - M.M. - ROM - 0H - 1FFFH - SET - M.M. - RAM - 0 - FFH - LOAD - AVOCET - EXP3.HEX'. O programa surgirá no lado superior esquerdo da tela. 15 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO Carregar o port P0 com um número diferente de ‘00’ de forma manual (posicionando o cursor sobre P0 e digitando o valor). 3.6) - Com auxílio da tecla F10, simular o programa incrementando uma instrução de cada vez. Observar o efeito na tela de cada instrução executada. 3.8) – Na rotina booleana, mudar o bit P1.0 (chave) e observar o acionamento / desligamento do motor (P1.1). Depois de simular todo o programa, utilizar a tecla F9, decrementando uma instrução. Por fim, utilizar a tecla F1 para rodar o programa de forma continua. Observar: - O programa é um loop infinito (normalmente os programas de controle são loops) - Observar na chamada das 2 subrotinas: o salvamento do PC na área da pilha, o salvamento do acumulador e do flag PSW e o retorno com a carga do PC com o valor armazenado na pilha. 3.7) - Anotar, apos a execução do programa, o conteúdo das seguintes posições de memória: P0= ___ 30h=____ 31h=___ 32h=____ 33h=___ 34h=___ 35h=___ 36h=____ 37h=___ 38h=____ 39h=___ 20.0b=____ - Observar que a condicao do motor (P1.1) muda de acordo com a variação da chave (P1.0) - Anotar os dados da pilha: 50h = __ 51h = 52h = 53h = 54 = 16 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO FOLHA DE RESPOSTAS – EXPERIÊNCIA 3 Nome:____________________________ número:__________ Data: ________________ Visto: ________________ 1) – Explicar o salvamento do PC na pilha na instrução CALL. Qual a função da pilha? 2) – Qual a função das instruções PUSH e POP? 3) – No programa, como ligamos e desligamos o motor? 4) – Fazer o seguinte programa: - Lâmpada -> endereço P3.4 Sensor -> endereço P3.5 Fazer uma rotina para o sensor ligar e desligar a lâmpada 5) - Resultados: P0= ___ 30h=____ 31h=___ 32h=____ 33h=___ 34h=___ 35h=___ 36h=____ 37h=___ 38h=____ 39h=___ 20.0b=____ 50h= 51h= 52h= 53h= 17 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO EXPERIÊNCIA 4 - KIT 8031 1) - Objetivo: sistema de controle com o 8051. Revisão do display de LCD. Revisão do kit 8031. 2) - Introdução Teórica: KIT 8031 -> MICROCONTROLADOR 8031 MEMÓRIA EPROM 2764 3 LEDS -> PORTS P3.3, P3.5, P3.6 1 RELE -> PORT P3.0 2 CHAVES -> PORTS P3.2 E P3.4 8 PORTS DE EXPANSÃO -> P1.0 E P1.7 Observar diagrama esquemático no Apêndice A Comandos básicos para um display L.C.D. com módulo inteligente (ver maiores detalhes no manual do fabricante do display): - Com sinal C/D=0 -> comandos - Fixa 2 linhas com caracter 5x7 -> 38H - Fixa display aceso com cursor inter. -> 0FH - Fixa display sem cursor -> 0CH - Escreve deslocando p/ direita -> 05H - Escreve deslocando p/ esquerda -> 07H - Limpa display -> 01H - Desloca cursor p/ 2 linha -> C0H - Posicionamento do cursor -> entrar c/ endereço 80H-> primeiro endereço da primeira linha C0H-> primeiro endereço da segunda linha - Com sinal C/D=1 -> dados. Depois de posicionado o cursor colocando o endereço desejado (ver acima), deve-se entrar com o código em ASCII para a escrita no display. Para o projeto da interface L.C.D. para o KIT 8031 considerar os seguintes sinais: - C/D -> ligar diretamente no endereço L.S.B. A0 - R/W -> deixar ativo em nível alto (apenas processo de escrita). Se for desejado leitura, fazer uma lógica para que os sinais RD e WR no PORT 3 do 8031 controle a entrada R/W (ver detalhes no manual do display). - CS -> seleciona display em nivel alto. Se não houver outros chips de memória RAM no projeto, pode ser ligado através de um inversor diretamente na saida WR (caso o display seje apenas escrito). No caso de haver outros chips de memória RAM no projeto, deve-se utilizar um decodificar para gerar os diversos sinais de C.S., sendo o display considera como uma memória RAM no projeto (com uma faixa de endereço reservada). - D0-D7 -> ligado diretamente no barramento de dados. - Alimentação Vcc/GND -> alimentação + 5V. - Controle V0 -> controle de luminosidade do display. 3) - Procedimento: 3.1) - Editar o programa de teste do kit com o 8051 listado abaixo. Compilar com o compilador ASM51 e simular com o simulador AVSIM51, seguindo procedimento já visto. 18 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO ;*** inicio do programa da experiência número 4 *** ;* NOME: ;* NUMERO: ;* TURMA: ;*** ROTINA DE TESTE PARA O KIT 8031 ;*- LE O ESTRAPE 1 -> SE ESTIVER ACIONADO ACIONA LED 1, 2 E RELE. ;*- SE NAO HOUVER ESTRAPE ACIONADO, DESLIGA SAIDAS ;*** CHAVE1 BIT P3.2 ;CONTROLE DO ESTRAPE 1 CHAVE2 BIT P3.4 ;CONTROLE DO ESTRAPE 2 LED1 BIT P3.3 ;CONTROLE DO LED1 LED2 BIT P3.5 RELE BIT P1.0 ;* CONSTANTES E VARIAVEIS PILHA EQU 60H FTEMPO1 EQU 30H ;MEMORIA RAM - RASCUNHO FTEMPO2 EQU 31H FVARIA1 EQU 32H FVARIA2 EQU 33H DISPLAYC EQU 00 ;ENDERECO DE CONTROLE DO DISPLAY DISPLAYD EQU 01 ;ENDERECO DE DADO DO DISPLAY INICIO: INIPRG: ORG AJMP ORG RETI ORG RETI ORG RETI ORG RETI ORG RETI ORG MOV MOV 0 INIPRG 3 CLR CLR CLR CALL ;*** INICIO DO FIRMWARE ;* Pisca leds 1, 2, 3 e INIC: SETB CALL CLR SETB CALL CLR ;SALTA VETORES DE INTERRUPCAO ;INTERRUPCAO EXTERNA 0 0BH ;INTERRUPCAO DO TIMER 0 13H ;INTERRUPCAO EXTERNA 1 1BH ;INTERRUPCAO DO TIMER 1 23H ;INTERRUPCAO SERIAL 30H SP,#PILHA PSW,#08H LED1 LED2 RELE INIDSP ;DEFINE PILHA ;DEFINE BANCO 1 DE ;REGISTRADORES 'R' ;INICIALIZA DISPLAY rele com tempo de 0,5 segundos LED1 TEMPO05 LED1 LED2 TEMPO05 LED2 19 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO SETB RELE CALL TEMPO05 CLR RELE ;DESLIGA SAIDAS CLR LED1 CLR LED2 CLR RELE ; ESCREVE NA PRIMEIRA LINHA E SEGUNDA LINHA DO DISPLAY MOV DPTR,#LINHA1 ;ESCREVE NA LINHA 1 CALL LSUPER MOV DPTR,#LINHA2 ;ESCREVE NA LINHA 2 CALL LINFER LECH1: MOV C,CHAVE1 ;LE CHAVE 1 JNC DESLI ;SE CHAVE 1 = 0, SALTA SETB LED1 SETB LED2 SETB RELE JMP LECH1 DESLI: CLR LED1 CLR LED2 CLR RELE JMP LECH1 ;*** FIM DA ROTINA PRINCIPAL ;*** INICIO DAS SUBROTINAS ;* INICIALIZA DISPLAY INIDSP: PUSH ACC PUSH DPH PUSH DPL MOV DPTR,#DISPLAYC MOV A,#38H MOVX @DPTR,A CALL TEMPO15 MOV A,#38H MOVX @DPTR,A CALL TEMPO15 MOV A,#0CH MOVX @DPTR,A CALL TEMPO15 MOV A,#06H MOVX @DPTR,A CALL TEMPO15 MOV A,#01H MOVX @DPTR,A CALL TEMPO15 POP DPL POP DPH POP ACC RET ;indica controle ;2 LINHAS 5X7 ;ESPERA 15 MSEG ;REPETE COMANDO LINHA ;SEM CURSOR ;CURSOR A DIREITA ;LIMPA DISPLAY ;* ROTINA DE 0,5 SEGUNDOS 20 APOSTILA DE LABORATÓRIO MACKENZIE ;* CRISTAL DE 12 Mhz -> 1 uSEG. DE TEMPO05: PUSH FTEMPO1 PUSH FTEMPO2 MOV FTEMPO1,#255 RETEMP: MOV FTEMPO2,#255 RETEMP1: NOP NOP NOP NOP NOP DJNZ FTEMPO2,RETEMP1 DJNZ FTEMPO1,RETEMP POP FTEMPO2 POP FTEMPO1 RET ;* SUBROTINA DE TEMPO - 15 MSEG. TEMPO15: PUSH FTEMPO1 PUSH FTEMPO2 MOV FTEMPO1,#35 ;35 X RETEMPA: MOV FTEMPO2,#255 RETEMP1A: NOP NOP NOP NOP NOP DJNZ FTEMPO2,RETEMP1A DJNZ FTEMPO1,RETEMPA POP FTEMPO2 POP FTEMPO1 RET MICROPROCESSADORES APLICAÇÃO CICLO ;255 X 255 = 65025 LOOPS ;LOOP COM 7 CICLOS ;LOOP SECUNDARIO COM 9 CICLOS 255 = 8925 LOOPS ;LOOP COM 7 CICLOS ;LOOP SECUNDARIO COM 9 CICLOS ;* ROTINA DO DISPLAY PARA ESCREVER LINHA SUPERIOR ;* ;* RECEBE EM DPTR ENDERECO DA TABELA DA LINHA ;* LSUPER: MOV FVARIA1,DPH ;SALVA ENDERECO RECEBIDO MOV FVARIA2,DPL MOV DPTR,#DISPLAYC MOV A,#80H ;POSICAO INICIAL MOVX @DPTR,A CALL TEMPO15 ;ESPERA 15 MSEG. MOV R0,#16 ;16 CARACTERES CLR A MOV R2,A RLSUP: MOV DPH,FVARIA1 ;ENDERECO MENSAGEM INICIAL MOV DPL,FVARIA2 MOVC A,@A+DPTR MOV DPTR,#DISPLAYD MOVX @DPTR,A ;ENVIA DADO PARA O DISPLAY CALL TEMPO15 ;ESPERA 15 MSEG. 21 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO INC R2 ;INCREMENTA PONTEIRO MOV A,R2 DJNZ R0,RLSUP RET ;* ROTINA DO DISPLAY PARA ESCREVER LINHA INFERIOR ;* RECEBE EM DPTR ENDERECO DA TABELA DA LINHA LINFER: MOV FVARIA1,DPH ;SALVA ENDERECO RECEBIDO MOV FVARIA2,DPL MOV DPTR,#DISPLAYC MOV A,#0C0H ;POSICAO INICIAL MOVX @DPTR,A CALL TEMPO15 ;ESPERA 15 MSEG. MOV R0,#16 ;16 CARACTERES CLR A MOV R2,A RLINF: MOV DPH,FVARIA1 ;ENDERECO MENSAGEM INICIAL MOV DPL,FVARIA2 MOVC A,@A+DPTR MOV DPTR,#DISPLAYD MOVX @DPTR,A ;ENVIA DADO PARA O DISPLAY CALL TEMPO15 ;ESPERA 15 MSEG. INC R2 ;INCREMENTA PONTEIRO MOV A,R2 DJNZ R0,RLINF RET ;* TABELAS LINHA1: DB 'REVISAO ' LINHA2: DB 'KIT 8031 ' END 3.2) - Corrigir arquivo editado com o programa FIX: FIX EXP4.ASM 3.3) - Compilar arquivo corrigido: ASM51 EXP4.ASM 3.4) - Se houver mensagem de erro, acessar o arquivo EXP2.LST para verificar erros. Corrigir os mesmos no arquivo fonte original EXP2.ASM. 3.5) - Transformar o arquivo EXP2.OBJ para EXP2.HEX com o programa OH: OH EXP4.OBJ TO EXP4.HEX 3.6) - Simular o arquivo compilador chamando o AVSIM51, escolhendo a opção A e executando os comandos: - SET - M.M. - ROM - 0H - 1FFFH - SET - M.M. - RAM - 0 - FFH - LOAD - AVOCET - EXP4.HEX'. O programa surgirá no lado superior esquerdo da tela. Com auxílio da tecla F10, simular o programa incrementando uma instrução de cada vez. Observar o efeito na tela de cada instrução executada (a forma de inicializacao do display, a escrita na linha superior e linha inferior). Alterar a condiçao da chaves 1 e verificar o efeito sobre os leds e o rele. 22 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO FOLHA DE RESPOSTAS – EXPERIÊNCIA 4 Nome:____________________________ número:__________ Data: ________________ Visto: ________________ 1) – O programa abaixo inicializa e escreve no display: CALL MOV CALL MOV CALL .... ;TABELAS LINHA1: DB LINHA2: DB END INIDSP DPTR,#LINHA1 LSUPER DPTR,#LINHA2 LINFER ‘EXPERIENCIA’ ‘NUMERO 4’ Fazer um programa semelhante, escrevendo seu nome e código de matrícula 2) – Fazer um programa para ligar e desligar o rele através da chave 2 3) – Exercícios (não fazer agora) - Alterar o programa colocando 4 motores nos ports P1.0, P1.1, P1.2 e P1.3. Estes motores devem ser controlados através de chaves localizados nos ports P1.4, P1.5, P1.6 e P1.7. Escrever no display: "CONTROLE DE 4 MOTORES". Apresentar a listagem .LST 23 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO EXPERIÊNCIA 5 - ALARME COM O KIT 8031 / GRAVAÇÃO DE EPROM 1) - Objetivo: rotina para um alarme com o kit 8051. 2) - Introdução teórica: Revisão dos passos básicos para gravação de EPROM através do gravador Minipa e do programa LP3. O programa a ser gravado precisa estar no formata HEX. A EPROM é gravada com auxílio de um PAD externo (conectado a saida de impressora LPT1) na condição SLAVE. Abaixo relembramos os principais comandos do programa LP3 (LEAPER - 3): - No menu principal temos os seguintes comandos: TYPE -> EPROM -> selecionar fabricante -> selecionar tipo da EPROM. DISK -> LOAD -> DISK DATA FILE TO BUFFER -> Opção 3 (INTEL HEX FORMAT) -> A:\NOME.HEX -> ^Q -> EXIT PROGRAM -> Program from address 0000H (início da programação da Eprom). VERIFY -> Verify with address 0000H (verifica EPROM) CHECK -> Device Blank Check (verifica se a EPROM está apagada) ATENÇÃO: OBSERVAR CUIDADOSAMENTE O TIPO DE EPROM A SER GRAVADA. A EPROM 2764 NORMALMENTE POSSUI 2 TIPOS DE PROGRAMACAO: 2764 - 24V (ROTINA 2764) COM NÍVEL DE GRAVAÇÃO DE 24V E 2764 - 12V (ROTINA 64A1) COM NÍVEL DE GRAVAÇÃO DE 12 V. NO CASO DE DÚVIDAS, CONSULTAR O MANUAL, POIS UM ERRO NA ESPECIFICAÇÃO DOS TIPOS PODE PROVOCAR A QUEIMA DA MEMÓRIA. 3) - Procedimento: 3.1) - Elaborar um programa que simule um alarme no kit 8031. O estrape 1 deverá ligar e desligar o alarme. O estrape 2 deverá simular o sensor que disparará o alarme. Os leds simularão 2 lâmpadas e o relê acionará um alarme sonoro. O programa deverá esperar o acionamento do alarme através do estrape 1. Quando este estiver acionado, o programa acionará todas as saídas 10 segundos depois que for detectado nível baixo no estrape 2 e a chave 1 continuar acionada. As saídas deverão ser desligadas se o estrape 1 for desligado. Escrever o nome completo e o número de matrícula no display L.C.D. da mesma forma vista na experiência 3. 24 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO Listagem: 3.2) - Editar, compilar e simular o programa através do procedimento apresentado nas experiências anteriores. 3.3) - Gravar a EPROM através do programa LP-3 seguindos os seguintes comandos: TYPE -> EPROM -> selecionar fabricante -> selecionar tipo da EPROM. DISK -> LOAD -> DISK DATA FILE TO BUFFER -> Opção 3 (INTEL HEX FORMAT) -> A:\NOME.HEX CHECK -> Device Blank Check (verifica se a EPROM está apagada) PROGRAM -> Program from address 0000H (início da programação da Eprom). Se houver necessidade de verificar a EPROM, utilizar o comando VERIFY -> Verify with address 0000H. 3.4) - Testar a EPROM gravada no kit a ser montado. 25 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO FOLHA DE RESPOSTAS – EXPERIÊNCIA 5 Nome:____________________________ número:__________ Data: ________________ Visto: ________________ 1) – Descrever objetivamente os passos para a gravação da EPROM 2) – Qual o papel das 2 chaves e dos leds e rele no programa do alarme vista? 3) – Exercício (não fazer agora) Fazer um programa em Linguagem Assembler para o 8051 para colocar e supervisionar 8 sensores localizados no port P1. 26 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO EXPERIÊNCIA 6 - SISTEMA DE SEMAFORO DE PEDESTRES 1) - Objetivo: implementar um sistema de um semaforo de pedestres temporizado com controle de segurança. 2) - Procedimento: 2.1) - Elaborar um programa que simule um semaforo de pedestre da seguinte forma: - Led 1 -> Verde Led 2 -> Vermelho Rele -> alarme sonoro. Chave 1 -> sensor de piso da faixa de pedestre. 2.2) - Fazer um firmware com as seguintes caracteristicas: - Ligar o led verde por 30 segundos. - Ligar o led vermelho por 90 segundos. - Quando o led vermelho estiver ligado, o sensor deve acionar a buzina se o sensor do piso estiver ativado (pedestre na faixa). - Escrever no Display: linha de cima PEDESTRE e na linha de baixo ATRAVESSE ou PARE de acordo com a condição dos leds. Listagem: 2.2) - Editar, compilar e simular o programa através do procedimento apresentado nas experiências anteriores. 2.3) - Gravar a EPROM através do programa LP-3 seguindos os seguintes comandos: 27 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO TYPE -> EPROM -> selecionar fabricante -> selecionar tipo da EPROM. DISK -> LOAD -> DISK DATA FILE TO BUFFER -> Opção 3 (INTEL HEX FORMAT) -> A:\NOME.HEX CHECK -> Device Blank Check (verifica se a EPROM está apagada) PROGRAM -> Program from address 0000H (início da programação da Eprom). Se houver necessidade de verificar a EPROM, utilizar o comando VERIFY -> Verify with address 0000H. 2.4) - Testar a EPROM gravada no kit a ser montado. 28 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO FOLHA DE RESPOSTAS – EXPERIÊNCIA 6 Nome:____________________________ número:__________ Data: ________________ Visto: ________________ 1) - Apresentar o LST do programa realizado. 2) – Exercício (não fazer agora) Fazer um programa em Linguagem Assembler para o 8051 para simular um semaforo completo de um cruzamento com 2 semaforos (6 lampadas) de veículo e 2 semaforos de pedestre (4 lampadas). 29 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO EXPERIÊNCIA 7 - SISTEMA DE TEMPORIZAÇAO/INTERRUPÇÃO 8051 1) - Objetivo: estudo de rotinas de temporização e sistema de interrupção do 8051. 2) - Introdução Teórica: 2.1) - Sistema de temporização: possui 2 timers de 16 bits. o microcontrolador da família 8051 Registradores do sistema de temporização: - Registrador de modo: TMOD: | GATE | C/T | M1 | M0 | GATE | C/T | M1 | M0 | ---------------------- ---------------------TIMER 1 TIMER 2 - Registrador de controle TCON: | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0| ----------------------- ---------------------- 2.2) - Sistema de interrupção: O microcontrolador 8051 possui 5 interrupções, com a prioridade mais alta podendo ser programada pelo registrador IP. O nível de prioridade 'default' e os vetores de interrupção são apresentados abaixo: IE0 TF0 IE1 TF1 SRT (interrupção externa 0) (interrupção do timer 0) (interrupção externa 1) (interrupção do timer 1) (interface serial) -> -> -> -> -> 0003H 000BH 0013H 001BH 0023H - Registrador de habilitação do sistema de interrupção: _________________________________________ IE: | EA | x | x | ES | ET1 | EX1 | ET0 | EX0 | - Registrador do nível de prioridade: ________________________________________ IP: | x | x | x | PS | PT1 | PX1 | PT0 | PX0 | 3) - Procedimento: 3.1) - Editar, com auxílio do editor de textos 'NE', o programa listado abaixo: 30 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO ;*** inicio do programa da experiência número 7 *** ;* NOME: ;* NUMERO: ;* TURMA: ;*** ;* ROTINA DE TESTE DO SISTEMA DE INTERRUPCAO ;* ;*- Sistema com 4 chaves(P1.0-P1.3) e 4 lâmpadas(P1.4-P1.7) ;*- Durante a interrupção A condição da chave é refletida nas ;* DEFINE CONDICAO DO PORT 1 CHAVE1 BIT P1.0 ;CONTROLE DO ESTRAPE CHAVE2 BIT P1.1 ;CONTROLE DO ESTRAPE CHAVE3 BIT P1.2 ;CONTROLE DO ESTRAPE CHAVE4 BIT P1.3 ;CONTROLE DO ESTRAPE LAMP1 BIT P1.4 ;CONTROLE DA LAMPADA 1 LAMP2 BIT P1.5 LAMP3 BIT P1.6 LAMP4 BIT P1.7 ;* DEFINE AREA DE MEMORIA BOOLEANA (20.0 A 2F.F) MEMCH1 EQU 0 MEMCH2 EQU 1 MEMCH3 EQU 2 MEMCH4 EQU 3 ;* CONSTANTES PILHA EQU 60H ;* FLAGS FTEMPO1 EQU 30H ;CONTADOR DE TEMPO 1 lâmpadas. 1 2 3 4 ;*** TIMER 0- GERADA A CADA 0,5 MILISENGUNDOS ;*** ;*** X = FFFFh – (500 useg / 1 useg) = FE08h ;*** TIMERH0 TIMERL0 INICIO: EQU EQU ORG JMP ORG RETI ORG AJMP ORG RETI ORG RETI 0FEH 008H 0 INIPRG 3 ;TIMER ALTO 0 ;TIMER BAIXO 0 ;SALTA VETORES DE INTERRUPCAO ;INTERRUPCAO EXTERNA 0 0BH ;INTERRUPCAO DO TIMER 0 13H ;INTERRUPCAO EXTERNA 1 1BH ;INTERRUPCAO DO TIMER 1 TIM0 31 APOSTILA DE LABORATÓRIO INIPRG: MACKENZIE ORG RETI 23H ORG CLR CLR CLR CLR MOV MOV 30H LAMP1 LAMP2 LAMP3 LAMP4 SP,#PILHA PSW,#08H MICROPROCESSADORES APLICAÇÃO ;INTERRUPCAO SERIAL ;DEFINE PILHA ;DEFINE BANCO 1 DE ;REGISTRADORES 'R' ;* INICIALIZA SISTEMA DE TEMPORIZACAO E INTERRUPCAO MOV IE,#10000010B ;HABILITA TIMER0 MOV IP,#00000001B ;TIMER 0 E 1 COM IGUAL ;*PRIORIDADE MOV TL0,#TIMERL0 ;CARREGA TIMER 0 BAIXO MOV TH0,#TIMERH0 ;CARREGA TIMER 0 ALTO MOV TMOD,#00010001B ;DESATIVA GATE, UTILIZA ;TEMPORIZACAO ;INTERNA E MODO 1 (16 ;BITS) SETB TR0 CLR MEMCH1 ;LIMPA AREA BINARIA CLR MEMCH2 CLR MEMCH3 CLR MEMCH4 ;*** INICIO DO LOOP DE ESPERA JMP $ ;*** ROTINAS DE INTERRUPCAO ;*** INTERRUPCAO DO TIMER 0 ;* ;* CARREGADO ATRAVES DO TIMER_H0-TIMER_LO. A CADA 1 ;* MICROSEG. LE A CONDICAO DAS CHAVES E CONTROLA LAMPADAS ;*** TIM0: PUSH PSW MOV TL0,#TIMERL0 ;CARREGA TIMER 0 BAIXO MOV TH0,#TIMERH0 ;CARREGA TIMER 0 ALTO ;SALVA CONDICAO DAS CHAVES NA MEMORIA MOV C,CHAVE1 ;LE CHAVE 1 DO PORT 1.0 MOV MEMCH1,C ;GUARDA CONDICAO NA MEMORIA MOV C,CHAVE2 MOV MEMCH2,C MOV C,CHAVE3 MOV MEMCH3,C MOV C,CHAVE4 MOV MEMCH4,C ;CONTROLE DAS LAMPADAS JB MEMCH1,LIGALP1 CLR LAMP1 32 APOSTILA DE LABORATÓRIO LIGALP1: CONT1: LIGALP2: CONT2: LIGALP3: CONT3: LIGALP4: CONT4: MACKENZIE JMP SETB JB CLR JMP SETB JB CLR JMP SETB JB CLR JMP SETB CONT1 LAMP1 MEMCH2,LIGALP2 LAMP2 CONT2 LAMP2 MEMCH3,LIGALP3 LAMP3 CONT3 LAMP3 MEMCH4,LIGALP4 LAMP4 CONT4 LAMP4 POP RETI END PSW MICROPROCESSADORES APLICAÇÃO 3.2) - Seguindo procedimento idêntico aos das experiências anteriores, compile o mesmo com o programa ASM51. Em caso de erros, corrigí-los através do procedimento já estudado. Converter o arquivo OBJ em HEX através do programa OH. 3.3) - Carregar o programa no simulador AVSIM51 e verificar o acionamento das lâmpadas quando é alterado os bits do port 1 (chavs) quando a interrupção é acionada. Observe o endereço da interrupção do timer 0 33 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO FOLHA DE RESPOSTAS – EXPERIÊNCIA 7 Nome:____________________________ número:__________ Data: ________________ Visto: ________________ 1) – Explicar a função dos registradores: IE -> IP -> TMOD -> BIT TR0 -> TH0 -> TL0 -> 2) – O que é um vetor de interrupção? Quais os 5 vetores do 8051? 3) – Calcular o timer 0 para um tempo de 10 msegundos: 4) – Fazer um programa para a cada 10 msegundos o registrador R0 ser incrementado 4) - Exercícios 4.1) - Fazer um programa igual ao apresentado que utiliza a interrupção do timer 1 ao invés da interrupção do timer 0. Apresentar a listagem .LST do programa alterado. 4.2) - Elaborar um programa em linguagem assembler para programar o timer 1 com frequência de 5 Khz (sinal quadrado no port P1.0). 34 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO EXPERIÊNCIA 8 - Teclado Matricial 1) - Objetivo: rotina e esquema para adaptar um teclado matricial ao kit 8031. 2) - Introdução teórica: Um teclado matricial de 12 teclas necessita que 4 linhas de varredura e 3 colunas de recepção ocupando um total de 7 ports (P1.1 e P1.7). O programa deve, com o auxílio dos timers internos, providenciar um processo de varredura que garanta a colocação de nível baixo nas linhas. O programa de leitura do teclado lerá a entrada e ativará o bit respectivo. Esquema do Teclado 3) - Procedimento: 3.1) - Editar o programa abaixo: ;*** inicio do programa da experiência número 8 *** ;* NOME: ;* NUMERO: ;* TURMA: ;*** ;* ROTINA DE LEITURA DO TECLADO ;* ;* - LE O TECLADO A CADA 50 MSEG. (TIMERO) ;* - A CONDICAO DO TECLADO E' COLOCADO NA AREA BOOLEANA ;* - CONTROLA LED 1 PELA CONDICAO DA CHAVE 1 E O LED 2 PELA CONDICAO ; ;* DA CHAVE 4 ;*** ;*** ;* DEFINICAO DOS LABELS TECLA1 TECLA2 TECLA3 EQU EQU EQU 1 2 3 ;ARMAZENA CHAVE 1 EM 20.0 35 APOSTILA DE LABORATÓRIO TECLA4 EQU TECLA5 EQU TECLA6 EQU TECLA7 EQU TECLA8 EQU TECLA9 EQU TECLAST EQU TECLA0 EQU TECLATRA EQU COLUN1 BIT COLUN2 BIT COLUN3 BIT LINHA1 BIT LINHA2 BIT LINHA3 BIT LINHA4 BIT LED1 BIT LED2 BIT ;* CONSTANTES PILHA EQU MACKENZIE MICROPROCESSADORES APLICAÇÃO 4 5 6 7 8 9 10 11 12 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P3.2 P3.3 60H ;*** TIMER 0- GERADA A CADA 50 MILISENGUNDOS ;* ;* TIMER = FFFFh - 50000 = 3CAFH ;*** TIMERH0 EQU 03CH ;TIMER ALTO 0 TIMERL0 EQU 0AFH ;TIMER BAIXO 0 INICIO: INIPRG: ORG AJMP ORG RETI ORG AJMP ORG RETI ORG RETI ORG RETI 0 INIPRG 3 ;SALTA VETORES DE INTERRUPCAO ;INTERRUPCAO EXTERNA 0 0BH ;INTERRUPCAO DO TIMER 0 13H ;INTERRUPCAO EXTERNA 1 1BH ;INTERRUPCAO DO TIMER 1 23H ;INTERRUPCAO SERIAL LETEC ORG CLR CLR MOV MOV 30H LED1 LED2 SP,#PILHA PSW,#08H MOV MOV MOV IE,#10000010B TL0,#TIMERL0 TH0,#TIMERH0 ;DEFINE PILHA ;DEFINE BANCO 1 DE ;REGISTRADORES 'R' ;HABILITA TIMER0 ;CARREGA TIMER 0 BAIXO ;CARREGA TIMER 0 ALTO 36 APOSTILA DE LABORATÓRIO MOV ;* PROGRAMA ;* CONTROLA LECH1: JB LIGLED1: CONT1: JB LIGLED2: CONT2: JMP ;*** FIM DO ;*** INICIO LETEC: SALTO1: JB SALTO2: JB SALTO3: SETB MACKENZIE TMOD,#00010001B ;DESATIVA GATE, UTILIZA ;TEMPORIZACAO ;INTERNA E MODO 1 (16 ;BITS) TR0 ;FAZ TIMER0 RODAR 20H,#00 ;ZERA CONDICAO DAS TECLAS 21H,#00 LINHA1 LINHA2 LINHA3 LINHA4 SETB MOV MOV SETB SETB SETB SETB PRINCIPAL LEDS ATRAVÉS DA CONDICAO DO TECLADO TECLA1,LIGLED1 CLR LED1 JMP CONT1 SETB LED1 TECLA2,LIGLED2 CLR LED2 JMP CONT2 SETB LED1 LECH1 PROGRAMA PRINCIPAL DA AREA DE SUBROTINAS MOV TL0,#TIMERL0 ;CARREGA TIMER 0 BAIXO MOV TH0,#TIMERH0 ;CARREGA TIMER 0 ALTO MOV 20H,#00 MOV 21H,#00 CLR LINHA1 JB COLUN1,SALTO1 SETB TECLA1 COLUN2,SALTO2 SETB TECLA2 COLUN3,SALTO3 SETB TECLA3 LINHA1 SALTO6: SETB CLR LINHA2 JB COLUN1,SALTO4 SETB TECLA4 COLUN2,SALTO5 SETB TECLA5 COLUN3,SALTO6 SETB TECLA6 LINHA2 SALTO7: JB CLR LINHA3 JB COLUN1,SALTO7 SETB TECLA7 COLUN2,SALTO8 SALTO4: JB SALTO5: JB MICROPROCESSADORES APLICAÇÃO 37 APOSTILA DE LABORATÓRIO SALTO8: JB SALTO9: SETB SALTO10: SALTO11: SALTO12: MACKENZIE MICROPROCESSADORES APLICAÇÃO SETB TECLA8 COLUN3,SALTO9 SETB TECLA9 LINHA3 CLR JB SETB JB SETB JB SETB SETB RETI END LINHA4 COLUN1,SALTO10 TECLAST COLUN2,SALTO11 TECLA0 COLUN3,SALTO12 TECLATRA LINHA4 3.2) - Simular o acionamento da chave 1 colocando 0 na COLUNA1 (BIT P1.1). Verificar a condição do led1 chave1=0 -> led1 = chave1=1 -> led1 = 3.3) - Simular o acionamento da chave 2 colocando 0 na COLUNA2 (BIT P1.2). Verificar a condição do led2 chave2=0 -> led2 = chave2=1 -> led2 = 38 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO FOLHA DE RESPOSTAS – EXPERIÊNCIA 8 Nome:____________________________ número:__________ Data: ________________ Visto: ________________ 1) – Explicar, objetivamente, o funcionamento de um teclado matricial de 16 teclas. 2) – Quantos ports são necessários para implementar um teclado do PC? 3) – Respostas da experiência: chave1=0 -> led1 = chave1=1 -> led1 = chave2=0 -> led2 = chave2=1 -> led2 = 4) - Exercícios 4.1) - Projetar um teclado para 64 teclas utilizando P0 e P2. Fazer uma rotina de varredura. 4.2) – Pesquisar a forma de comunicação do teclado do PC com a placa principal. Desenhar a matriz de um teclado do PC. 39 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO EXPERIÊNCIA 9 - Comunicação Serial 1) - Objetivo: estudo da UART do 8051. 2) - Introdução teórica: Registradores de configuração: SCON SMOD - BIT DE CONF. DE VELOCIDADE TIMER1 - CONFIGURA VELOCIDADE 3) - Procedimento: 3.1) - Editar, com auxílio do editor de textos ‘NE’, o programa EXP7.ASM listado abaixo: ;*** inicio do programa da experiência número 8 ;* NOME: ;* NUMERO: ;* TURMA: ;*** ;* ROTINA DE TESTE - COMUNICAÇÃO SERIAL ;* - PISCA LED 1 E 2 A CADA 50 MSEG. ;* - TRANSMITE SERIALMENTE A PALAVRA ‘TESTE TX’ ;* - COLOCA O DADO RECEBIDO NO ENDERECO 30H ;*** CHAVE1 BIT P3.2 ;CONTROLE DO ESTRAPE 1 CHAVE2 BIT P3.4 ;CONTROLE DO ESTRAPE 2 LED1 BIT P3.3 ;CONTROLE DO LED1 LED2 BIT P3.5 LED3 BIT P3.6 RELE BIT P3.7 ;* CONSTANTES PILHA EQU 60H FTEMPO1 EQU 30H FTEMPO2 EQU 31H ORG 0 40 APOSTILA DE LABORATÓRIO INICIO: AJMP ORG RETI ORG RETI ORG RETI ORG RETI ORG JMP ORG INIPRG: MOV MOV MOV MOV MOV MOV MOV MOV MOV ;* LIMPA LEDS CLR CLR CLR CLR ;* INICIO DO FIRMWARE ROTINA: SETB CALL CLR SETB CALL CLR ;* TRANSMITE ‘TESTE TX’ TX: MOV CALL MOV CALL MOV CALL MOV CALL MOV CALL MOV CALL MOV CALL MOV CALL MACKENZIE MICROPROCESSADORES APLICAÇÃO INIPRG 3 ;SALTA VETORES DE INTERRUPCAO ;INTERRUPCAO EXTERNA 0 0BH ;INTERRUPCAO DO TIMER 0 13H ;INTERRUPCAO EXTERNA 1 1BH ;INTERRUPÇAO DO TIMER 1 23H ;INTERRUPÇAO SERIAL SERIAL 30H SP,#PILHA PSW,#08H TH1,#0FDH ;CARREGA TIMER1 COM RELOAD TMOD,#00100010B; TCON,#00H ;NAO RODA TIMER 1 (SIMULACAO) IE,#10011000B ;HABILITA INTER. SER. E T1 IP,#00010000B SCON,#01010000B ;MODO 1 E RX HABILITADO R0,#40H ;PONTEIRO DE MEMÓRIA LED1 LED2 LED3 RELE LED1 TEMPO05 LED1 LED2 TEMPO05 LED2 A,#’T’ TX1 A,#’E’ TX1 A,#’S’ TX1 A,#’T’ TX1 A,#’E’ TX1 A,#’ ’ TX1 A,#’T’ TX1 A,#’X’ TX1 41 APOSTILA DE LABORATÓRIO JMP MACKENZIE MICROPROCESSADORES APLICAÇÃO ROTINA ;* SUBROTINAS TEMPO05: PUSH FTEMPO1 PUSH FTEMPO2 MOV FTEMPO1,#255 RETEMP: MOV FTEMPO2,#255 RETEMP1: NOP NOP NOP NOP NOP DJNZ FTEMPO2,RETEMP1 DJNZ FTEMPO1,RETEMP POP FTEMPO2 POP FTEMPO1 RET ;* ROTINA DE TRANSMISSAO TX1: MOV SBUF,A JNB TI,$ CLR TI RET ;* ROTINA DE RECEPCAO SERIAL SERIAL: PUSH ACC CLR ES ;DESABILITA COM. SERIAL MOV A,SBUF MOV @R0,A CLR RI SETB ES ;HABILITA COM. SERIAL POP ACC RETI END 3.2) - Editar, compilar e simular o programa com auxílio das ferramentas conhecidas. 3.3) - Observar no simulador especialmente os campos IN e OUT do registrador SBUF. Quando ocorre uma transmissão, o campo OUT é preenchido automaticamente, o bit do registrador SCON (TI - segundo bit) precisa ser setado manualmente para indicar fim de transmissão. 3.4) - Para simular uma recepção, colocar manualmente o dado AA H no campo IN. Verificar que o bit RI do registrador SCON é setado e que o programa salta para o endereço 23H. 42 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO FOLHA DE RESPOSTAS – EXPERIÊNCIA 9 Nome:____________________________ número:__________ Data: ________________ 1) - Visto: ________________ Quais são os registradores de controle da UART do 8051? 2) – Inicializar a UART e o TIMER 1 do 8051 com 4800 baunds, habilitando a RX, 8N1 3) - Exercício 3.1) - Fazer um programa para receber os dados seriais a 2400 baunds (8N1), colocar o valor recebido no meio da segunda linha do display e retransmitir o a string "DADO SERIAL RECEBIDO -> X', onde x é o dado recebido. 3.2) - Programar em linguagem Assembler uma rotina para transmitir seu nome completo em maiusculo pela interface serial do P.C. e o estrape 1 do kit 8031 estiver em 0. Caso contrário, transmitir seu código de matrícula. Observar o padrão de transmissão abaixo: Estrape 1 baixo -> ´Nome Completo: FULANO DE TAL´ Estrape 1 alto -> ´Codigo de Matrícula: 0123456-7´ Colocar o dado recebido na recepção serial no primeiro dígito do display de LCD. Configurar a comunicação serial para 9600 baunds, 8N1. 3.3) - Fazer um cabo de comunicação para ligar o Kit 8031 com a saída COM2 do computador (utilizando conector DB25). Este cabo deverá ligar a saida TX do kit com o pino 3 do conector e a entrada RX do kit com o pino 2 do conector. Ligar o pino de referência 7 (GND) do conector com a referência do kit. 43 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO EXPERIÊNCIA 10 - Conversor A/D 8 bits 1) - Objetivo: rotina e esquema para adaptar um conversor A/D ADC0800 ao kit 8031. 2) - Introdução Teórica: Figura - Conversor A/D ADC0800 (ENDEREÇO 2000H-3FFFH) 3) - Procedimento: 3.1) - Editar o programa abaixo: ;*** inicio do programa da experiência número 10*** ;* NOME: ;* NUMERO: ;* TURMA: ;*** ;* - LE DADO DO CONVERSOR A/D A CADA 50 MILISEGUNDOS ;*;* - SE DADO MAIOR QUE 30H, LIGA VENTILADOR POR P1.O. CASO CONTRARIO, DESLIGA ;* ;*** ;*** ;* DEFINICAO DOS LABELS VENTIL BIT P1.0 LECONV BIT P1.1 ;SINAL PARA INICIO DE CONVERSAO EOC BIT P1.2 ;ENTRADA DE FIM DE CONVERSAO LED1 BIT P3.2 LED2 BIT P3.3 FLAGADC EQU 0 ;FLAG INDICANDO DADO DO CONVERSOR PRONTO ;* CONSTANTES PILHA EQU 60H ENDADC EQU 2000H ;ENDERECO DE ACESSO DO CONVERSOR ;* DEFINICOES 44 APOSTILA DE LABORATÓRIO DADOADC FTEMPO1 FTEMPO2 FVARIA1 FVARIA2 EQU EQU EQU EQU EQU MACKENZIE MICROPROCESSADORES APLICAÇÃO 40H 50H 51H 52H 53H ;*** TIMER 0- GERADA A CADA 50 MILISENGUNDOS ;* ;* TIMER = FFFFh - 50000 = 3CAF H ;*** TIMERH0 EQU 03CH ;TIMER ALTO 0 TIMERL0 EQU 0AFH ;TIMER BAIXO 0 INICIO: AJMP INIPRG: ORG INIPRG ORG RETI ORG AJMP ORG RETI ORG RETI ORG RETI ORG CLR CLR CLR MOV MOV 0BH LEADC 13H ;INTERRUPCAO DO TIMER 0 1BH ;INTERRUPCAO DO TIMER 1 23H ;INTERRUPCAO SERIAL ;INTERRUPCAO EXTERNA 1 30H LED1 LED2 VENTIL SP,#PILHA PSW,#08H SETB CLR CLR CLR ;DEFINE PILHA ;DEFINE BANCO 1 DE ;REGISTRADORES 'R' IE,#10000010B ;HABILITA TIMER0 TL0,#TIMERL0 ;CARREGA TIMER 0 BAIXO TH0,#TIMERH0 ;CARREGA TIMER 0 ALTO TH1,#0FDH ;9600 BAUNDS TMOD,#00010001B ;DESATIVA GATE, UTILIZA ;TEMPORIZACAO ;INTERNA E MODO 1 (16 ;BITS) TR0 TR1 FLAGADC LECONV ;ZERA SINAL ADC SETB CALL CLR SETB CALL LED1 TEMPO05 LED1 LED2 TEMPO05 MOV MOV MOV MOV MOV ;* PISCA LEDS RELOOP: 0 ;SALTA VETORES DE INTERRUPCAO 3 ;INTERRUPCAO EXTERNA 0 45 APOSTILA DE LABORATÓRIO CLR MACKENZIE MICROPROCESSADORES APLICAÇÃO LED2 ;* PROGRAMA PRINCIPAL ;* Monitora FLAG DO CONVERSOR ;* CONTROLA VENTILADOR VERIFICANDO SE DADO DO CONVERSOR >= 30H JNB FLAGADC,$ ;ESPERA LEITURA DO CONVERSOR CLR FLAGADC ;ZERA FLAG CLR C MOV A,DADOADC SUBB A,#30H ;SE DADOADC >= 30H, C=0 JNC DESLVEN SETB VENTIL JMP RELOOP DESLVEN: CLR VENTIL JMP RELOOP ;*** FIM DO PROGRAMA PRINCIPAL ;*** INICIO DA AREA DE SUBROTINAS ;*** SUBROTINA DE 0,5 SEGUNDOS ;* CRISTAL DE 12 Mhz -> 1 uSEG. DE TEMPO05: PUSH FTEMPO1 PUSH FTEMPO2 MOV FTEMPO1,#255 RETEMP: MOV FTEMPO2,#255 RETEMP1: NOP NOP NOP NOP NOP DJNZ FTEMPO2,RETEMP1 DJNZ FTEMPO1,RETEMP POP FTEMPO2 POP FTEMPO1 RET ;* SUBROTINA DE TEMPO - 15 MSEG. TEMPO15: PUSH FTEMPO1 PUSH FTEMPO2 MOV FTEMPO1,#35 ;35 X RETEMPA: MOV FTEMPO2,#255 RETEMP1A: NOP NOP NOP NOP NOP DJNZ FTEMPO2,RETEMP1A DJNZ FTEMPO1,RETEMPA POP FTEMPO2 POP FTEMPO1 CICLO ;255 X 255 = 65025 LOOPS ;LOOP COM 7 CICLOS ;LOOP SECUNDARIO COM 9 CICLOS 255 = 8925 LOOPS ;LOOP COM 7 CICLOS ;LOOP SECUNDARIO COM 9 CICLOS 46 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO RET ;*** SUBROTINAS DE INTERRUPCAO T0 ;* LE CONVERSOR ADC SETANDO SINAL ENDADC E ESPERANDO EOC ;* REGISTRADORES ALTERADOS: ACC ;*** LEADC: PUSH ACC MOV TL0,#TIMERL0 ;CARREGA TIMER 0 BAIXO MOV TH0,#TIMERH0 ;CARREGA TIMER 0 ALTO SETB LECONV JNB EOC,$ ;AGUARDA FIM DE CONVERSAO MOV DPTR,#ENDADC MOVX A,@DPTR MOV DADOADC,A SETB FLAGADC CLR LECONV POP ACC RETI END 3.2) - Compilar o programa acima e converter arquivo em hexadecimal. 3.3) - Simular o programa com auxílio do programa AVSIM51. 3.4) - Simular a rotina de leitura do conversor colocando FFFEH no timer0. 3.4) - A cada interrupção do timer0, ler o conversor (mensagem de erro) e colocar no acumulador dado a ser colocado no display. Se dado menor que 30h, observar o ventilador (P1.0) sendo desligado. Caso contrário, verificar acionamento do ventilador. Observar igualmente a conversão do dado do conversão em ASCII. 47 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO FOLHA DE RESPOSTAS – EXPERIÊNCIA 10 Nome:____________________________ número:__________ Data: ________________ Visto: ________________ 1) – Fazer um esquema de um conversor ADC ligado ao 8051 com endereço 4000h - 5fffh 2) – Fazer uma rotina para ler o conversor ADC e colocar o dado no registrador R0 3) - Exercício: 3.1) - Fazer um projeto com um conversor ADC0800 (endereço A000H-Bfffh) transmitindo serialmente (convertidos em ASCII) os dados lidos a cada 0,1 segundos (utilizar timer1). 48 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO EXPERIÊNCIA 11 - PROJETO COMPLETO 1) - Objetivo: elaborar projeto completo com o kit 8031. 2) - Procedimento: fazer um projeto para os kit 8031 com as seguintes características: - Teclado matricial telefônico (p1.1 a p1.7) RAM 16 K (62128) endereço 8000h-bfffh Conversor ADC0800 (2000H-3FFFH). Interface serial full-duplex RS-232 BIOS: - Inicializar display com mensagem KIT 8031 TECLADO = - Colocar dado serial na RAM sequencialmente - Colocar dado do teclado no display (leitura a cada 100 msegundos) - Se for teclado a sequencia #01 transmitir dados da RAM - Ler conversor a cada 50 msegundos. Se valor menor que 80h, ligar rele. Caso contrario, desligar rele. 49 APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO EXPERIÊNCIA 12 - APRESENTAÇÃO DO PROJETO DE PESQUISA Em grupo de até 4 alunos, deve-se apresentar uma proposta escrita com os seguintes pontos: 1) - Descrição do produto baseada no kit 8031. - Justificativa mercadológica do produto, preferencialmente através de uma análise virtual do mercado a que o produto se destine e sua posição em relação a possíveis concorrentes. Descrever possíveis clientes. - Esquema elétrico completo com descritivo de funcionamento. - Lista de material com preço de cada ítem. - Estimativa final de preço do produto. - Apresentar, com uma encadernação simples, documentação completa do projeto. 2) – Apresentar o projeto com o kit 8031 mostrando seu funcionamento. 50