56
www.m ackenzie.com.br APOSTILA LABORATÓRIO DE MICROPROCESSADORES APLICAÇÃO PRIMEIRO SEMESTRE - 2004

UNIVERSIDADE MACKENZIEmeusite.mackenzie.com.br/ivair/download/ALABMA2004_s1.doc  · Web vie. APOSTILA . LABORATÓRIO DE MICROPROCESSADORES . APLICAÇÃO. PRIMEIRO SEMESTRE - 2004

Embed Size (px)

Citation preview

www.mackenzie.com.br

APOSTILA LABORATÓRIO DE

MICROPROCESSADORES APLICAÇÃO

PRIMEIRO SEMESTRE - 2004

PROF. IVAIR REIS N. ABREU

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO

www.ivair.com.br

2

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 31

EXPERIÊNCIA 7 - TECLADO MATRICIAL 32

FOLHA DE RESPOSTAS – EXPERIÊNCIA 7 36

EXPERIÊNCIA 8 - COMUNICAÇÃO SERIAL 37

FOLHA DE RESPOSTAS – EXPERIÊNCIA 8 40

EXPERIÊNCIA 9 - CONVERSOR A/D 8 BITS 41

3

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO FOLHA DE RESPOSTAS – EXPERIÊNCIA 9 45

EXPERIÊNCIA 10 - PROJETO COMPLETO 46

EXPERIÊNCIA 11 - INTRODUÇÃO AO START KIT TMS320 47

FOLHA DE RESPOSTAS – EXPERIÊNCIA 11 48

EXPERIÊNCIA 12 - APRESENTAÇÃO DO PROJETO DE PESQUISA 49

Revisão: 05/08/2003

4

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO

PLANEJAMENTO DIDÁTICO PEDAGÓGICO LABORATÓRIO DE MICROPROCESSADORES APLICAÇÃO

SEGUNDO SEMESTRE 2003CURSO SUPERIOR DE TECNOLOGIA ELÉTRICA

UNIDADE: F.C.IDISCIPLINA: Laboratório de Microprocessadores AplicaçãoPROFESSOR: Ivair Reis Neves AbreuDepartamento: EletrônicaETAPA: 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.

METODOLOGIAAula 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ÇÃONota 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 AbreuInternet:www.microcontroller.comwww.8052.comwww.vidal.com.brwww.icmaster.comwww.microchip.comwww.ti.comwww.zilog.comwww.motorola.comwww.cypress.com

5

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO

EXPERIÊNCIA 1 - Revisão ASM51/AVSIM51

1) - Objetivo: revisão dos comandos básicos do sistema de desenvolvido ASM51/AVSIM51

2) - Introdução Teórica:

- Edição: utilizar o programa EDIT (DOS) ou BLOCO DE NOTAS. Se 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).

- 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

6

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:

7

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.ASMASM51 EXP1.ASMOH 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.

8

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.

9

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO

EXPERIÊNCIA 2 - Revisão ASM51/AVSIM51

1) - Objetivo: revisão dos comandos básicos do sistema de desenvolvido ASM51/AVSIM51

2) - Introdução Teórica:

- Edição: utilizar o programa EDIT (DOS) ou BLOCO DE NOTAS. Se 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).

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 70hendre equ 50h ;area para armazenar resultados arit.endmex equ 2000h;area de memoria externa

org 0inicio: jmp iniprg

org 30hiniprg: mov sp,#pilha

mov a,#01;* rotina aritméticarotina: mov r0,#05h

mov r1,#endre

10

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO ;operacao de soma

add a,r0mov @r1,a ;guarda resultado da somainc r1 ;incrementa endereco resultado

;operacao OUmov a,#053hmov r0,#0a5horl a,r0mov @r1,ainc r1inc ajmp rotinaend

3.2) - Compilar o programa seguindo a seguinte sequência:FIX EXP2.ASMASM51 EXP2.ASMOH 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 =

11

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?

12

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. Resultado em A.

ORL operando1,operando2: operação OU entre operandos. Resultado em A.

XRL operando1,operando2: operação XOR entre operandos. Resultado em A.

CLR A: zera acumuladorCPL A: inverte acumuladorRL A: rotaciona acumulador para esquerdaRLC A: rotaciona acumulador com carry para esquerda.RR A: rotaciona acumulador para direitaRRC A: rotaciona acumulador com carry para esquerda.SWAP A: troca os nibbles do acumulador.

