Página 1 de 1
Rotina básica de interrupção

Enviado:
17 Dez 2006 17:01
por lpagano
Pessoal,
Seguinte, tenho que criar uma rotina de interrupção em C para o 16F877A da seguinte maneira: o meu programa principal está rodando normalmente e, quando eu der um LOW no pino RB4, ele execute a instrução da interrupção. Para sair da interrupção eu preciso tirar o LOW do pino RB4.
PROGRAMA PRINCIPAL:
loop:
output_B(0);
delay_ms(1000);
output_B(1);
delay_ms(1000);
output_B(2);
delay_ms(1000);
output_B(3);
delay_ms(1000);
goto loop;
INTERRUPÇÃO:
output_B(9);
Obrigado!!!

Enviado:
17 Dez 2006 20:58
por microeletronica
Entao meu amigo...
Ve soh... Fica melhor utilizar o Interrupt on change, que é a interrupcao de mudanca de estado, de nivel de 0 pra 1 ou 1 pra zero. Toda vez que houver uma mudanca de nivel, gerara uma interrupcao...
Entao... Os pinos de RB4 a 7 possuem esta caracteristicas. Vc pode fazer com que a cada interrupcao, a sua rotina de interrupocao apenas mude um status de um byte definido por vc, no seu programas... Nao acho interessante ficar preso numa inetrrurcao, esperando uma borda...
Isso pode ser feito, claro... Mas vc teria que colocar em um pino de interrupcao RB0 pór exemplo, que é uma inetrrupcao LOW, como esta precisando... e dai ficar preso la, e ficar fgazendo umas rotinas ali While !(Pino RB1). Nao acho isso elegante.
Procure contornar, tente utilizar a inbetrrupt on change, que eh um feature bem legal do PIC e bem facil de utilizar...

Enviado:
18 Dez 2006 09:16
por lpagano
Valeu microeletronica,
Mas, poderia dar uma dica de como posso implementar basicamente o interrupt on change? Tem algum exemplo na web em que eu possa me "inspirar"?
Valeu de novo!

Enviado:
18 Dez 2006 20:59
por microeletronica
CCS vc tah usando?
MCC18?

Enviado:
22 Dez 2006 06:35
por lpagano
Tô usando o CCS.
Valeu!

Enviado:
22 Dez 2006 12:07
por Ander_sil
Aproveitando esse tópico, posso usar esta função do Pic para funcionar como outra int. externa.
Tem como selecionar para qual port de B4 à B7 deve ocorrer a int, ou uma mudança em qualquer um desses pinos gera interrupção.
Minha versão do CCS não tem esse exemplo(MCC18), alguem pode mandar para min.
at.