Laboratório de Microprocessadores e Microcontroladores

Documentos relacionados
Laboratório de Microprocessadores e Microcontroladores

Oprojeto apresenta três níveis de dificuldade: fácil, médio e difícil. No modo fácil tem-se uma

Microprocessadores e Microcontroladores. Prova Substitutiva Uma Solução

Microprocessadores e Microcontroladores Parte 3. Expansão de Memória Mapeamento de Memória

EXPERIÊNCIA 17 USO DO TEMPORIZADOR INTERNO

Ocircuito da Fig.1 é usado para o acionamento dos Leds do Cubo.

PROJETOS COM MICROCONTROLADORES

Laboratório de Microprocessadores e Microcontroladores. Experimento 7: Conversor Analógico/Digital e Conversor Digital/Analógico

Lista de Exercícios 1

Prof. Adilson Gonzaga. Interface com Displays

Interface com Displays de 7 Segmentos. Interface com Displays

DISPLAY LCD. Ilton L. Barbacena Claudio Afonso Fleury

Aplicações de Microprocessadores I. Prof. Adilson Gonzaga

LABORATÓRIO DE MICROPROCESSADORES E MICROCONTROLADORES

Cerne Tecnologia e Treinamento

Laboratório de Sistemas Processadores e Periféricos Lista de comandos de Assembly

USJT Universidade São Judas Tadeu ENGENHARIA ELÉTRICA - LAB. INTEGRADO. EXP4 : Interrupções do uc 8051

Projeto de TRABALHO DE CONCLUSÃO DO CURSO TÉCNICO EM Automação industrial. Catraca Automática

Copyright 2011 VW Soluções

Estrutura do programa e programação Assembly com O que entende por linguagem assembly?

Comandos de Eletropneumática Exercícios Comentados para Elaboração, Montagem e Ensaios

Parte II O microcontrolador Intel 8051

Ambiente de desenvolvimento de Programação Assembly MCU 8051 IDE

Presys Instrumentos e Sistemas

Sistemas Embarcados:

Professor Marcelo Josué Telles Porta LPT, programação, componentes eletrônicos, sistema binário...

Os 3 principais tipos de Instruções (INSTRUTION SET) dos up são:

CEFET-SP. Microcontroladores Família MCS-51 Conceitos, Aplicações e Projetos versão Wilson Ruiz. Wilson Ruiz

Engenharia Electrotécnica/ Engenharia Informática Microprocessadores e Aplicações

TRABALHO DE CONCLUSÃO DO CURSO TÉCNICO EM MECATRÔNICA. Esteira Contadora de Peças

Arquitetura de Computadores. Tipos de Instruções

ULA Sinais de Controle enviados pela UC

ALARME RESIDENCIAL UTILIZANDO MICROCONTROLADOR

Comércio e Manutenção de Produtos Eletrônicos. Mapeamento de memória e conexões do Controlador CP-WS13/8DI8DO2AI2AO/USB/OEM. Versão 1.

Microcontroladores Família MCS51

Acionamento de Motores: PWM e Ponte H

PROF.: PAULO GOMES MATÉRIA: STR1 MOURA LACERDA

Implementação de Projetos de Automação Automação Semestre 01/2015

A família de microcontroladores 8051

Eletrônica Digital II. Exemplo de um CI com encapsulamento DIP. Diagrama do CI 74XX76.

Unidade 1: O Computador

UNIVERSIDADE FEDERAL DE ITAJUBÁ PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA THIAGO POUZA MUSSOLINI

1345 Arquitectura de Computadores

Programando displays de cristal líqüido a partir da porta paralela do PC. Programming liquid crystal display from PC parallel port.

Controlador de DMA. Gustavo G. Parma

ROBÔ PARA ENTREGA DE OBJETOS

Cerne Tecnologia e Treinamento. suporte@cerne-tec.com.br

Organização de Computadores 1

Circuitos Digitais Contadores. Orivaldo Santana Jr.

1 Circuitos Pneumáticos

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO Escola Politécnica - Departamento de Engenharia Mecânica