13

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:

- 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 ->

inverso do bit). Resultado no carry.- ORL C,bit (/bit): operação OU entre o carry e o bit (/bit ->

inverso 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 50hmemext equ 2000hresult equ 30h;definicoes boleanaschave bit p1.0

14

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO motor bit p1.1memcha equ 0

org 0

jmp inicioorg 30h

inicio: mov sp,#pilha ;define pilha internamov dptr,#memext ;define ponteiro de memória

;externa mov r0,#0aah ;carrega r0 com aahmov r1,#7fhmov r2,#01hmov r3,#02hmov r4,#03hmov r5,#04hmov r6,#05hmov r7,#06hmov a,#55h

retor: call revarlo ;subrotina aritméticacall revbooljmp retor

;* subrotinas;* revisao das instrucoes aritmético/logicas

revarlo: push accmov a,P0 ;le o valor de P0mov r0,#05hmov r1,#resultadd a,r0mov @r1,a ;guarda resultado da somainc r1mov r0,#02hsubb a,r0mov @r1,ainc r1mov b,#6fhmul abmov @r1,ainc r1mov @r1,binc r1mov b,#02hdiv abmov @r1,ainc r1

;* rotina lógicamov a,#0ffhmov r0,#0ah

15

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO

anl a,r0mov @r1,ainc r1mov r0,#0a5horl a,r0mov @r1,ainc r1xrl a,r0mov @r1,ainc r1mov a,#0a5hcpl aswap amov @r1,ainc r1rl arl arr amov @r1,apop accret

;* revisao das instrucoes booleanasREVBOOL: PUSH ACC

PUSH PSW MOV C,CHAVE

CPL C ;INVERTE CONDICAO CPL CMOV MEMCHA,C ;GUARDA NA MEMORIAJB MEMCHA,ligamo ;SE CHAVE=1, LIGA MOTOR CLR MOTORJMP FIMROBO

LIGAMO: SETB MOTORFIMROBO: POP PSW

POP ACCRETEND

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.HEX3.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.

16

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 =

17

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=

18

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO

EXPERIÊNCIA 4 - KIT 8031

1) - Objetivo: sistema de controle com o 8051. Revisão do kit 8031. Revisão do display de LCD.

2) - Introdução Teórica:

KIT 8031 -> MICROCONTROLADOR 8031MEMÓRIA EPROM 27643 LEDS -> PORTS P3.3, P3.5, P3.61 RELE -> PORT P3.02 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 linhaC0H-> 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:

19

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO 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.

;*** 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 1CHAVE2 BIT P3.4 ;CONTROLE DO ESTRAPE 2LED1 BIT P3.3 ;CONTROLE DO LED1LED2 BIT P3.5RELE BIT P1.0;* CONSTANTES E VARIAVEISPILHA EQU 60HFTEMPO1 EQU 30H ;MEMORIA RAM - RASCUNHOFTEMPO2 EQU 31HFVARIA1 EQU 32HFVARIA2 EQU 33HDISPLAYC EQU 00 ;ENDERECO DE CONTROLE DO DISPLAYDISPLAYD EQU 01 ;ENDERECO DE DADO DO DISPLAY

ORG 0INICIO: AJMP INIPRG ;SALTA VETORES DE INTERRUPCAO

ORG 3 ;INTERRUPCAO EXTERNA 0RETIORG 0BH ;INTERRUPCAO DO TIMER 0RETIORG 13H ;INTERRUPCAO EXTERNA 1RETIORG 1BH ;INTERRUPCAO DO TIMER 1RETIORG 23H ;INTERRUPCAO SERIALRETIORG 30H

INIPRG: MOV SP,#PILHA ;DEFINE PILHAMOV PSW,#08H ;DEFINE BANCO 1 DE

;REGISTRADORES 'R'CLR LED1CLR LED2CLR RELECALL INIDSP ;INICIALIZA DISPLAY

;*** INICIO DO FIRMWARE;* Pisca leds 1, 2, 3 e rele com tempo de 0,5 segundosINIC: SETB LED1

CALL TEMPO05

20

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO

CLR LED1SETB LED2CALL TEMPO05CLR LED2SETB RELECALL TEMPO05CLR RELE ;DESLIGA SAIDASCLR LED1CLR LED2CLR RELE

