Computing">
Lab-08 Tacometro Interrupcoes
Lab-08 Tacometro Interrupcoes
Lab-08 Tacometro Interrupcoes
+5V 330
RD0 Sensor
PIC16F877A
RD1 RA4
RD4
RB4
RD5 Ponte H
RD6
RB5
RD7
LEDs
Figura 1 – Configuração do motor DC e sensor de rotação.
5) Projeto 3: Uso de interrupções por mudança de nível nos pinos RB4, RB5, RB6 e RB7
O projeto anterior apresentou a possibilidade de gerar interrupções externas através de um pino
do processador (RB0). Existe, ainda, outra possibilidade de gerar uma outra interrupção externa,
porém através dos quatro pinos mais significativos da PORTB, RB4-RB7.
Este tipo de interrupção é ativado pela mudança de estado em uma dessas entradas, ou seja,
se a entrada mudar de zero para um, ou de um para zero. Quando ocorrer uma mudança de
estado, o bit RBIF de INTCON é ativado, solicitando o vetor de interrupção.
Esta aplicação poderá, por exemplo, ser a de um alarme residencial, que será ativado, quando
uma porta, ou uma das três janelas, tiver a sua condição alterada.
Na rotina de serviço da interrupção, deverá ser identificada qual destes pinos foi o responsável
pela ativação da mesma. Esse processo pode, ainda, ser mais complicado, quando esses pinos
estão ligados botoeiras e não chaves, pois as mesmas irão voltar aos seus estados iniciais após
suas liberações, ativando um novo evento de interrupção.
Uma vez atendida a interrupção, o bit RBIF deverá ser retornado para zero, a fim de permitir uma
nova solicitação.
O programa irá implementar a operação de alarme, através do pino de saída RA4, que será
acionado quando houver uma mudança em um dos pinos que geram a interrupção.
Assim, este tipo de recurso do processador pode ter muitas aplicações, como por exemplo a
leitura de um teclado matricial, que ao ser pressionada uma tecla, solicita uma interrupção, para
a identificação da mesma.
Roteiro: Projeto 3 em Assembly
Crie o Projeto 3 usando os arquivos compactados em Lab-08_p3_Int_RB_asm.rar. O
programa principal se encontra em Lab-08_Int_RB_p3.asm
Para simular, use o esquemático do arquivo Lab-08_p3_Modulo_didatico_PIC-2377.dsn
Grave o PIC do módulo didático. Para testar, primeiramente confira que as chaves CH1(4–5)
e CH5(5–6) se encontrem desligadas, em seguida, utilizando um fio, conecte com GND os
pinos RB4-RB7, um pino por vez. Anotes suas observações.
Roteiro: Projeto 3 em C
Crie o Projeto 3 usando os arquivos compactados em Lab-08_p3_Int_RB_c.rar. O programa
principal se encontra em Lab-08_Int_RB_p3.c
Para simular, use usando o esquemático do arquivo Lab-08_p3_Modulo_didatico_PIC-2377.dsn
Grave o PIC e teste o programa no módulo didático.
6) Exercício – tarefa:
Exercício 1: Baseado no projeto do contador de giros (tacômetro), escreva um programa em
Assembly, para mostrar, no LCD, o número de giros realizados pelo motor DC. O tacômetro
deverá mostrar valores de, no mínimo, 16 bits. A velocidade angular do motor deverá ser alterado
cada vez que uma interrupção externa, RB0/INT, acontecer. Para isso, o duty cycle da tensão
aplicada ao motor deverá ser alterado entre os seguintes valores: 50% 75% 100% 50%,
em forma cíclica. Considere-se como duty cycle inicial 50%. Considere desprezível os atrasos
devidos ás sub-rotinas utilizadas.
7) Exercícios – desafio:
Exercício 2: Escreva um programa em C, que de solução ao Exercício 1.
Exercício 3: Escreva um programa em C, que de solução ao Exercício 2.
Exercício 4: Escreva um programa em Assembly, para exibir no LCD, uma leitura atualizada do
Voltímetro ou Termômetro, implementado no Lab-07, porém como resultado de um evento de
interrupção por mudança de nível presente nos pinos RB4–RB7. Para isso, o PIC deverá ser
tirado do estado de sleep apenas para realizar a leitura de um dos sensores e mostrar a grandeza
correspondente no LCD, depois disso deverá permanecer em sleep. Se o evento de interrupção
é disparado pelos pinos RB4 ou RB5 deverá ser exibido uma leitura atualizada do Voltímetro, no
entanto, se o evento de interrupção é disparado pelos pinos RB6 ou RB7 deverá ser exibido uma
leitura atualizada do Termômetro.
Exercício 5: Escreva um programa em Assembly para calcular e mostrar, no LCD, o número de
voltas/min do motor DC. No código, considere-se a opção para definir, como dado de entrada, o
valor do duty cyle.
8) Avaliação do aprendizado:
No dia da aula prática em que será realizado o Laboratório 9, cada aluno deve apresentar:
a) O programa solução do Exercício 1 enunciado no item 6. Tal exercício deverá ser
apresentado funcionando no módulo didático para ser avaliado pelo professor.
b) Um relatório a manuscrito, incluindo:
O fluxograma do programa do Exercício 1 enunciado no item 6.
Um ressumo, sucinto e objetivo, do algoritmo do programa.
Observações e comentários pertinentes.
Nota: relatórios incompletos NÃO serão avaliados ficando com nota ZERO nesse item.
BOM TRABALHO!!