Hola mira yo hace días hice la misma pregunta pero a ver si me ayudaban en PicBasic pero al final después de buscar un buen rato encontré algo mira el pic que yo utilice fue un 16F876a si te bajas el datasheet y buscas en el OPTION_REG en ese registro puede decirle al pic que flanco es el que quieres utilizar, al final te coloco un ejemplo en basic:
alli dice que el bit 6 INTEDG: Interrupt Edge Select bit
1 = Interrupt on rising edge of RB0/INT pin ' falco de subida
0 = Interrupt on falling edge of RB0/INT pin ' flanco de bajada
ahora bien para ver cuando cambia el flanco tienes que ver un registro de flags como lo haces solo tienes que ir a un registro que se llama INTCON
el bit 1 INTF: RB0/INT External Interrupt Flag bit
1 = The RB0/INT external interrupt occurred (must be cleared in software)
0 = The RB0/INT external interrupt did not occur
osea que si esta en 1 el bit 1 de ese registro a habido un cambio de flaco, alli dice que el registro debe ser cambiado manualmente despues deque miras, osea que despues que has mirado ese bit tienes que ponerle una parte al programa para que este se cambie a cero
aqui el ejemplo:
Define LCD_DREG PORTB
Define LCD_DBIT 4
Define LCD_RSREG PORTB
Define LCD_RSBIT 2
Define LCD_EREG PORTB
Define LCD_EBIT 3
TRISB = %00000011 ' en el puerto B coloco el pin 0 y el 1 como entradas y el resto como salidas
OPTION_REG = %10000000 ' mira que coloco el bit 6 cero osea flanco descendente
contador var byte ' Create adval to store result
contador = 0
Pause 500 ' Wait .5 second
loop:
Lcdout $fe, 1 ' Clear LCD
OPTION_REG = %10000000 'creo que esto no es necesario
pause 50
if INTCON.1 = 1 then ' mira aqui esta donde tienes que ver si la bandera cambio bit 1 del registro INTCON
contador = contador + 1
lcdout "suma de flan=", dec contador
pause 50
INTCON.1 = 0 ' mira cuando termina el programa tienes que poner tu mismo la bandera en cero
endif
Goto loop ' Do it forever
End