; ESCREVE NA PRIMEIRA LINHA E SEGUNDA LINHA DO DISPLAY MOV DPTR,#LINHA1 ;ESCREVE NA LINHA 1CALL LSUPERMOV DPTR,#LINHA2 ;ESCREVE NA LINHA 2CALL LINFER

LECH1: MOV C,CHAVE1 ;LE CHAVE 1JNC DESLI ;SE CHAVE 1 = 0, SALTASETB LED1SETB LED2SETB RELEJMP LECH1

DESLI: CLR LED1CLR LED2CLR RELEJMP LECH1

;*** FIM DA ROTINA PRINCIPAL;*** INICIO DAS SUBROTINAS;* INICIALIZA DISPLAY INIDSP: PUSH ACC

PUSH DPHPUSH DPLMOV DPTR,#DISPLAYC ;indica controleMOV A,#38H ;2 LINHAS 5X7MOVX @DPTR,ACALL TEMPO15 ;ESPERA 15 MSEGMOV A,#38H ;REPETE COMANDO LINHAMOVX @DPTR,ACALL TEMPO15MOV A,#0CH ;SEM CURSOR MOVX @DPTR,ACALL TEMPO15MOV A,#06H ;CURSOR A DIREITAMOVX @DPTR,ACALL TEMPO15MOV A,#01H ;LIMPA DISPLAYMOVX @DPTR,ACALL TEMPO15POP DPLPOP DPH

21

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO

POP ACCRET

;* ROTINA DE 0,5 SEGUNDOS;* CRISTAL DE 12 Mhz -> 1 uSEG. DE CICLOTEMPO05: PUSH FTEMPO1

PUSH FTEMPO2MOV FTEMPO1,#255 ;255 X 255 = 65025 LOOPS

RETEMP: MOV FTEMPO2,#255RETEMP1: NOP ;LOOP COM 7 CICLOS

NOPNOPNOPNOPDJNZ FTEMPO2,RETEMP1DJNZ FTEMPO1,RETEMP ;LOOP SECUNDARIO COM 9 CICLOSPOP FTEMPO2POP FTEMPO1RET

;* SUBROTINA DE TEMPO - 15 MSEG.TEMPO15: PUSH FTEMPO1

PUSH FTEMPO2MOV FTEMPO1,#35 ;35 X 255 = 8925 LOOPS

RETEMPA: MOV FTEMPO2,#255RETEMP1A: NOP ;LOOP COM 7 CICLOS

NOPNOPNOPNOPDJNZ FTEMPO2,RETEMP1ADJNZ FTEMPO1,RETEMPA ;LOOP SECUNDARIO COM 9 CICLOSPOP FTEMPO2POP FTEMPO1RET

;* ROTINA DO DISPLAY PARA ESCREVER LINHA SUPERIOR;*;* RECEBE EM DPTR ENDERECO DA TABELA DA LINHA;*LSUPER: MOV FVARIA1,DPH ;SALVA ENDERECO RECEBIDO

MOV FVARIA2,DPLMOV DPTR,#DISPLAYCMOV A,#80H ;POSICAO INICIALMOVX @DPTR,ACALL TEMPO15 ;ESPERA 15 MSEG.MOV R0,#16 ;16 CARACTERESCLR AMOV R2,A

RLSUP: MOV DPH,FVARIA1 ;ENDERECO MENSAGEM INICIALMOV DPL,FVARIA2

22

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO

MOVC A,@A+DPTRMOV DPTR,#DISPLAYDMOVX @DPTR,A ;ENVIA DADO PARA O DISPLAYCALL TEMPO15 ;ESPERA 15 MSEG.INC R2 ;INCREMENTA PONTEIROMOV A,R2DJNZ R0,RLSUPRET

;* ROTINA DO DISPLAY PARA ESCREVER LINHA INFERIOR;* RECEBE EM DPTR ENDERECO DA TABELA DA LINHALINFER: MOV FVARIA1,DPH ;SALVA ENDERECO RECEBIDO

MOV FVARIA2,DPLMOV DPTR,#DISPLAYCMOV A,#0C0H ;POSICAO INICIALMOVX @DPTR,ACALL TEMPO15 ;ESPERA 15 MSEG.MOV R0,#16 ;16 CARACTERESCLR AMOV R2,A

