Página 1 de 1

Rotina!!

MensagemEnviado: 03 Mar 2007 18:11
por antonio
Pessoal tudo bem!!

Bem a minha duvida de hoje è que eu estou navegando a tentar compreender esta interrupcao e nao à meio de eu entender ,na linha em baixo o pessoal pode dar uma ajuda a entender isto?
Um abraço

#INT_RB
void tecla_pulsada(void)//
{
if(!(port_b^0xF0))//principalmente esta linha aqui
return;
}

MensagemEnviado: 03 Mar 2007 18:59
por a.rairan
se port_b XOR 0xF0 for igual a 0


em assembly ficaria assim:

movlw 0xF0
xorwf port_b,w
btfsc STATUS,Z
return
return


só tem o return......

no PIC18 eziste a função BZ, Branch if Zero, pula se zero... facilita um pouco

MensagemEnviado: 03 Mar 2007 19:48
por antonio
Brigado a.rairan

Isso tambem eu entendi por o que esteve lendo no livro do fabio,agora em termos praticos sinceramente ainda nao foi desta !!

desculpe a ignorancia ,mas preciso de mais ajuda,o que faz quando à uma int com o port_b?

desde jà agradeço

MensagemEnviado: 03 Mar 2007 23:03
por Pask
Caro amigo Antônio, esta deve ser a interrupção de mudança de estado no PORTB do PIC. Toda vez que um dos pinos RB4, RB5, RB6 ou RB7 mudarem de estado (H para L) ou (L para H), a interrupção ocorrerá. Esta é apenas uma das 10 fontes de interrupção deste modelo de PIC.
Quando um desses pinos sofre uma mudança de estado o programa desvia para o vetor de interrupção e a sua rotina de interrupção pode ser tratada como você desejar.
Quer um exemplo? Suponhamos que você tenha 4 botões, um ligado em cada um desses pinos. Quando qualquer um deles for pressionado, ocorrerá a interrupção.
Espero ter esclarecido você melhor.

Pask.

MensagemEnviado: 05 Mar 2007 09:19
por andre_luis
Conforme disse o Pask, essa rotina ( usando exclusive or ) faz sentido quando se usa chave, e não botao. Um bom modo de testar essa rotina seria com DIPSWITCH e não com PUSHBOTTON, pois assim o camarada iria ver a mudanca ocorrer a cada mudanca de estado das chaves.

+++

MensagemEnviado: 05 Mar 2007 16:29
por antonio
Grato a todos :D
um abraço