; Таймер 1-20 минут

    processor 12F629
    #include <P12F629.INC>
    __config 0x3F84
;   _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF 
;   & _INTRC_OSC_NOCLKOUT 

; RAM-Variable
LRAM_0x20 equ 0x20
LRAM_0x21 equ 0x21
LRAM_0x22 equ 0x22
LRAM_0x23 equ 0x23
LRAM_0x24 equ 0x24
LRAM_0x25 equ 0x25
LRAM_0x26 equ 0x26
LRAM_0x27 equ 0x27
LRAM_0x28 equ 0x28

; Program

    Org 0x0000

;   Reset-Vector
    GOTO START

    Org 0x0004

;   Interrupt-Vector
    MOVWF LRAM_0x26
    SWAPF STATUS,W
    MOVWF LRAM_0x27
    DECFSZ LRAM_0x20,F
    GOTO LADR_0x000C
    MOVLW 0x78           ;   b'01111000'  d'120'  "x"
    MOVWF LRAM_0x20
    DECF LRAM_0x21,F
LADR_0x000C
    CALL LADR_0x00C3
    BCF PIR1,0           ; !!Bank!! PIR1 - PIE1
    SWAPF LRAM_0x27,W
    MOVWF STATUS
    SWAPF LRAM_0x26,F
    SWAPF LRAM_0x26,W
    RETFIE
START
    CLRF GPIO            ; !!Bank!! GPIO - TRISIO
    BSF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    CLRF TMR0            ; !!Bank!! TMR0 - OPTION_REG

    MOVWF T1CON          ; !!Bank!! T1CON - OSCCAL
    MOVLW 0x1D           ;   b'00011101'  d'029'
    MOVWF GPIO           ; !!Bank!! GPIO - TRISIO
    BSF WPU,4            ; !!Bank!! Unimplemented - WPU
    MOVLW 0x84           ;   b'10000100'  d'132'
    MOVWF CMCON          ; !!Bank!! CMCON - VRCON
    BSF PIR1,0           ; !!Bank!! PIR1 - PIE1
    BCF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    MOVLW 0x31           ;   b'00110001'  d'049'  "1"
    MOVWF T1CON          ; !!Bank!! T1CON - OSCCAL
    CLRF INTCON
    MOVLW 0x1E           ;   b'00011110'  d'030'
    MOVWF CMCON          ; !!Bank!! CMCON - VRCON
    MOVLW 0x20           ;   b'00100000'  d'032'  " "
    MOVWF FSR
LADR_0x0026
    CLRF INDF
    INCF FSR,F
    BTFSS FSR,4
    GOTO LADR_0x0026
    MOVLW 0x78           ;   b'01111000'  d'120'  "x"
    MOVWF LRAM_0x20
    CALL LADR_0x00C8
LADR_0x002D
    BTFSC LRAM_0x28,5
    GOTO LADR_0x00C1
    BTFSC GPIO,4         ; !!Bank!! GPIO - TRISIO
    GOTO LADR_0x0035
    CALL LADR_0x00D0
    BTFSC GPIO,4         ; !!Bank!! GPIO - TRISIO
    GOTO LADR_0x0035
    GOTO LADR_0x00BB
LADR_0x0035
    CLRW
    CALL LADR_0x00F4
    MOVWF LRAM_0x21
    XORLW 0xFF           ;   b'11111111'  d'255'
    BTFSS STATUS,Z
    GOTO LADR_0x003D
    MOVLW 0x02           ;   b'00000010'  d'002'
    MOVWF LRAM_0x21
LADR_0x003D
    MOVLW 0x01           ;   b'00000001'  d'001'
    CALL LADR_0x00F4
    XORLW 0x01           ;   b'00000001'  d'001'
    BTFSS STATUS,Z
    GOTO LADR_0x005A
    BSF LRAM_0x28,3
    BTFSS LRAM_0x28,3
    GOTO LADR_0x005A
    BCF LRAM_0x28,3
    BSF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    CLRF EEDATA          ; !!Bank!! Unimplemented - EEDATA
    MOVLW 0x01           ;   b'00000001'  d'001'
    MOVWF EEADR          ; !!Bank!! Unimplemented - EEADR
    CALL LADR_0x00E7
    MOVLW 0xDF           ;   b'11011111'  d'223'
    MOVWF LRAM_0x23
    MOVLW 0xBB           ;   b'10111011'  d'187'
    MOVWF LRAM_0x24
    MOVLW 0x33           ;   b'00110011'  d'051'  "3"
    MOVWF LRAM_0x25