RLINF: MOV DPH,FVARIA1 ;ENDERECO MENSAGEM INICIALMOV DPL,FVARIA2MOVC A,@A+DPTRMOV DPTR,#DISPLAYDMOVX @DPTR,A ;ENVIA DADO PARA O DISPLAYCALL TEMPO15 ;ESPERA 15 MSEG.INC R2 ;INCREMENTA PONTEIROMOV A,R2DJNZ R0,RLINFRET

;* TABELASLINHA1: DB 'REVISAO 'LINHA2: DB 'KIT 8031 '

END3.2) - Corrigir arquivo editado com o programa FIX:

FIX EXP4.ASM3.3) - Compilar arquivo corrigido:

ASM51 EXP4.ASM3.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.HEX3.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

23

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO superior e linha inferior). Alterar a condiçao da chaves 1 e verificar o efeito sobre os leds e o rele.

24

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 INIDSPMOV DPTR,#LINHA1CALL LSUPERMOV DPTR,#LINHA2CALL LINFER....

;TABELASLINHA1: DB ‘EXPERIENCIA’LINHA2: DB ‘NUMERO 4’

END

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

25

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 -> EXITPROGRAM -> 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.

26

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.

27

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.

28

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:

29

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.

30

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).

31

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: o microcontrolador da família 8051 possui 2 timers de 16 bits.

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 (interrupção externa 0) -> 0003HTF0 (interrupção do timer 0) -> 000BHIE1 (interrupção externa 1) -> 0013HTF1 (interrupção do timer 1) -> 001BHSRT (interface serial) -> 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:

32

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 lâmpadas. ;* DEFINE CONDICAO DO PORT 1CHAVE1 BIT P1.0 ;CONTROLE DO ESTRAPE 1CHAVE2 BIT P1.1 ;CONTROLE DO ESTRAPE 2CHAVE3 BIT P1.2 ;CONTROLE DO ESTRAPE 3CHAVE4 BIT P1.3 ;CONTROLE DO ESTRAPE 4LAMP1 BIT P1.4 ;CONTROLE DA LAMPADA 1LAMP2 BIT P1.5LAMP3 BIT P1.6LAMP4 BIT P1.7;* DEFINE AREA DE MEMORIA BOOLEANA (20.0 A 2F.F)MEMCH1 EQU 0MEMCH2 EQU 1MEMCH3 EQU 2MEMCH4 EQU 3;* CONSTANTESPILHA EQU 60H;* FLAGSFTEMPO1 EQU 30H ;CONTADOR DE TEMPO 1

;*** TIMER 0- GERADA A CADA 0,5 MILISENGUNDOS;*** ;*** X = FFFFh – (500 useg / 1 useg) = FE08h;***

TIMERH0 EQU 0FEH ;TIMER ALTO 0 TIMERL0 EQU 008H ;TIMER BAIXO 0

ORG 0INICIO: JMP INIPRG ;SALTA VETORES DE INTERRUPCAO

ORG 3 ;INTERRUPCAO EXTERNA 0RETIORG 0BH ;INTERRUPCAO DO TIMER 0AJMP TIM0ORG 13H ;INTERRUPCAO EXTERNA 1RETIORG 1BH ;INTERRUPCAO DO TIMER 1

33

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO

RETIORG 23H ;INTERRUPCAO SERIALRETI

ORG 30HINIPRG: CLR LAMP1

CLR LAMP2CLR LAMP3CLR LAMP4MOV SP,#PILHA ;DEFINE PILHAMOV PSW,#08H ;DEFINE BANCO 1 DE

;REGISTRADORES 'R';* INICIALIZA SISTEMA DE TEMPORIZACAO E INTERRUPCAO

MOV IE,#10000010B ;HABILITA TIMER0MOV IP,#00000001B ;TIMER 0 E 1 COM IGUAL

;*PRIORIDADEMOV TL0,#TIMERL0 ;CARREGA TIMER 0 BAIXOMOV TH0,#TIMERH0 ;CARREGA TIMER 0 ALTOMOV TMOD,#00010001B ;DESATIVA GATE, UTILIZA

;TEMPORIZACAO ;INTERNA E MODO 1 (16 ;BITS)

SETB TR0CLR MEMCH1 ;LIMPA AREA BINARIACLR MEMCH2CLR MEMCH3CLR MEMCH4

