Problemas con serout

Estoy tratando de construir un cuentakilometros para auto con un sensor inductivo en la rueda que genera una señal digital 5-0V al Puerto RB0 (pull-up) de un PIC 16f84a. Pretendo con esto que a cada vuelta de rueda, el PIC, a través de un Max232, envíe un “1” por el puerto serie de un ordenador para su procesamiento en una aplicación en visual basic. Lo he conseguido prácticamente todo menos una cosa y es por eso que recurro a este foro. El problema es que cada vez que el sensor pasa lentamente junto al elemento metálico que lo acciona, en lugar de enviar una sola señal “1” envia una serie de repeticiones (que se prolongan mientras el sensor acaba de atravesar la zona de influencia del metal.)

Agradecería mucho si alguien me pudiera orientar sobre que le puedo añadir al código siguiente para evitar las citadas “repeticiones”.

Device 16F84A
XTAL = 4

ALL_DIGITAL = true.

TRISB = %00000001'RB0 ENTRADA DE INTERRUPCION

Symbol tx = PORTA.2
Symbol INTF = INTCON.1'INTERRUPCION POR FLAG
INTCON = %10010000'HABILITA LA INTERRUPCION POR RB0

Input PORTB.0
Output PORTA.1
Output tx

On Interrupt GoTo enviadato: 'IR A INTERRUPCION

GoTo ini

Disable Interrupt 'APAGA LA INTERRUPCION

enviadato: 'envia DATO

High PORTA.1
SerOut tx, 84,["1"]
INTF = 0
Resume 'RETORNA AL PROGRAMA
Enable Interrupt 'ENCIENDE LA INTERRUPCION

ini:

low PORTA.1
GoTo ini

End
 
Atrás
Arriba