Máquina de Venda Automática de Macarrão Instantâneo

Circuitos de Comunicação. Prática 1: PWM

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SÃO PAULO CAMPUS SÃO JOSÉ DOS CAMPOS

CRONÔMETRO DIGITAL PROJETO

Laboratório de Sistemas Processadores e Periféricos

Redes de Computadores

Objetivos Gerais. Arquitetura de Computadores. Arquiteturas estudadas. O Computador Neander

MICROPROCESSADORES E MICROCONTROLADORES

Arquitectura de Computadores. Dicas e Truques do Assembly do P3

Atividade prática: Rodando o programa SOMA

V1 5V +V. (14)Vdd (6)RB0 PIC 16F628A. (16) Clk-out. C1 33pF. C2 33pF. Figura 1 Circuito pisca-pisca.

DK105 GROVE. Temperatura e Umidade. Radiuino

Índice. tabela das versões do documento. GPOP - Gerenciador POP _ /01/2016 1/14. título: GPOP. assunto: Manual de utilização

FLIP FLOPS. EXPERIMENTS MANUAL Manual de Experimentos Manual de Experimentos M-1113A

Arquitetura de Computadores. Prof. João Bosco Jr.

Manual de Equipamento Balança

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

2 Segmentação de imagens e Componentes conexas

Figura 1 - Somador para dois números de 4 bits com extensores lógicos (EL) e Aritméticos(EA).

Microcontroladores. Prof. Nivaldo T. Schiefler Jr. M.Eng Homepage:

3º Trabalho de Laboratório. Unidade de Controlo Microprogramada

AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ORGANIZAÇÃO DE COMPUTADORES PROF. ADÃO DE MELO NETO

CONTROLE EM MALHA FECHADA DA VELOCIDADE DE UM MOTOR DC UTILIZANDO UM MICROCONTROLADOR 8051

Experiência 04: Comandos para testes e identificação do computador na rede.

LABORATÓRIO DE LINGUAGEM DE MONTAGEM INTERRUPÇÕES DO DOS E DA BIOS

8. Instruções de multiplicação e divisão

Uso de interrupções de BIOS/DOS

SUPERTEC2007 SINCRONISMO DETETOR DE MODOS MICRO

Programação Daniel Corteletti Aula 3 Parte III Página 1/7

7. Instruções lógicas, de deslocamento e de rotação

UNIVERSIDADE LUTERANA DO BRASIL ULBRA CONTROLE DE MOTOR DE PASSO VIA PORTA PARALELA -BUILDER C++ FABRÍCIO DE MARI

Notas de Aplicação. Utilizando ZAP500 com. Encoders. HI Tecnologia. Documento de acesso publico / corporativo

2 Formalidades referentes ao trabalho

Circuito Decodificador BCD para Display de Sete Segmentos

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

CARGA E DESCARGA DE CAPACITORES

Sistemas Numéricos. Tiago Alves de Oliveira

SISTEMAS DIGITAIS Universidade Católica - Exercício I

Terminal de Operação Cimrex 69

CR20I MANUAL DO USUÁRIO

Instituto Politécnico de Beja Escola Superior De Tecnologia e Gestão Departamento de engenharia. Tecnologias WAN

Laboratório de Circuitos Digitais 1

UniCEUB - Centro Universitário de Brasília Faculdade de Tecnologia e Ciências Sociais Aplicadas FATECS Projeto Final

1. NÍVEL CONVENCIONAL DE MÁQUINA (Cont.) 1.3. INSTRUÇÕES Conceitos Básicos

INT 5h - Print screen Modo Resolução Caract. INT 10h - Vídeo INT 10h - Vídeo

Módulo 8 Entradas Digitais 24 Vdc Monitorado. Os seguintes produtos devem ser adquiridos separadamente para possibilitar a utilização do produto:

Álgebra Linear Aplicada à Compressão de Imagens. Universidade de Lisboa Instituto Superior Técnico. Mestrado em Engenharia Aeroespacial

Sistemas Operacionais. Sincronização: Semáforos Problema dos Leitores/Escritores