;*** INICIO DO LOOP DE ESPERAJMP $

;*** 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 BAIXOMOV TH0,#TIMERH0 ;CARREGA TIMER 0 ALTO

;SALVA CONDICAO DAS CHAVES NA MEMORIAMOV C,CHAVE1 ;LE CHAVE 1 DO PORT 1.0MOV MEMCH1,C ;GUARDA CONDICAO NA MEMORIAMOV C,CHAVE2MOV MEMCH2,CMOV C,CHAVE3MOV MEMCH3,CMOV C,CHAVE4MOV MEMCH4,C

;CONTROLE DAS LAMPADASJB MEMCH1,LIGALP1

34

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO

CLR LAMP1JMP CONT1

LIGALP1: SETB LAMP1CONT1: JB MEMCH2,LIGALP2

CLR LAMP2JMP CONT2

LIGALP2: SETB LAMP2CONT2: JB MEMCH3,LIGALP3

CLR LAMP3JMP CONT3

LIGALP3: SETB LAMP3CONT3: JB MEMCH4,LIGALP4

CLR LAMP4JMP CONT4

LIGALP4: SETB LAMP4CONT4:

POP PSWRETIEND

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

35

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ícios4.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).

36

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 EQU 1 ;ARMAZENA CHAVE 1 EM 20.0TECLA2 EQU 2TECLA3 EQU 3

37

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO TECLA4 EQU 4TECLA5 EQU 5TECLA6 EQU 6TECLA7 EQU 7TECLA8 EQU 8TECLA9 EQU 9TECLAST EQU 10TECLA0 EQU 11TECLATRA EQU 12COLUN1 BIT P1.1COLUN2 BIT P1.2COLUN3 BIT P1.3LINHA1 BIT P1.4LINHA2 BIT P1.5LINHA3 BIT P1.6LINHA4 BIT P1.7LED1 BIT P3.2LED2 BIT P3.3;* CONSTANTESPILHA EQU 60H

;*** TIMER 0- GERADA A CADA 50 MILISENGUNDOS;*;* TIMER = FFFFh - 50000 = 3CAFH;***TIMERH0 EQU 03CH ;TIMER ALTO 0 TIMERL0 EQU 0AFH ;TIMER BAIXO 0

ORG 0INICIO: AJMP INIPRG ;SALTA VETORES DE INTERRUPCAO

ORG 3 ;INTERRUPCAO EXTERNA 0RETIORG 0BH ;INTERRUPCAO DO TIMER 0AJMP LETECORG 13H ;INTERRUPCAO EXTERNA 1RETIORG 1BH ;INTERRUPCAO DO TIMER 1RETIORG 23H ;INTERRUPCAO SERIALRETI

ORG 30HINIPRG: CLR LED1

CLR LED2MOV SP,#PILHA ;DEFINE PILHAMOV PSW,#08H ;DEFINE BANCO 1 DE

;REGISTRADORES 'R'MOV IE,#10000010B ;HABILITA TIMER0MOV TL0,#TIMERL0 ;CARREGA TIMER 0 BAIXOMOV TH0,#TIMERH0 ;CARREGA TIMER 0 ALTO

38

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO

MOV TMOD,#00010001B ;DESATIVA GATE, UTILIZA ;TEMPORIZACAO

;INTERNA E MODO 1 (16 ;BITS)

SETB TR0 ;FAZ TIMER0 RODARMOV 20H,#00 ;ZERA CONDICAO DAS TECLASMOV 21H,#00SETB LINHA1SETB LINHA2SETB LINHA3SETB LINHA4

;* PROGRAMA PRINCIPAL;* CONTROLA LEDS ATRAVÉS DA CONDICAO DO TECLADOLECH1: JB TECLA1,LIGLED1

CLR LED1JMP CONT1

LIGLED1: SETB LED1CONT1: JB TECLA2,LIGLED2

CLR LED2JMP CONT2

LIGLED2: SETB LED1CONT2: JMP LECH1;*** FIM DO PROGRAMA PRINCIPAL;*** INICIO DA AREA DE SUBROTINASLETEC: MOV TL0,#TIMERL0 ;CARREGA TIMER 0 BAIXO

MOV TH0,#TIMERH0 ;CARREGA TIMER 0 ALTOMOV 20H,#00MOV 21H,#00CLR LINHA1JB COLUN1,SALTO1SETB TECLA1

