@ Device PIC16F877A ; Microcontrolador utilizado
@ DEVICE pic16f877A, HS_OSC 'Ocilador Xtal.-
@ DEVICE pic16f877A, WDT_OFF ' Watchdog Timer desconectado.-
@ DEVICE pic16f877A, PWRT_on ' Power-On Timer conectado.-
@ DEVICE pic16f877A, BOD_OFF ' Brown-Out Detect conectado.-
@ DEVICE pic16f877A, LVP_OFF ' Low-Voltage Programming desconectado.-
@ DEVICE pic16f877A, CPD_OFF ' Data Memory Code Protect desconectado.-
define OSC 20
TRISA=0
trisb=%11111111
trisc=%01011110
TRISD=0
TRISE=0
porta=0
portE=0
;DEFINE I2C_SCLOUT 1
define LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 3
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 1
;DEFINE I2C_SCLOUT 1
CPIN VAR PORTc.3
DPIN VAR PORTc.4
segu var byte
minu var byte
hora var byte
minu_int var byte
hora_int var byte
minu_apag var byte
hora_apag var byte
minu_enc var byte
hora_enc var byte
LCD VAR BYTE
fase var byte
fase1 var byte
fase2 var byte
fase3 var byte
fase4 var byte
H var byte
I var byte
L var byte
M var byte
N var byte
P var byte
Q VAR BYTE
R var byte
S var byte
T var byte
x var byte
y var byte
z var byte
u var byte
v var byte
w var byte
sec var byte
INHora var byte
INminu var byte
APhora var byte
APminu var byte
ENhora var byte
ENCminu VAR BYTE
EEHORA var byte
EEMIN VAR BYTE
BCDIn Var Byte
BCDOut Var Byte
BinHold Var Byte
actual var byte
actual_1 var byte
actual_2 var byte
actual_3 var byte
actual_4 var byte
actual_5 var byte
actual_6 var byte
actual_7 var byte
actual_8 VAR BYTE
actual_9 VAR BYTE
actual_10 VAR BYTE
actual_11 VAR BYTE
fase=0
fase1=0
fase2=0
fase3=0
MINU_INT=0
HORA_INT=0
MINU_APAG=0
HORA_apag=0
minu_enc=0
hora_enc=0
actual=1
actual_1=1
actual_2=1
actual_3=1
actual_4=1
actual_5=1
actual_6=1
actual_7=1
actual_8=1
actual_9=1
actual_10=1
actual_11=1
x=0
y=0
z=0
u=0
v=0
W=0
sec=0
ini:
PORTD.2=0
PORTC.5=1
PORTE.2=0
portc.0=0
;EEPROM 0,[14,23,20,23,10,02,5,7,9,3,13,23] ;CASO 1 ROJO
EEPROM 0,[59,23,20,02,40,02,5,7,9,3,13,23] ;CASO 2 AMARILLO
;EEPROM 0,[14,23,20,23,40,23,5,7,9,3,13,23] ;CASO 3 verde
READ 0,minu_int
PAUSE 10
READ 1,HORA_INT
PAUSE 10
READ 2,minu_apag
PAUSE 10
READ 3,hora_apag
PAUSE 10
READ 4,minu_enc
PAUSE 10
READ 5,hora_enc
PAUSE 10
READ 6,FASE1
PAUSE 10
READ 7,fase2
pause 10
READ 8,fase3
pause 10
READ 9,fase
pause 10
READ 10,minu
pause 10
READ 11,hora
pause 10
BCDIn = minu_int
GoSub DecToBCD
INminu = BCDOut
BCDIn = hora_int
GoSub DecToBCD
INHora = BCDOut
BCDIn = minu_apag
GoSub DecToBCD
APminu = BCDOut
BCDIn = hora_apag
GoSub DecToBCD
APhora = BCDOut
BCDIn = minu_enc
GoSub DecToBCD
ENCminu = BCDOut
BCDIn = hora_enc
GoSub DecToBCD
ENhora = BCDOut
BCDIn = minu
GoSub DecToBCD
EEMIN = BCDOut
BCDIn = hora
GoSub DecToBCD
EEHORA = BCDOut
lcdout$fe,1
lcdout$fe,$C0," SEMAFORO"
PAUSE 1200
inicio:
i2cread DPIN,CPIN,%11010000,0,[segu]
i2cread DPIN,CPIN,%11010000,1,[EEMIN]
i2cread DPIN,CPIN,%11010000,2,[EEHORA]
lcdout$fe,1
lcdout$fe,$81,"SEMAFORO"
;LCDOUT $fe,$80,hex2 INHora, ":",hex2 INminu
;LCDOUT $fe,$85,hex2 APhora, ":",hex2 APminu
;LCDOUT $fe,$8a,hex2 ENhora, ":",hex2 ENCminu
lcdout$fe,$C1,"HORA ", hex2 EEHORA,":",hex2 EEMIN, ":" ,hex2 segu
pause 10
on interrupt goto CONFIGURAR
INTCON = %10010000
OPTION_REG.6=0
if (APhora >= INHora) and (APhora >= ENhora) and (APminu >= INminu) and (APminu >= ENCminu) then caso1
if (INhora >= ENhora) and (INhora >= APhora) and (INminu >= ENCminu) and (INminu >= APminu) then caso2
if (ENhora >= APhora) and (ENhora >= INHora) and (ENCminu >= APminu) and (ENCminu >= INminu) then caso3
goto inicio
caso1:
if (EEHORA >=APhora) and (EEMIN>=APminu) then
goto apagar
endif
IF (EEHORA >=INHora) and (EEMIN>=INminu) then
goto intermitente
endif
if (EEHORA >=ENhora) and (EEMIN >=ENCminu) then
goto programa
endif
goto inicio
caso2:
IF (EEHORA >=INHora) and (EEMIN>=INminu) then
goto intermitente
endif
if (EEHORA >=ENhora) and (EEMIN>=ENCminu) then
goto programa
endif
if (EEHORA >=APhora) and (EEMIN>=APminu) then
goto apagar
endif
if (EEHORA >= 00 ) AND (EEMIN >= 00) AND (EEHORA <= APhora) then;AND (EEMIN <= INminu) then
goto intermitente
endif
goto inicio
caso3:
if (EEHORA >=ENhora) and (EEMIN>=ENCminu) then
goto programa
endif
if (EEHORA >=APhora) and (EEMIN>=APminu) then
goto apagar
endif
IF (EEHORA >=INHora) and (EEMIN>=INminu) then
goto intermitente
endif
if (EEHORA >= 00 ) AND (EEMIN >= 00) AND (EEHORA <= INHORA) then;AND (EEMIN <= INminu) then
goto programa
endif
goto inicio
programa:
if fase=2 then dosfases
if fase=3 then tresfases
dosfases:
x=x+1
if x > fase1 then paso2
porta=%00001100
portc.0=1
PORTE=%000000000
pause 1000
goto inicio
paso2:
y=y+1
if y > 3 then paso3
PORTC.5 = 1;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
porta=%00001010
PORTC.0=0
PORTE=%00000100
pause 1000
goto inicio
paso3:
z=z+1
if z > fase2 then paso4
porta=%00000001
PORTC.0=0
PORTE=%00000011
pause 1000
goto inicio
paso4:
w=w+1
if w > 3 then borrar
porta=%00100001
PORTC.0=0
PORTE=%000000010
pause 1000
goto inicio
borrar:
x = 0
y = 0
z = 0
w = 0
goto inicio
tresfases:
x=x+1
if x > fase1 then paso22
porta=%00001100
portc.0=0
PORTE=%000000010
for M = 1 to 10
pause 100
next
goto inicio
paso22:
y=y+1
if y > 3 then paso33
PORTC.5 = 1;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
porta=%00001010
PORTC.0=0
PORTE=%000000010
for M = 1 to 10
pause 100
next
goto inicio
paso33:
z=z+1
if z > fase2 then paso44
porta=%00000001
PORTC.0=0
PORTE=%00000011
for M = 1 to 10
pause 100
next
goto inicio
paso44:
w=w+1
if w > 3 then paso5
porta=%00100001
PORTC.0=0
PORTE=%000000010
for M = 1 to 10
pause 100
next
goto inicio
paso5:
u=u+1
if u > fase3 then paso6
porta=%00001001
PORTC.0=1
PORTE=%000000000
for M = 1 to 10
pause 100
next
goto inicio
paso6:
v=v+1
if v > 3 then borrar2
porta=%00001001
PORTC.0=0
PORTE=%00000100
for M = 1 to 10
pause 100
next
goto inicio
borrar2:
x = 0
y = 0
z = 0
u = 0
v = 0
w = 0
goto inicio
intermitente:
porta=%000001010
PORTE=%000000100
portc.0=0
for M = 1 to 5
pause 100
next
porta=%000000000
PORTE=%000000000
for M = 1 to 5
pause 100
next
goto inicio
apagar:
porta=0
porte=0
portc.0=0
goto inicio
disable
CONFIGURAR:
porta=0
portE=0
portc.0=0
PORTC.5=1
for L = 1 to 10
lcdout $fe,1," CONFIGURACION"
pause 100
NEXT L
L=0
num_fases:
IF PORTB.0 = 1 THEN fase_1
IF PORTB.1 = 1 THEN up_num_fases ;botón para igualar minutos
IF PORTB.2 = 1 THEN up_num_fases ;botón para igualar horas
actualiza: IF actual = 1 THEN ;chequea si hay que actualizar LCD
lcdout$fe,1," FASES"
lcdout$fe,$88
lcdout$fe,$0F,dec2 fase
actual = 0 ;pantalla actualizada
ENDIF
GOTO num_fases
; ***********************para igualar la hora *****************
up_num_fases: fase = fase + 1
IF fase >= 4 THEN fase=2
GOTO pausa
pausa: FOR L = 1 TO 20 ; retardo de 200 mls
PAUSE 20 ;pasos de 10 mls para no perder interrupciones
NEXT L
actual = 1 ;indica actualizar pantalla LCD
GOTO actualiza
fase_1:
gosub soltar
fase_1_1:
IF PORTB.0 = 1 THEN fase_2
IF PORTB.1 = 1 THEN up_fase_1 ;botón para igualar minutos
IF PORTB.2 = 1 THEN dw_fase_1 ;botón para igualar horas
actualiza_f_1: IF actual_1 = 1 THEN ;chequea si hay que actualizar LCD
lcdout$fe,1," FASE 1 "
lcdout$fe,$C6, "segundos"
lcdout$fe,$C2
lcdout$fe,$0F,dec2 fase1
actual_1 = 0 ;pantalla actualizada
ENDIF
GOTO fase_1_1
; ***********************para igualar la hora *****************
up_fase_1: fase1 = fase1 + 1
IF fase1 >= 59 THEN fase1=0
GOTO pausa_1
dw_fase_1: fase1 = fase1 - 1
IF fase1 >= 59 THEN fase1=0
GOTO pausa_1
pausa_1: FOR M = 1 TO 20 ; retardo de 200 mls
PAUSE 10 ;pasos de 10 mls para no perder interrupciones
NEXT M
actual_1 = 1 ;indica actualizar pantalla LCD
GOTO actualiza_f_1
fase_2:
gosub soltar
fase_1_2:
IF PORTB.0 = 1 THEN fase_3
IF PORTB.1 = 1 THEN up_fase_2 ;botón para igualar minutos
IF PORTB.2 = 1 THEN dw_fase_2 ;botón para igualar horas
actualiza_f_2: IF actual_2 = 1 THEN ;chequea si hay que actualizar LCD
lcdout$fe,1," FASE 2"
lcdout$fe,$C6, "segundos"
lcdout$fe,$C2
lcdout$fe,$0F,dec2 fase2
actual_2 = 0 ;pantalla actualizada
ENDIF
GOTO fase_1_2
; ***********************para igualar la hora *****************
up_fase_2: fase2 = fase2 + 1
IF fase2 >= 29 THEN fase2=0
GOTO pausa_2
dw_fase_2: fase2 = fase2 - 1
IF fase2 >= 29 THEN fase2=0
GOTO pausa_2
pausa_2: FOR N = 1 TO 20 ; retardo de 200 mls
PAUSE 10 ;pasos de 10 mls para no perder interrupciones
NEXT N
actual_2 = 1 ;indica actualizar pantalla LCD
GOTO actualiza_f_2
fase_3:
gosub soltar
if fase=2 then h_int
fase_1_3:
IF PORTB.0 = 1 THEN h_int
IF PORTB.1 = 1 THEN up_fase_3 ;botón para igualar minutos
IF PORTB.2 = 1 THEN dw_fase_3 ;botón para igualar horas
actualiza_f_3: IF actual_3 = 1 THEN ;chequea si hay que actualizar LCD
lcdout$fe,1," FASE 3"
lcdout$fe,$C6, "segundos"
lcdout$fe,$C2
lcdout$fe,$0F,dec2 fase3
actual_3 = 0 ;pantalla actualizada
ENDIF
GOTO fase_1_3
; ***********************para igualar la hora *****************
up_fase_3: fase3 = fase3 + 1
IF fase3 >= 29 THEN fase3=0
GOTO pausa_3
dw_fase_3: fase3 = fase3 - 1
IF fase2 >= 29 THEN fase3=0
GOTO pausa_3
pausa_3: FOR P = 1 TO 20 ; retardo de 200 mls
PAUSE 10 ;pasos de 10 mls para no perder interrupciones
NEXT P
actual_3 = 1 ;indica actualizar pantalla LCD
GOTO actualiza_f_3
h_int:
gosub soltar
hor_int_1:
IF PORTB.0 = 1 THEN m_int
IF PORTB.1 = 1 THEN up_hor_int ;botón para igualar minutos
IF PORTB.2 = 1 THEN dw_hor_int ;botón para igualar horas
act_hor_int: IF actual_4 = 1 THEN ;chequea si hay que actualizar LCD
lcdout$fe,1,"HORA: INTERMITENTE"
lcdout$fe,$c1
lcdout$fe,$0F,dec2 hora_int
actual_4 = 0 ;pantalla actualizada
ENDIF
GOTO hor_int_1
; ***********************para igualar la hora *****************
up_hor_int: hora_int = hora_int + 1
IF hora_int > 23 THEN hora_int=0
GOTO pausa_4
dw_hor_int: hora_int = hora_int - 1
IF hora_int > 23 THEN hora_int=23
GOTO pausa_4
pausa_4: FOR Q = 1 TO 20 ; retardo de 200 mls
PAUSE 10 ;pasos de 10 mls para no perder interrupciones
NEXT Q
actual_4 = 1 ;indica actualizar pantalla LCD
GOTO act_hor_int
m_int:
gosub soltar
BCDIn = hora_int
GoSub DecToBCD
INHora = BCDOut
min_int_1:
IF PORTB.0 = 1 THEN h_apa
IF PORTB.1 = 1 THEN up_min_int ;botón para igualar minutos
IF PORTB.2 = 1 THEN dw_min_int ;botón para igualar horas
act_min_int: IF actual_5 = 1 THEN ;chequea si hay que actualizar LCD
lcdout$fe,1,"HORA: INTERMITENTE"
lcdout$fe,$c1
lcdout$fe,$0F,dec2 hora_int, ":",dec2 minu_int
actual_5 = 0 ;pantalla actualizada
ENDIF
GOTO min_int_1
; ***********************para igualar la hora *****************
up_min_int: minu_int = minu_int + 1
IF minu_int > 59 THEN minu_int=0
GOTO pausa_5
dw_min_int: minu_int = minu_int - 1
IF minu_int > 59 THEN minu_int=59
GOTO pausa_5
pausa_5: FOR R = 1 TO 20 ; retardo de 200 mls
PAUSE 10 ;pasos de 10 mls para no perder interrupciones
NEXT R
actual_5 = 1 ;indica actualizar pantalla LCD
GOTO act_min_int
h_apa:
gosub soltar
BCDIn = minu_int
GoSub DecToBCD
INminu = BCDOut
hora_apa:
IF PORTB.0 = 1 THEN m_apa
IF PORTB.1 = 1 THEN up_hr_apa ;botón para igualar minutos
IF PORTB.2 = 1 THEN dw_hr_apa ;botón para igualar horas
act_hr_ap: IF actual_6 = 1 THEN ;chequea si hay que actualizar LCD
lcdout$fe,1," HORA: APAGADO "
lcdout$fe,$c1
lcdout$fe,$0F,dec2 hora_apag
actual_6 = 0 ;pantalla actualizada
ENDIF
GOTO hora_apa
; ***********************para igualar la hora *****************
up_hr_apa: hora_apag = hora_apag + 1
IF hora_apag > 23 THEN hora_apag=0
GOTO pausa_6
dw_hr_apa: hora_apag = hora_apag - 1
IF hora_apag > 23 THEN hora_apag=23
GOTO pausa_6
pausa_6: FOR S = 1 TO 20 ; retardo de 200 mls
PAUSE 10 ;pasos de 10 mls para no perder interrupciones
NEXT S
actual_6 = 1 ;indica actualizar pantalla LCD
GOTO act_hr_ap
m_apa:
gosub soltar
BCDIn = hora_apag
GoSub DecToBCD
APhora = BCDOut
min_apa:
IF PORTB.0 = 1 THEN h_enc
IF PORTB.1 = 1 THEN up_m_apa ;botón para igualar minutos
IF PORTB.2 = 1 THEN dw_m_apa ;botón para igualar horas
act_min_ap: IF actual_7 = 1 THEN ;chequea si hay que actualizar LCD
lcdout$fe,1," HORA: APAGADO "
lcdout$fe,$c1
lcdout$fe,$0F,dec2 hora_apag, ":", dec2 minu_apag
actual_7 = 0 ;pantalla actualizada
ENDIF
GOTO min_apa
; ***********************para igualar la hora *****************
up_m_apa: minu_apag = minu_apag + 1
IF minu_apag > 59 THEN minu_apag=0
GOTO pausa_7
dw_m_apa: minu_apag = minu_apag - 1
IF minu_apag > 59 THEN minu_apag=59
GOTO pausa_7
pausa_7: FOR S = 1 TO 20 ; retardo de 200 mls
PAUSE 10 ;pasos de 10 mls para no perder interrupciones
NEXT S
actual_7 = 1 ;indica actualizar pantalla LCD
GOTO act_min_ap
h_enc:
gosub soltar
BCDIn = minu_apag
GoSub DecToBCD
APminu = BCDOut
hor_enc:
IF PORTB.0 = 1 THEN m_enc
IF PORTB.1 = 1 THEN up_h_enc ;botón para igualar minutos
IF PORTB.2 = 1 THEN dw_h_enc ;botón para igualar horas
act_hor_en: IF actual_8 = 1 THEN ;chequea si hay que actualizar LCD
lcdout$fe,1," HORA: ENCENDIDO "
lcdout$fe,$c1
lcdout$fe,$0F,dec2 hora_enc
actual_8 = 0 ;pantalla actualizada
ENDIF
GOTO hor_enc
; ***********************para igualar la hora *****************
up_h_enc: hora_enc = hora_enc + 1
IF hora_enc > 23 THEN hora_enc=0
GOTO pausa_8
dw_h_enc: hora_enc = hora_enc - 1
IF hora_enc > 23 THEN hora_enc=23
GOTO pausa_8
pausa_8: FOR T = 1 TO 20 ; retardo de 200 mls
PAUSE 10 ;pasos de 10 mls para no perder interrupciones
NEXT T
actual_8 = 1 ;indica actualizar pantalla LCD
GOTO act_hor_en
m_enc:
gosub soltar
BCDIn = hora_enc
GoSub DecToBCD
ENhora = BCDOut
min_enc:
IF PORTB.0 = 1 THEN hor
IF PORTB.1 = 1 THEN up_m_enc ;botón para igualar minutos
IF PORTB.2 = 1 THEN dw_m_enc ;botón para igualar horas
act_min_en: IF actual_9 = 1 THEN ;chequea si hay que actualizar LCD
lcdout$fe,1," HORA: ENCENDIDO "
lcdout$fe,$c1
lcdout$fe,$0F,dec2 hora_enc , ":", dec2 minu_enc
actual_9 = 0 ;pantalla actualizada
ENDIF
GOTO min_enc
; ***********************para igualar la hora *****************
up_m_enc: minu_enc = minu_enc + 1
IF minu_enc > 59 THEN minu_enc=0
GOTO pausa_9
dw_m_enc: minu_enc = minu_enc - 1
IF minu_enc > 59 THEN minu_enc=59
GOTO pausa_9
pausa_9: FOR T = 1 TO 20 ; retardo de 200 mls
PAUSE 10 ;pasos de 10 mls para no perder interrupciones
NEXT T
actual_9 = 1 ;indica actualizar pantalla LCD
GOTO act_min_en
hor:
gosub soltar
BCDIn = minu_enc
GoSub DecToBCD
ENCminu = BCDOut
hora_actual:
IF PORTB.0 = 1 THEN minut
IF PORTB.1 = 1 THEN up_hor ;botón para igualar minutos
IF PORTB.2 = 1 THEN dw_hor ;botón para igualar horas
act_hra: IF actual_10 = 1 THEN ;chequea si hay que actualizar LCD
lcdout$fe,1," HORA ACTUAL "
LCDOUT $fe,$c1
lcdout$fe,$0F,dec2 hora
actual_10 = 0 ;pantalla actualizada
ENDIF
GOTO hora_actual
; ***********************para igualar la hora *****************
up_hor: hora = hora + 1
IF hora > 23 THEN hora=0
GOTO pausa_10
dw_hor: hora = hora - 1
IF hora > 23 THEN hora=23
GOTO pausa_10
pausa_10: FOR H = 1 TO 20 ; retardo de 200 mls
PAUSE 10 ;pasos de 10 mls para no perder interrupciones
NEXT H
actual_10 = 1 ;indica actualizar pantalla LCD
GOTO act_hra
minut:
gosub soltar
BCDIn = hora
GoSub DecToBCD
EEHORA = BCDOut
minu_actual:
IF PORTB.0 = 1 THEN GRABAR
IF PORTB.1 = 1 THEN up_MIN ;botón para igualar minutos
IF PORTB.2 = 1 THEN dw_MIN ;botón para igualar horas
act_mit: IF actual_11 = 1 THEN ;chequea si hay que actualizar LCD
lcdout$fe,1," HORA ACTUAL "
LCDOUT $fe,$c1
lcdout$fe,$0F,dec2 hora, ":", dec2 minu
actual_11 = 0 ;pantalla actualizada
ENDIF
GOTO minu_actual
; ***********************para igualar la hora *****************
up_MIN: minu = minu + 1
IF minu > 59 THEN minu=0
GOTO pausa_11
dw_MIN: minu = minu - 1
IF minu > 59 THEN minu=59
GOTO pausa_11
pausa_11: FOR I = 1 TO 20 ; retardo de 200 mls
PAUSE 10 ;pasos de 10 mls para no perder interrupciones
NEXT I
actual_11 = 1 ;indica actualizar pantalla LCD
GOTO act_mit
GRABAR:
gosub soltar
BCDIn = minu
GoSub DecToBCD
EEMIN = BCDOut
goto grabacion
DecToBCD:
BinHold = BCDIn
BinHold = (BinHold Dig 1) * $10 + (BinHold Dig 0)
BCDOut = BinHold
Return
soltar:
if portb.0 = 1 then soltar
pause 250
return
grabacion:
PAUSE 10
WRITE 0,minu_int
PAUSE 10
WRITE 1,HORA_INT
PAUSE 10
WRITE 2,minu_apag
PAUSE 10
write 3,hora_apag
PAUSE 10
write 4,minu_enc
PAUSE 10
write 5,hora_enc
PAUSE 10
WRITE 6,FASE1
PAUSE 10
WRITE 7,fase2
pause 10
write 8,fase3
pause 10
write 9,fase
pause 10
write 10,minu
pause 10
write 11,hora
pause 10
i2CWRITE DPIN,CPIN,%11010000,0,[$00]
i2CWRITE DPIN,CPIN,%11010000,1,[EEMIN]
i2CWRITE DPIN,CPIN,%11010000,2,[EEHORA]
I2CWRITE DPIN,CPIN,%11010000,7,[$10] ;control %00010000 para
FOR LCD = 1 TO 2
lcdout$fe,$0C
lcdout$fe,1
lcdout$fe,$81," GUARDAND0."
PAUSE 250
lcdout$fe,1
lcdout$fe,$81," GUARDAND0.."
PAUSE 250
lcdout$fe,1
lcdout$fe,$81," GUARDAND0..."
PAUSE 250
NEXT
lcdout$fe,1
lcdout$fe,$81," PRESIONAR"
lcdout$fe,$c4," RESET"
PAUSE 3000
INTCON = %10010000
resume
enable
end