Transcrição:

Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 4: Motor de Passo e Display LCD Alunos: Matrícula: Prof. Dr. José Wilson Lima Nerys Goiânia, 1º semestre de 2017

Laboratório de Microprocessadores e Microcontroladores 2 SUMÁRIO 1 Motor de Passo e Display LCD... 3 1.1 Motor de Passo... 3 1.2 Display LCD... 4 2 Atividades do Experimento 4... 5 2.1 Acionamento de Motor de Passo com Leitura de Tabela... 5 2.2 Acionamento de Motor de Passo com Rotação de Bits... 6 2.3 Contagem Crescente no Display LCD... 7 2.4 Contagem Decrescente no Display LCD... 10 2.5 Acionamento do Motor de Passo com Mensagem no Display LCD... 10

Laboratório de Microprocessadores e Microcontroladores 3 1 Motor de Passo e Display LCD 1.1 Motor de Passo O motor de passo consiste de um estator contendo bobinas que são acionadas usando corrente contínua e um rotor de ímã permanente, que gira a cada mudança das bobinas acionadas. Embora nas figuras a seguir as quatro bobinas sejam mostradas como únicas (concentradas), na prática elas são distribuídas ao longo do estator. Assim, pode-se obter um passo bem pequeno entre um pedaço de bobina e outro. O ângulo de passo típico do motor de passo utilizado aqui é 7,5. As figuras abaixo ilustram, de maneira simplificada, o funcionamento de um motor de passo. Observe que, na figura, uma volta completa do motor é alcançada após percorrer todas as bobinas uma vez. Na prática, uma volta completa é conseguida após uma passagem por todas as partes de cada bobina. Se cada passo for de 7,5, uma volta completa é alcançada com 48 passos. Na Fig. 1 também são mostrados os transistores usados no acionamento e as bobinas concentradas. É mostrada também uma tabela com os comandos que devem ser enviados para a porta de saída (na verdade, dados enviados ao periférico motor de passo) de forma que o motor de passo gire de meio em meio passo e com passo completo. Tabela 1: valores para acionamento do motor de passo - passo completo Passo P3 P2 P1 P0 HEX 1 0 0 0 1 01 2 0 0 1 0 02 3 0 1 0 0 04 4 1 0 0 0 08 5 0 0 0 1 01 Fig. 1: Esquema do motor de passo e tabela de acionamento O circuito da Fig. 1 é o circuito típico utilizado no acionamento de motor de passo, entretanto, há pastilhas integradas que são também utilizadas para essa função. Um circuito integrado que pode ser usado para esse fim é o CI ULN2803A, mostrado na Fig. 2. Trata-se de um conjunto de transistores do tipo darlington, com capacidade de corrente de 500 ma. Cada uma das 4 bobinas do motor é ligada a uma das saídas (OUT) e ao terminal comum (COM), que é conectado à fonte de alimentação do motor de passo, que não precisa, necessariamente, ser a mesma do microcontrolador. Fig. 2: Driver para motor de passo - ULN2803A