LADR_0x0051
    DECFSZ LRAM_0x23,F
    GOTO LADR_0x0051
    DECFSZ LRAM_0x24,F
    GOTO LADR_0x0051
    DECFSZ LRAM_0x25,F
    GOTO LADR_0x0051
    NOP
    NOP
    GOTO LADR_0x0081
LADR_0x005A
    BCF LRAM_0x28,5
    BTFSC CMCON,6        ; !!Bank!! CMCON - VRCON
    GOTO LADR_0x0065
    CLRF INTCON
    CLRF GPIO            ; !!Bank!! GPIO - TRISIO
    CALL LADR_0x00CB
    CALL LADR_0x00C3
    MOVLW 0x78           ;   b'01111000'  d'120'  "x"
    MOVWF LRAM_0x20
    BCF LRAM_0x28,2
    GOTO LADR_0x005A
LADR_0x0065
    BTFSC GPIO,4         ; !!Bank!! GPIO - TRISIO
    GOTO LADR_0x0075
    CALL LADR_0x00D0
    BTFSC GPIO,4         ; !!Bank!! GPIO - TRISIO
    GOTO LADR_0x0075
    BSF LRAM_0x28,1
    BTFSC LRAM_0x28,0
    GOTO LADR_0x0065
    DECFSZ LRAM_0x22,F
    GOTO LADR_0x0091
    BSF LRAM_0x28,0
    CALL LADR_0x00CB
    CALL LADR_0x00CB
    CALL LADR_0x00CB
    CALL LADR_0x00C8
    GOTO LADR_0x0065
LADR_0x0075
    CALL LADR_0x00C8
    BTFSC LRAM_0x28,0
    GOTO LADR_0x0088
    BTFSS LRAM_0x28,1
    GOTO LADR_0x00B1
    BCF LRAM_0x28,1
    BTFSS LRAM_0x28,2
    GOTO LADR_0x0081
    CLRF GPIO            ; !!Bank!! GPIO - TRISIO
    CLRF INTCON
    BCF LRAM_0x28,2
    GOTO LADR_0x005A