SALTO1: JB COLUN2,SALTO2SETB TECLA2

SALTO2: JB COLUN3,SALTO3SETB TECLA3

SALTO3: SETB LINHA1

CLR LINHA2JB COLUN1,SALTO4SETB TECLA4

SALTO4: JB COLUN2,SALTO5SETB TECLA5

SALTO5: JB COLUN3,SALTO6SETB TECLA6

SALTO6: SETB LINHA2

CLR LINHA3JB COLUN1,SALTO7SETB TECLA7

SALTO7: JB COLUN2,SALTO8

39

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO

SETB TECLA8SALTO8: JB COLUN3,SALTO9

SETB TECLA9SALTO9: SETB LINHA3

CLR LINHA4JB COLUN1,SALTO10SETB TECLAST

SALTO10: JB COLUN2,SALTO11SETB TECLA0

SALTO11: JB COLUN3,SALTO12SETB TECLATRA

SALTO12: SETB LINHA4RETIEND

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 =

40

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ícios4.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.

41

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 1CHAVE2 BIT P3.4 ;CONTROLE DO ESTRAPE 2LED1 BIT P3.3 ;CONTROLE DO LED1LED2 BIT P3.5LED3 BIT P3.6RELE BIT P3.7;* CONSTANTESPILHA EQU 60HFTEMPO1 EQU 30H

42

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO FTEMPO2 EQU 31H

ORG 0INICIO: AJMP INIPRG ;SALTA VETORES DE INTERRUPCAO

ORG 3 ;INTERRUPCAO EXTERNA 0RETIORG 0BH ;INTERRUPCAO DO TIMER 0RETIORG 13H ;INTERRUPCAO EXTERNA 1RETIORG 1BH ;INTERRUPÇAO DO TIMER 1RETIORG 23H ;INTERRUPÇAO SERIALJMP SERIALORG 30H

INIPRG: MOV SP,#PILHAMOV PSW,#08HMOV TH1,#0FDH ;CARREGA TIMER1 COM RELOADMOV TMOD,#00100010B;MOV TCON,#00H ;NAO RODA TIMER 1 (SIMULACAO)MOV IE,#10011000B ;HABILITA INTER. SER. E T1MOV IP,#00010000BMOV SCON,#01010000B ;MODO 1 E RX HABILITADOMOV R0,#40H ;PONTEIRO DE MEMÓRIA

;* LIMPA LEDSCLR LED1CLR LED2CLR LED3CLR RELE

;* INICIO DO FIRMWAREROTINA: SETB LED1

CALL TEMPO05CLR LED1SETB LED2CALL TEMPO05CLR LED2

;* TRANSMITE ‘TESTE TX’TX: MOV A,#’T’

CALL TX1MOV A,#’E’CALL TX1MOV A,#’S’CALL TX1MOV A,#’T’CALL TX1MOV A,#’E’CALL TX1MOV A,#’ ’CALL TX1MOV A,#’T’CALL TX1

43

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO

MOV A,#’X’CALL TX1JMP ROTINA

;* SUBROTINASTEMPO05: PUSH FTEMPO1

PUSH FTEMPO2MOV FTEMPO1,#255

RETEMP: MOV FTEMPO2,#255RETEMP1: NOP

NOPNOPNOPNOPDJNZ FTEMPO2,RETEMP1DJNZ FTEMPO1,RETEMPPOP FTEMPO2POP FTEMPO1RET

;* ROTINA DE TRANSMISSAOTX1: MOV SBUF,A

JNB TI,$CLR TIRET

;* ROTINA DE RECEPCAO SERIALSERIAL: PUSH ACC

CLR ES ;DESABILITA COM. SERIALMOV A,SBUFMOV @R0,ACLR RISETB ES ;HABILITA COM. SERIALPOP ACCRETIEND

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.

44

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO

FOLHA DE RESPOSTAS – EXPERIÊNCIA 9 Nome:____________________________ número:__________

Data: ________________ Visto: ________________

1) - 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.