Laboratório de Microprocessadores e Microcontroladores 4 1.2 Display LCD Na explicação desta seção é usado um display LCD de 2 linhas x 16 colunas, cuja pinagem é mostrada na Fig. 3. O número de linhas e colunas é uma informação enviada na forma de comando para o LCD, numa rotina de inicialização necessária a cada vez que o LCD vai ser usado. Outras informações necessárias são: se o cursor vai ficar piscando, se a mensagem vai rolar para a esquerda ou para a direita, ou não vai rolar, se serão usados 4 ou 8 bits para os dados etc. A Tabela 2 mostra os sinais de controle para escrita e leitura do LCD. A Tabela 3 mostra as instruções mais comuns utilizadas no uso do LCD. Fig. 3: Display LCD de 2 linhas por 16 colunas Tabela 2: Habilitação do display LCD E RW RS Operação 0 Display desabilitado 1 0 0 Escrita de Instrução no LCD 1 0 1 Escrita de Dados no LCD 1 1 0 Leitura de Instrução do LCD 1 1 1 Leitura de Dados do LCD Tabela 3: instruções mais comuns utilizadas para o display LCD DESCRIÇÃO MODO RS R/W Código (Hexa) Display Liga (sem cursor) 0 0 0C Desliga 0 0 0A/08 Limpa Display com Home cursor 0 0 01 Controle do Cursor Liga 0 0 0E Desliga 0 0 0C Desloca para Esquerda 0 0 10 Desloca para Direita 0 0 14 Cursor Home 0 0 02 Cursor Piscante 0 0 0D Cursor com Alternância 0 0 0F Sentido de deslocamento do cursor ao Para a esquerda 0 0 04 entrar com caractere Para a direita 0 0 06 Deslocamento da mensagem ao entrar Para a esquerda 0 0 07 com caractere Deslocamento da mensagem sem entrada de caractere Endereço da primeira posição Primeira linha 0 0 80 Segunda linha 0 0 C0 Para a direita 0 0 05 Para a esquerda 0 0 18 Para a direita 0 0 1C A Tabela 4 mostra o endereço em decimal de cada posição do LCD de 16 colunas x 2 linhas. Tabela 4: Endereços em decimal do display LCD Colunas 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Linha 1 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 Linha 2 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207

Laboratório de Microprocessadores e Microcontroladores 5 2 Atividades do Experimento 4 Os programas das tarefas a seguir devem ser digitados e compilados no simulador MCU8051 e executados no simulador do kit didático e no kit didático real do microcontrolador 8051. No acionamento do motor de passo serão utilizadas duas maneiras de acionar o motor: através da leitura de uma tabela com os valores a serem enviados para o motor e através da rotação de bits na porta em que o motor está conectado. O motor de passo será acionado no sentido horário e no sentido antihorário, com passo completo e com meio passo. 2.1 Acionamento de Motor de Passo com Leitura de Tabela No roteiro da Tabela 5 a Flag F0 é utilizada para mudar o sentido de rotação do motor de passo. Ela é alterada através da interrupção externa 0. A chave no pino P3.3, denominada Meio, é usada para mudar de passo completo para meio passo. Obs.: a interrupção externa 1 não é utilizada neste experimento. Tabela 5: Acionamento de motor de passo usando tabela Rótulo Instrução Rótulo Instrução 1 Meio EQU P3.3 27 HORARIO: JNB Meio,Hora_Meio 2 Offset EQU 10H 28 MOV DPTR,#Tab_Hora 3 29 SJMP V1 4 ORG 00H 30 Hora_Meio: MOV DPTR,#Tab_Hora2 5 LJMP INICIO 31 6 32 V1: MOV A,Offset 7 ORG 03H 33 MOVC A,@A+DPTR 8 CPL F0 34 CJNE A,#0FFH, ENVIA 9 CLR IE0 35 SJMP V0 10 RETI 36 11 37 ENVIA: MOV P2,A 12 ORG 30H 38 LCALL ATRASO 13 INICIO: MOV SP, #2FH 39 INC Offset 14 MOV IE,#81H 40 SJMP V2 15 MOV TCON,#01H 41 16 42 Tab_Anti: DB 01h, 02h, 04h, 08h, 0FFh 17 V0: MOV Offset,#00H 43 Tab_Anti2: DB 01h, 03h, 02h, 06h, 04h, 0Ch, 08h, 09h, 0ffh 18 V2: JB F0,HORARIO 44 Tab_Hora: DB 08H, 04H, 02H, 01H, 0FFh 19 JNB Meio, Anti_Meio 45 Tab_Hora2: DB 09h, 08h, 0Ch, 04h, 06h, 02h, 03h, 01h, 0ffh 20 46 21 MOV DPTR,#Tab_Anti 47 ATRASO: MOV R0, #100 22 SJMP V1 48 V3: MOV R1, #200 23 49 DJNZ R1, $ 24 Anti_Meio: MOV DPTR,#Tab_Anti2 50 DJNZ R0, V3 25 SJMP V1 51 RET 26 52 END Questão 1: Qual a função da instrução JB F0, HORARIO, no programa da Tabela 5? Questão 2: Qual a função da instrução JNB Meio, Anti_Meio, no programa da Tabela 5?