LADR_0x0081
    MOVLW 0x22           ;   b'00100010'  d'034'  """
    MOVWF GPIO           ; !!Bank!! GPIO - TRISIO
    BSF LRAM_0x28,2
    CALL LADR_0x00C3
    MOVLW 0xC0           ;   b'11000000'  d'192'
    MOVWF INTCON
    GOTO LADR_0x005A
LADR_0x0088
    CLRF LRAM_0x21
LADR_0x0089
    BTFSC GPIO,4         ; !!Bank!! GPIO - TRISIO
    GOTO LADR_0x0093
    CALL LADR_0x00D0
    BTFSC GPIO,4         ; !!Bank!! GPIO - TRISIO
    GOTO LADR_0x0093
    BSF LRAM_0x28,4
    BSF GPIO,5           ; !!Bank!! GPIO - TRISIO
    GOTO LADR_0x0089
LADR_0x0091
    CALL LADR_0x00D0
    GOTO LADR_0x0065
LADR_0x0093
    BCF GPIO,5           ; !!Bank!! GPIO - TRISIO
    BTFSS LRAM_0x28,4
    GOTO LADR_0x00A0
    BCF LRAM_0x28,4
    CALL LADR_0x00C8
    INCF LRAM_0x21,F
    MOVF LRAM_0x21,W
    XORLW 0x15           ;   b'00010101'  d'021'
    BTFSS STATUS,Z
    GOTO LADR_0x009F
    MOVLW 0x01           ;   b'00000001'  d'001'
    MOVWF LRAM_0x21
LADR_0x009F
    GOTO LADR_0x0089
LADR_0x00A0
    DECFSZ LRAM_0x22,F
    GOTO LADR_0x00AF
    CALL LADR_0x00C8
    MOVF LRAM_0x21,W
    BTFSS STATUS,Z
    GOTO LADR_0x00A7
    MOVLW 0x01           ;   b'00000001'  d'001'
LADR_0x00A7
    BSF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    MOVWF EEDATA         ; !!Bank!! Unimplemented - EEDATA
    CLRF EEADR           ; !!Bank!! Unimplemented - EEADR
    CALL LADR_0x00E7
    CALL LADR_0x00CB
    CALL LADR_0x00CB
    CALL LADR_0x00CB
    GOTO START
LADR_0x00AF
    CALL LADR_0x00D0
    GOTO LADR_0x0089
LADR_0x00B1
    MOVF LRAM_0x21,F
    BTFSS STATUS,Z
    GOTO LADR_0x005A
    CLRW
    CALL LADR_0x00F4
    MOVWF LRAM_0x21
    CLRF GPIO            ; !!Bank!! GPIO - TRISIO
    CLRF INTCON
    BCF LRAM_0x28,2
    GOTO LADR_0x005A
LADR_0x00BB
    MOVLW 0x01           ;   b'00000001'  d'001'
    BSF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    MOVWF EEDATA         ; !!Bank!! Unimplemented - EEDATA
    MOVWF EEADR          ; !!Bank!! Unimplemented - EEADR
    CALL LADR_0x00E7
    BSF LRAM_0x28,5
LADR_0x00C1
    CALL LADR_0x00CB
    GOTO LADR_0x002D
LADR_0x00C3
    MOVLW 0x0D           ;   b'00001101'  d'013'
    MOVWF TMR1H          ; !!Bank!! TMR1H - Unimplemented
    MOVLW 0x3C           ;   b'00111100'  d'060'  "<"
    MOVWF TMR1L          ; !!Bank!! TMR1L - PCON
    RETURN
LADR_0x00C8
    MOVLW 0xFA           ;   b'11111010'  d'250'
    MOVWF LRAM_0x22
    RETURN
LADR_0x00CB
    BSF GPIO,5           ; !!Bank!! GPIO - TRISIO
    CALL LADR_0x00DA
    BCF GPIO,5           ; !!Bank!! GPIO - TRISIO
    CALL LADR_0x00DA
    RETURN
LADR_0x00D0
    MOVLW 0xF8           ;   b'11111000'  d'248'
    MOVWF LRAM_0x23
    MOVLW 0x1A           ;   b'00011010'  d'026'
    MOVWF LRAM_0x24
LADR_0x00D4
    DECFSZ LRAM_0x23,F
    GOTO LADR_0x00D4
    DECFSZ LRAM_0x24,F
    GOTO LADR_0x00D4
    NOP
    RETURN
LADR_0x00DA
    MOVLW 0x55           ;   b'01010101'  d'085'  "U"
    MOVWF LRAM_0x23
    MOVLW 0x8A           ;   b'10001010'  d'138'
    MOVWF LRAM_0x24
    MOVLW 0x03           ;   b'00000011'  d'003'
    MOVWF LRAM_0x25
LADR_0x00E0
    DECFSZ LRAM_0x23,F
    GOTO LADR_0x00E0
    DECFSZ LRAM_0x24,F
    GOTO LADR_0x00E0
    DECFSZ LRAM_0x25,F
    GOTO LADR_0x00E0
    RETURN
LADR_0x00E7
    BSF EECON1,2         ; !!Bank!! Unimplemented - EECON1
    BCF INTCON,GIE
    MOVLW 0x55           ;   b'01010101'  d'085'  "U"
    MOVWF EECON2         ; !!Bank!! Unimplemented - EECON2
    MOVLW 0xAA           ;   b'10101010'  d'170'
    MOVWF EECON2         ; !!Bank!! Unimplemented - EECON2
    BSF EECON1,1         ; !!Bank!! Unimplemented - EECON1
LADR_0x00EE
    BCF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    BSF INTCON,GIE
    BTFSS PIR1,7         ; !!Bank!! PIR1 - PIE1
    GOTO LADR_0x00EE
    BCF PIR1,7           ; !!Bank!! PIR1 - PIE1
    RETURN
LADR_0x00F4
    BSF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    MOVWF EEADR          ; !!Bank!! Unimplemented - EEADR
    BSF EECON1,0         ; !!Bank!! Unimplemented - EECON1
    MOVF EEDATA,W        ; !!Bank!! Unimplemented - EEDATA
    BCF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    RETURN

    End