45

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 LABELSVENTIL BIT P1.0LECONV BIT P1.1 ;SINAL PARA INICIO DE CONVERSAOEOC BIT P1.2 ;ENTRADA DE FIM DE CONVERSAOLED1 BIT P3.2LED2 BIT P3.3FLAGADC EQU 0 ;FLAG INDICANDO DADO DO CONVERSOR PRONTO;* CONSTANTESPILHA EQU 60HENDADC EQU 2000H ;ENDERECO DE ACESSO DO CONVERSOR;* DEFINICOES

46

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO DADOADC EQU 40HFTEMPO1 EQU 50HFTEMPO2 EQU 51HFVARIA1 EQU 52HFVARIA2 EQU 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

ORG 0INICIO: AJMP INIPRG ;SALTA VETORES DE INTERRUPCAO

ORG 3 ;INTERRUPCAO EXTERNA 0RETIORG 0BH ;INTERRUPCAO DO TIMER 0AJMP LEADCORG 13H ;INTERRUPCAO EXTERNA 1RETIORG 1BH ;INTERRUPCAO DO TIMER 1RETIORG 23H ;INTERRUPCAO SERIALRETIORG 30H

INIPRG: CLR LED1CLR LED2CLR VENTILMOV SP,#PILHA ;DEFINE PILHAMOV PSW,#08H ;DEFINE BANCO 1 DE

;REGISTRADORES 'R'MOV IE,#10000010B ;HABILITA TIMER0MOV TL0,#TIMERL0 ;CARREGA TIMER 0 BAIXOMOV TH0,#TIMERH0 ;CARREGA TIMER 0 ALTOMOV TH1,#0FDH ;9600 BAUNDSMOV TMOD,#00010001B ;DESATIVA GATE, UTILIZA

;TEMPORIZACAO ;INTERNA E MODO 1 (16 ;BITS)

SETB TR0CLR TR1CLR FLAGADCCLR LECONV ;ZERA SINAL ADC

;* PISCA LEDS RELOOP: SETB LED1

CALL TEMPO05CLR LED1SETB LED2CALL TEMPO05

47

APOSTILA DE LABORATÓRIO MACKENZIE MICROPROCESSADORES APLICAÇÃO

CLR LED2

;* PROGRAMA PRINCIPAL;* Monitora FLAG DO CONVERSOR;* CONTROLA VENTILADOR VERIFICANDO SE DADO DO CONVERSOR >= 30H

JNB FLAGADC,$ ;ESPERA LEITURA DO CONVERSORCLR FLAGADC ;ZERA FLAGCLR CMOV A,DADOADCSUBB A,#30H ;SE DADOADC >= 30H, C=0JNC DESLVENSETB VENTILJMP RELOOP

DESLVEN: CLR VENTILJMP RELOOP

;*** FIM DO PROGRAMA PRINCIPAL

;*** INICIO DA AREA DE SUBROTINAS

;*** SUBROTINA DE 0,5 SEGUNDOS;* CRISTAL DE 12 Mhz -> 1 uSEG. DE CICLOTEMPO05: PUSH FTEMPO1

PUSH FTEMPO2MOV FTEMPO1,#255 ;255 X 255 = 65025 LOOPS

RETEMP: MOV FTEMPO2,#255RETEMP1: NOP ;LOOP COM 7 CICLOS

NOPNOPNOPNOPDJNZ FTEMPO2,RETEMP1DJNZ FTEMPO1,RETEMP ;LOOP SECUNDARIO COM 9 CICLOSPOP FTEMPO2POP FTEMPO1RET

;* SUBROTINA DE TEMPO - 15 MSEG.TEMPO15: PUSH FTEMPO1

PUSH FTEMPO2MOV FTEMPO1,#35 ;35 X 255 = 8925 LOOPS

RETEMPA: MOV FTEMPO2,#255RETEMP1A: NOP ;LOOP COM 7 CICLOS

NOPNOPNOPNOPDJNZ FTEMPO2,RETEMP1ADJNZ FTEMPO1,RETEMPA ;LOOP SECUNDARIO COM 9 CICLOSPOP FTEMPO2POP FTEMPO1

48

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 BAIXOMOV TH0,#TIMERH0 ;CARREGA TIMER 0 ALTOSETB LECONVJNB EOC,$ ;AGUARDA FIM DE CONVERSAOMOV DPTR,#ENDADCMOVX A,@DPTRMOV DADOADC,ASETB FLAGADCCLR LECONVPOP ACCRETIEND

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.

49

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).

50

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 8031TECLADO =

- 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.

51

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.

52