Laboratório de Microprocessadores e Microcontroladores 6 Questão 3: Qual a função do trecho da linha 7 à linha 10? Questão 4: Qual a função do trecho da linha 18 à linha 30? Questão 5: Qual a função do trecho da linha 32 à linha 40? 2.2 Acionamento de Motor de Passo com Rotação de Bits No roteiro da Tabela 6 as interrupções externas são utilizadas para a rotação do motor de passo no sentido anti-horário (INT0 acionada por nível) e no sentido horário (INT1 por transição, com prioridade alta). Tabela 6: Acionamento de motor de passo usando rotação de bits Rótulo Instrução Rótulo Instrução 1 ORG 00H 17 ANTI_HORARIO: MOV P2,A 2 LJMP INICIO 18 RL A 3 19 LCALL ATRASO 4 ORG 03H 20 RETI 5 LJMP ANTI_HORARIO 21 6 22 HORARIO: MOV R7,#100 7 ORG 13H 23 V1: MOV P2,A 8 LJMP HORARIO 24 RR A 9 25 LCALL ATRASO 10 ORG 30H 26 DJNZ R7, V1 11 INICIO: MOV SP, #2FH 27 CLR IE1 12 MOV IE,#85H 28 RETI 13 MOV TCON,#04H 29 14 MOV IP,#04H 30 ATRASO: MOV R0, #200 15 MOV A,#11H 31 V3: MOV R1, #200 16 SJMP $ 32 DJNZ R1, $ 33 DJNZ R0, V3 34 RET 35 END Questão 1: Qual a configuração resultante da execução do trecho da linha 12 à linha 16? Questão 2: Qual a condição para a execução do trecho da linha 17 à linha 20?

Laboratório de Microprocessadores e Microcontroladores 7 Questão 3: Qual a condição para a execução do trecho da linha 22 à linha 28? Qual a finalidade da instrução CLR IE1 na linha 27? 2.3 Contagem Crescente no Display LCD O programa da Tabela 7 mostra no display LCD uma contagem decimal crescente de 0000 a 9999. O byte superior da contagem é guardado em R1 e o byte inferior em R0. O display LCD está conectado à porta P0. Os pinos P3.5, P3.6 e P3.7 são pinos de controle do display. Tabela 7: Contagem no display LCD Rótulo Mnemônico Comentário sobre o Efeito da Operação 1 RS EQU P3.5 ; RS = 0 INSTRUÇÃO. RS = 1 DADO 2 RW EQU P3.6 ; RW =0 ESCRITA. RW = 1 LEITURA 3 EN EQU P3.7 ; PINO DE HABILITAÇÃO DO LCD 4 LCD EQU P0 ; Porta P0 é o canal de dados 5 6 ORG 00H 7 LJMP INICIO 8 9 ORG 30H 10 INICIO: MOV SP,#2FH ; Apontador de pilha SP = 2FH 11 MOV R0,#00 ; Byte inferior da contagem 12 MOV R1,#00 ; Byte superior da contagem 13 MOV R7,#0FFH ; Contador 14 LCALL INICIA ; Chama subrotina de inicialização do LCD 15 LCALL LINHA1 ; Chama subrotina que mostra mensagem na linha 1 16 LCALL LINHA2 ; Chama subrotina que mostra mensagem na linha 2 17 18 REPETE: LCALL CONTAGEM ; Chama subrotina de contagem decimal contagem de 0000 a 9999 19 LCALL DISPLAY ; Chama subrotina que mostra a contagem no display 20 LCALL ATRASO 21 LCALL ATRASO 22 LCALL ATRASO 23 SJMP REPETE ; Volta para o início 24 25 ; SUBROTINA DE INICIALIZAÇÃO DO DISPLAY LCD 26 INICIA: MOV A,#38H ; Instrução que indica display de 16 colunas e 2 linhas 27 LCALL INSTR_WR ; Chama subrotina para escrever instrução no LCD 28 MOV A,#38H ; Instrução que indica display de 16 colunas e 2 linhas 29 LCALL INSTR_WR ; Chama subrotina para escrever instrução no LCD 30 MOV A,#0EH ; Instrução para ligar o cursor 31 LCALL INSTR_WR ; Chama subrotina para escrever instrução no LCD 32 MOV A,#06H ; Instrução para deslocar cursor para a direita 33 LCALL INSTR_WR ; Chama subrotina para escrever instrução no LCD 34 MOV A,#01H ; Instrução para limpar LCD 35 LCALL INSTR_WR ; Chama subrotina para escrever instrução no LCD 36 RET 37 38 LINHA1: INC R7 ; Incrementa contador 39 MOV A,R7 ; Carrega acumulador com o conteúdo do contador 40 MOV DPTR,#MSG1 ; DPTR recebe o endereço da mensagem MSG1 41 MOVC A,@A+DPTR ; Acumulador recebe o código do caractere do endereço A+DPTR 42 CJNE A,#0FFH,V1 ; Se A = 0FFH fim da mensagem. Caso contrário, pula para V1 43 RET 44 V1: LCALL TEXTO_WR 45 SJMP LINHA1 46

