Hola
Estoy practicando con la manipulacion del registro INTCON en un 16F84A, por ser un dispositivo simple, para luego poder usar esos procedimientos en el 18F458 que uso actualmente. He hecho el siguiente programa en picbasic plus:
DEVICE=16F84A
XTAL=4
PORTB_PULLUPS = TRUE
INTCON=%10010000
TRISB=%00000000
ON_INTERRUPT INTHANDLER
GOTO FLASHER
INTHANDLER:
IF PORTB.7=0 THEN PORTB.7=1 ELSE PORTB.7=0
INTCON.1=0
CONTEXT RESTORE
FLASHER:
HIGH PORTB.6
DELAYMS 500
LOW PORTB.6
DELAYMS 500
GOTO FLASHER
- - - -
El programa consta de un LED en PORTB.7 que parpadea cada 500ms, ese es el bucle principal. He activado las interrupciones por RB0/INT, como se puede ver en el registro INTCON. Cualquier cambio de estado en PORTB.0 activaría la interrupción, y encendería o apagaría el LED en PORTB.6 .
Con Portb_pullups activado, el pulsador a tierra.
El problema radica en que cuando enciendo el montaje, RB7 parpadea, y RB6 empieza encendido desde el principio, y no se inmuta con cualquier cambio de estado de RB0/INT.
A qué se debe esto?
saludos
PD:150 mensajes! gracias a todos!