COUNTER1 EQU 20H
COUNTER2 EQU 21H
COUNTER3 EQU 22H
COUNTER4 EQU 23H
COUNTER5 EQU 24H
COUNTER6 EQU 25H
COUNTER7 EQU 26H
list p=12F675
#include "p12f675.inc"
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _CPD_OFF
BSF STATUS, RP0
CALL 0x3FF
MOVWF OSCCAL
CLRF TRISIO
MOVLW 0x07
MOVWF CMCON
CLRF ANSEL
BCF STATUS, RP0
CLRF GPIO
MOVLW 0x07
MOVWF CMCON
CLRF ANSEL
CALL DELAY_ONE_MINUTE
BSF GPIO, 0
BSF GPIO, 1
endlessloop
GOTO endlessloop
FRIDGE_CYCLE
GOTO FRIDGE_CYCLE
DELAY_ONE_SECOND
;999990 cycles
MOVLW b'00000010'
XORWF GPIO, 1
movlw 0x07
movwf COUNTER1
movlw 0x2F
movwf COUNTER2
movlw 0x03
movwf COUNTER3
DELAY_ONE_SECOND_0
decfsz COUNTER1, f
goto $+2
decfsz COUNTER2, f
goto $+2
decfsz COUNTER3, f
goto DELAY_ONE_SECOND_0
;6 cycles
goto $+1
goto $+1
;4 cycles (including call)
return
DELAY_ONE_SECOND1:
MOVLW b'00000010'
XORWF GPIO, 1
MOVLW D'100'
MOVWF COUNTER3
LABEL3
MOVLW D'13'
MOVWF COUNTER1
LABEL1
MOVLW D'255'
MOVWF COUNTER2
LABEL2
DECFSZ COUNTER2, 1
GOTO LABEL2
DECFSZ COUNTER1, 1
GOTO LABEL1
DECFSZ COUNTER3, 1
GOTO LABEL3
RETURN
DELAY_ONE_MINUTE:
MOVLW D'60'
MOVWF COUNTER4
LABEL4
CALL DELAY_ONE_SECOND
DECFSZ COUNTER4, 1
GOTO LABEL4
RETURN
DELAY_ONE_HOUR:
MOVLW D'60'
MOVWF COUNTER5
LABEL5
CALL DELAY_ONE_MINUTE
DECFSZ COUNTER5, 1
GOTO LABEL5
RETURN
DELAY_SIX_HOURS:
MOVLW D'6'
MOVWF COUNTER6
LABEL6
CALL DELAY_ONE_HOUR
DECFSZ COUNTER6, 1
GOTO LABEL6
RETURN
DELAY_TWENTYFIVE_MINUTES:
MOVLW D'25'
MOVWF COUNTER7
LABEL7
CALL DELAY_ONE_MINUTE
DECFSZ COUNTER7, 1
GOTO LABEL7
RETURN
END