Laboratório de Microprocessadores e Microcontroladores 8 47 LINHA2: MOV A,#192 ; Instrução para definir endereço do LCD: 192 = C0H 48 LCALL INSTR_WR ; Chama subrotina para escrever instrução no LCD 49 MOV R7,#0FFH ; Contador recebe valor FFH 50 V3: INC R7 ; Incrementa contador 51 MOV A,R7 ; Carrega acumulador com o conteúdo do contador 52 MOV DPTR,#MSG2 ; DPTR recebe o endereço da mensagem MSG2 53 MOVC A,@A+DPTR ; Acumulador recebe o código do caractere do endereço A+DPTR 54 CJNE A,#0FFH,V2 ; Se A = 0FFH fim da mensagem. Caso contrário, pula para V2 55 RET 56 57 V2: LCALL TEXTO_WR ; Chama subrotina para escrever dados no LCD 58 SJMP V3 59 60 INSTR_WR: SETB EN ; Habilita LCD 61 CLR RW ; Operação de escrita no LCD 62 CLR RS ; Operação com instrução 63 MOV LCD, A ; Transfere a instrução para o LCD 64 CLR EN ; Desabilita LCD 65 LCALL ATRASO_LCD ; Chama subrotina de atraso do LCD 66 RET 67 68 TEXTO_WR: SETB EN ; Habilita LCD 69 CLR RW ; Operação de escrita no LCD 70 SETB RS ; Operação com dados 71 MOV LCD, A ; Transfere os dados para o LCD 72 CLR EN ; Desabilita LCD 73 LCALL ATRASO_LCD ; Chama subrotina de atraso do LCD 74 RET 75 76 CONTAGEM: MOV A,R0 ; Carrega acumulador com valor atual do byte inferior 77 ADD A,#01H ; Incrementa acumulador em uma unidade 78 DA A ; Faz o ajuste decimal do byte inferior 79 MOV R0,A ; Atualiza o valor de R0 80 JNC V4 ; Desvia para V4 se não houver Carry, ou seja, se R0 =< 99 81 82 MOV A,R1 ; Carrega acumulador com valor atual do byte superior 83 ADD A,#01H ; Incrementa acumulador em uma unidade 84 DA A ; Faz o ajuste decimal do byte superior 85 MOV R1,A ; Atualiza o valor de R1 86 V4: NOP 87 RET 88 89 ; SUBROTINAS PARA CONVERTER VALORES EM ASCII E MOSTRAR NO DISPLAY 90 DISPLAY: MOV A,#0F0H ; Prepara a separação do nibble superior de R1 91 ANL A,R1 ; Separa nibble superior de R1 92 SWAP A ; Inverte nibble superior com inferior 93 ORL A,#30H ; Converte nibble superior de R1 em ASCII 94 LCALL MOSTRA4 ; Mostra o dígito mais significativo da contagem 95 96 MOV A,#0FH ; Prepara a separação do nibble inferior de R1 97 ANL A,R1 ; Separa nibble inferior de R1 98 ORL A,#30H ; Converte nibble inferior de R1 em ASCII 99 LCALL TEXTO_WR ; Mostra Dígito 3 no display LCD 100 101 MOV A,#0F0H ; Prepara a separação do nibble superior de R0 102 ANL A,R0 ; Separa nibble superior de R0 103 SWAP A ; Inverte nibble superior com inferior 104 ORL A,#30H ; Converte nibble superior de R1 em ASCII 105 LCALL TEXTO_WR ; Mostra Dígito 2 no display LCD 106 107 MOV A,#0FH ; Prepara a separação do nibble inferior de R0 108 ANL A,R0 ; Separa nibble inferior de R0 109 ORL A,#30H ; Converte nibble inferior de R0 em ASCII 110 LCALL TEXTO_WR ; Mostra Dígito 1 no display LCD 111 RET 112

