cont Var Byte 'Cont es una variable cuenta eventos
Cont1 Var Byte 'Cont1 es una variable cuenta hasta 125
Cont2 Var Byte 'Cont2 es una variable cuenta hasta 5
Digit Var Byte 'Digit es una variable tipo Byte
Patron Var Byte 'Patron es una variable tipo Byte
Digit1 Var Byte 'Digit1 Variable tipo Byte
Digit2 Var Byte 'Digit2 Variable tipo Byte
PULSO Var PORTB.7 'Pulso de entrada cuenta de productos
i var byte 'Variable tipo Byte
LedRojo Var PORTA.2 'Led Rojo Freno
Rele1 var PORTA.4 'Rele1 es Puerto de Salida freno
'
'
'Rutina Principal
CMCON = 7 'RA0 - RA3 son E/S Digitales
TRISA = 0 'Puerto A como salida
TRISB = $80 'Puerto B como Salida excepto bit 7
i = 0
'Habilitar interrupcion del TMRO
'
INTCON = %00100000 'Habilitar Interrupcion de TMRO
OPTION_REG = %00000111 'Inicializa el Prescaler
TMR0 = 217 'Cargar el registro TMRO
on interrupt GOTO PROCESO 'salta a rutina de proceso
INTCON = %10100000 'Habilitar interrupciones
CONT1 = 0 'CONT1 = 0
Cont2 = 0 'Cont2 = 0
'
'Revisar el puertoB.7 si llego pulso y esta alto
Loop:
BUTTON , PULSO , 1 , 255 , 20 , i , 0 , loop 'Se chequea por un pulso de entr
CONT1 = cont1 + 1 'Incrementa cont1 de 1 a 125
Cont2 = Cont2 + 1 'Incrementa Cont de 1 hasta 5
if Cont1 = 125 then freno1 'Chequea cuenta por 125
if Cont2 = 5 then freno2 'Chequea por cuenta de 5
goto Loop 'Continua esperando un evento externo
disable ' Se deshabilitan las otra interrupciones
'
Freno1: 'Rutina de freno1 cuenta de 5
Cont1 = 0 'Limpia el contador 1
high LedRojo '
Rele1 'Prende Led Rojo indica freno act.
if Pulso = 0 Then Freno1 'Retardo 5 Mseg
Goto loop 'Regresa a Loop
'
Freno2: 'Rutina de Freno 2
Cont2 = 0 'Limpia el contador 2
high LedRojo '
Rele1 'Prende Led Rojo indica freno act.
if Pulso = 0 then Freno2 'Retardo 5 Mseg
Goto loop
'
'Rutina de servicio de la interrupcion
'
PROCESO: 'EL PROCESO A REALIZAR
'
TMR0 = 217 '
Digit = Cont Dig 1 '
Lookup Digit,[$3F,$06$5B,$4F,$66,$6D,$7D,$07,$7F,$6F],Patron
Patron = Patron ^ $FF 'Invertir bits de la variable Patron
PORTB = Patron 'Mostrar 10 digitos
Digit2 = 0 'Desactivar el digito 2
Digit1 = 1 'Activar el dijito 1
Pause 5 'Retardo 5 mseg
'
Digit = Cont dig 0 '
Lookup Digit,[$3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6F],Patron
Patron = Patron ^ $FF 'Invertir bits de la variable Patron
Digit2 = 0 'Desactivar el Digito 1
PORTB = Patron 'Mostrar el digito
Digit2 = 1 'Activar Digito 2
Pausa 1 'Esperar un mseg
'
Intcon.2 = 0 'Re-Habilitar la interrupcion del TMRO
Resume 'Regresar al programa principal
Enable 'Habilitar Interrupciones
'
End