Define CONF_WORD = 0x3184
Define CLOCK_FREQUENCY = 4
CMCON = 7
TRISIO = %00000110 'E/S
DIM tmr_1
AS Word
'Contardor, se incrementa en pasos de +-1mSeg. DIM tmr_1_tmp
AS Word
'Limite superior contador en mSeg. DIM flag
AS Bit
'Controla el estado de la salida GPIO.0
tmr_1_tmp = 90 'Tiempo a contar por la base de tiempos tmr_1
tmr_2_tmp = 90 'Tiempo a contar por la base de tiempos tmr_2
tmr_3_tmp = 1000 'Tiempo a contar por la base de tiempos tmr_3
tmr_3 = 0 'Activa el tmr_3 desde el inicio
flag = 0 'Habilita primero GPIO.0=1
inicio:
IF tmr_1 >= tmr_1_tmp THEN 'Permite el paso cuando el tmr_1 termino de contar
IF GPIO.2 = 0 THEN
IF tmr_3_tmp >= 100 THEN tmr_3_tmp = tmr_3_tmp - 100 '>=100 impide desborde y decr.
tmr_1 = 0 'Activa el tmr_1 desde el inicio
Endif
Endif
IF tmr_2 >= tmr_2_tmp THEN
IF GPIO.1 = 0 THEN
IF tmr_3_tmp <= 65435 THEN tmr_3_tmp = tmr_3_tmp + 100 '<=65435 impide desb. e incr.
tmr_2 = 0
Endif
Endif
IF tmr_3_tmp < 20 THEN tmr_3_tmp = 1000
IF tmr_3_tmp > 1980 THEN tmr_3_tmp = 1000
IF tmr_3
>= tmr_3_tmp
AND flag
= 0 THEN tmr_3 = 0
flag = 1 'Habilita GPIO.0=0
GPIO.0 = 1
Endif
IF tmr_3
>= tmr_3_tmp
AND flag
= 1 THEN tmr_3 = 0
flag = 0 'Habilita GPIO.0=1
GPIO.0 = 0
Endif
IF tmr_1 < tmr_1_tmp THEN tmr_1 = tmr_1 + 1 'Bases de tiempos
IF tmr_2 < tmr_2_tmp THEN tmr_2 = tmr_2 + 1 '"
IF tmr_3 < tmr_3_tmp THEN tmr_3 = tmr_3 + 1 '"
IF tmr_4 < tmr_4_tmp THEN tmr_4 = tmr_4 + 1 '"
IF tmr_5 < tmr_5_tmp THEN tmr_5 = tmr_5 + 1 '"
WaitMs 1 'Unidad de las bases de tiempos
GOTO inicio