Laboratório de Microprocessadores e Microcontroladores 9 113 ; SUBROTINA PARA MOSTRAR NO DISPLAY O DÍGITO 4 DA CONTAGEM 114 MOSTRA4: PUSH ACC ; Guarda dígito 4 na pilha, antes de definir endereço no LCD 115 MOV A,#202 ; Endereço do dígito 4 116 LCALL INSTR_WR ; Chama subrotina para escrever instrução no LCD 117 POP ACC ; Recupera dígito 4 da pilha 118 LCALL TEXTO_WR ; Chama subrotina para escrever dados no LCD dígito 4 119 RET 120 121 ATRASO_LCD: MOV R4,#10 ; Carrega registrador R4 com valor decimal 10 122 V6: MOV R5,#80 ; Carrega registrador R5 com valor decimal 80 123 DJNZ R5,$ ; Aguarda registrador R5 zerar 124 DJNZ R4,V6 ; Decrementa R4. Enquanto não for zero, volta para recarregar R5 126 RET ; Retorna de subrotina de atraso de tempo 127 128 ATRASO: MOV R4,#50 ; Carrega registrador R4 com valor decimal 50 129 V5: MOV R5,#250 ; Carrega registrador R5 com valor decimal 250 130 DJNZ R5,$ ; Aguarda registrador R5 zerar 131 DJNZ R4,V5 ; Decrementa R4. Enquanto não for zero, volta para recarregar R5 132 RET ; Retorna de subrotina de atraso de tempo 133 134 MSG1: DB MICROCONTROLADOR, 0FFH 135 136 MSG2: DB CONTAGEM:,0FFH 137 FIM: NOP 138 END Após a inicialização do LCD através das sub-rotinas INICIA, LINHA1 e LINHA2, a rotina principal do programa é o trecho da linha 18 à linha 23. A partir desse trecho todas as outras sub-rotinas são chamadas. Questão 1: Qual a função das sub-rotinas INSTR_WR (linhas 60 a 66) e TEXTO_WR (linhas 68 a 74)? Questão 2: Como funciona a sub-rotina CONTAGEM, das linhas 76 a 87? Questão 3: Como funciona a sub-rotina DISPLAY, das linhas 90 a 111?

Laboratório de Microprocessadores e Microcontroladores 10 2.4 Contagem Decrescente no Display LCD No programa da Tabela 7, adapte a sub-rotina CONTAGEM de modo que a contagem passe a ser decrescente (9999 até 0000). Tabela 8: Sub-rotinas para as contagens crescente e decrescente no display LCD ; CONTAGEM DE 0000 A 9999 ; CONTAGEM DE 9999 A 0000 CONTAGEM: MOV A,R0 CONTAGEM: ADD A,#01H DA A MOV R0,A JNC V4 MOV A,R1 ADD A,#01H DA A MOV R1,A V4: NOP RET 2.5 Acionamento do Motor de Passo com Mensagem no Display LCD O roteiro da Tabela 9 deve ser implementado apenas no Simulador do Kit Didático (porque, no Kit Didático real não é possível utilizar de forma simultânea os módulos do motor e do display). Nesse roteiro a Flag F0 é utilizada para definir o sentido de rotação horário (F0 =1) ou antihorário (F0 = 0), do motor de passo. Uma mensagem é enviada ao display, com o sentido de rotação. O estado de F0 é alterado através da interrupção externa zero. A chave do pino P3.3 é usado para Ligar (P3.3 = 0) e Desligar (P3.3 = 1) o motor de passo. Tabela 9: Acionamento do motor de passo com mensagem no display LCD Rótulo Mnemônico Rótulo Mnemônico 1 LIGA EQU P3.3 60 LINHA1: MOV A,R7 2 RS EQU P3.5 61 MOV DPTR,#MSG1 3 RW EQU P3.6 62 MOVC A,@A+DPTR 4 EN EQU P3.7 63 CJNE A,#0FFH,V1 5 LCD EQU P0 64 RET 6 65 7 ORG 00H 66 V1: LCALL TEXTO_WR 8 LJMP INICIO 67 INC R7 9 68 SJMP LINHA1 10 ORG 03H 69 11 CPL F0 70 LINHA2: MOV A,#192 12 CLR IE0 71 LCALL INSTR_WR 13 RETI 72 MOV R7,#00H 14 73 V3: MOV A,R7 15 ORG 30H 74 MOVC A,@A+DPTR 16 INICIO: MOV SP,#2FH 75 CJNE A,#0FFH,V2 17 MOV IE,#81H 76 RET 18 MOV TCON,#01H 77 V2: LCALL TEXTO_WR 19 MOV R7,#00H 78 INC R7 20 MOV R6,#11H 79 SJMP V3 21 LCALL INICIA 80 22 LCALL LINHA1 81 INSTR_WR: SETB EN 23 82 CLR RW 24 V0: JNB LIGA,ACIONA 83 CLR RS 25 MOV DPTR,#MSG4 84 MOV LCD, A 26 LCALL LINHA2 85 CLR EN 27 SJMP V0 86 LCALL ATRASO_LCD 28 87 RET

Laboratório de Microprocessadores e Microcontroladores 11 29 ACIONA: JB F0,HORARIO 88 TEXTO_WR: SETB EN 30 MOV DPTR,#MSG2 89 CLR RW 31 LCALL LINHA2 90 SETB RS 32 MOV P2,R6 91 MOV LCD, A 33 LCALL ATRASO 92 CLR EN 34 MOV A,R6 93 LCALL ATRASO_LCD 35 RL A 94 RET 36 MOV R6,A 95 37 SJMP V0 96 38 97 ATRASO_LCD: MOV R4,#10 39 HORARIO: MOV DPTR,#MSG3 98 V6: MOV R5,#80 40 LCALL LINHA2 99 DJNZ R5,$ 41 MOV P2,R6 100 DJNZ R4,V6 42 LCALL ATRASO 101 RET 43 MOV A,R6 102 44 RR A 103 45 MOV R6,A 104 ATRASO: MOV R4,#150 46 SJMP V0 105 V5: MOV R5,#250 47 106 DJNZ R5,$ 48 INICIA: MOV A,#38H 107 DJNZ R4,V5 49 LCALL INSTR_WR 108 RET 50 MOV A,#38H 109 51 LCALL INSTR_WR 110 52 MOV A,#0EH 111 MSG1: DB Motor de Passo, 0FFh 53 LCALL INSTR_WR 112 MSG2: DB Anti-Horario, 0FFh 54 MOV A,#06H 113 MSG3: DB Sentido Horario, 0FFh 55 LCALL INSTR_WR 114 MSG4: DB Desligado, 0FFh 56 MOV A,#01H 115 57 LCALL INSTR_WR 116 END 58 RET 117 59 Questão 1: Qual é a configuração resultante da execução das instruções das linhas 17 a 20? Questão 2: A rotina principal do programa da Tabela 9 está no trecho das linhas 24 a 46. Explique o funcionamento dessa rotina.