; original File = D:\2.SNI\Personal project\UIR\ir509B.hex

    processor 12F509
    #include <P12F509.INC>
    __config _MCLRE_OFF & _CP_OFF & _WDT_ON & _XT_OSC ; 0x0FED

; RAM-Variable
LRAM_0x0B equ 0x0B
LRAM_0x0F equ 0x0F
LRAM_0x11 equ 0x11
LRAM_0x12 equ 0x12
LRAM_0x13 equ 0x13
LRAM_0x14 equ 0x14
LRAM_0x15 equ 0x15
LRAM_0x16 equ 0x16
LRAM_0x17 equ 0x17
LRAM_0x18 equ 0x18
LRAM_0x19 equ 0x19
LRAM_0x1A equ 0x1A
LRAM_0x1B equ 0x1B
LRAM_0x1C equ 0x1C

; Program

    Org 0x0000

;   Reset-Vector
    GOTO LADR_0x0005

    Org 0x0004

    GOTO LADR_0x0005
LADR_0x0005
    MOVWF OSCCAL
    CLRF LRAM_0x0B
    MOVLW 0x09
    TRIS
    MOVLW 0xC2
    OPTION
    BCF GPIO,GP2
    BTFSS STATUS,NOT_TO
    GOTO LADR_0x00E2
    CLRWDT
    MOVLW 0x58
    CALL LADR_0x00B6
    CALL LADR_0x009F
    MOVF LRAM_0x12,W
    BCF STATUS,Z
    BCF STATUS,C
    XORLW 0x49
    BTFSS STATUS,Z
    GOTO LADR_0x0005
    CALL LADR_0x009F
    MOVF LRAM_0x12,W
    BCF STATUS,Z
    BCF STATUS,C
    XORLW 0x52
    BTFSS STATUS,Z
    GOTO LADR_0x0005
    MOVLW 0x4F
    CALL LADR_0x00B6
    MOVLW 0x4B
    CALL LADR_0x00B6
LADR_0x0023
    CALL LADR_0x0091
LADR_0x0024
    CLRWDT
    BTFSC GPIO,GP3
    GOTO LADR_0x0024
    CLRF TMR0
LADR_0x0028
    BTFSS GPIO,GP3
    GOTO LADR_0x002D
    MOVF TMR0,W
    MOVWF LRAM_0x15
    GOTO LADR_0x006F
LADR_0x002D
    CLRWDT
    BTFSS TMR0,7
    GOTO LADR_0x0028
    BTFSS TMR0,6
    GOTO LADR_0x0028
    CLRWDT
LADR_0x0033
    BTFSS GPIO,GP3
    GOTO LADR_0x0033
    CLRF TMR0
    CLRWDT
LADR_0x0037
    BTFSC GPIO,GP3
    GOTO LADR_0x003D
    MOVF TMR0,W
    CLRF TMR0
    MOVWF LRAM_0x15
    GOTO LADR_0x011C
LADR_0x003D
    BTFSS TMR0,7
    GOTO LADR_0x0037
    CLRWDT
LADR_0x0040
    BTFSC GPIO,GP3
    GOTO LADR_0x0040
    CLRF TMR0
LADR_0x0043
    BTFSS GPIO,GP3
    GOTO LADR_0x0043
    MOVF TMR0,W
    CLRF TMR0
    MOVWF LRAM_0x15
    BCF STATUS,C
    RRF LRAM_0x15,W
    ADDWF LRAM_0x15,F
LADR_0x004B
    CLRWDT
    CLRF LRAM_0x1B
    CLRF LRAM_0x1A
    CLRF LRAM_0x19
    CLRF LRAM_0x18
    CLRF LRAM_0x17
    CLRF LRAM_0x16
    MOVLW 0x30
    MOVWF LRAM_0x14
    GOTO LADR_0x0059
LADR_0x0055
    BTFSS GPIO,GP3
    GOTO LADR_0x0055
    CLRF TMR0
    CLRWDT
LADR_0x0059
    BCF STATUS,C
    MOVF TMR0,W
    SUBWF LRAM_0x15,W
    BTFSS STATUS,Z
    GOTO LADR_0x0059
    BCF STATUS,C
    BTFSS GPIO,GP3
    GOTO LADR_0x0065
    CLRF TMR0
LADR_0x0062
    BTFSC GPIO,GP3
    GOTO LADR_0x0062
    BSF STATUS,C
LADR_0x0065
    CLRWDT
    RLF LRAM_0x16,F
    RLF LRAM_0x17,F
    RLF LRAM_0x18,F
    RLF LRAM_0x19,F
    RLF LRAM_0x1A,F
    RLF LRAM_0x1B,F
    DECFSZ LRAM_0x14,F
    GOTO LADR_0x0055
    GOTO LADR_0x00D4
LADR_0x006F
    CLRWDT
    BTFSC LRAM_0x15,7
    GOTO LADR_0x00F1
    BTFSC LRAM_0x15,6
    GOTO LADR_0x00F1
    CLRF TMR0
    CLRWDT
LADR_0x0076
    BTFSC GPIO,GP3
    GOTO LADR_0x0076
    CLRF TMR0
    CLRWDT
LADR_0x007A
    BTFSS GPIO,GP3
    GOTO LADR_0x007A
    MOVF TMR0,W
    CLRF TMR0
    MOVWF LRAM_0x15
    RRF LRAM_0x15,F
    CLRWDT
LADR_0x0081
    BTFSC GPIO,GP3
    GOTO LADR_0x0081
    MOVF TMR0,W
    CLRF TMR0
    ADDWF LRAM_0x15,F
    CLRWDT
LADR_0x0087
    BTFSS GPIO,GP3
    GOTO LADR_0x0087
    GOTO LADR_0x004B
LADR_0x008A
    BTFSC GPIO,GP3
    GOTO LADR_0x008A
    MOVF TMR0,W
    CLRF TMR0
    MOVWF LRAM_0x15
    RRF LRAM_0x15,F
    GOTO LADR_0x004B
LADR_0x0091
    MOVLW 0xC7
    OPTION
    CLRWDT
    BTFSS GPIO,GP3
    GOTO LADR_0x0091
    CLRF TMR0
LADR_0x0097
    CLRWDT
    BTFSS GPIO,GP3
    GOTO LADR_0x0091
    BTFSS TMR0,7
    GOTO LADR_0x0097
    MOVLW 0xC2
    OPTION
    RETLW 0x00
LADR_0x009F
    MOVLW 0x08
    MOVWF LRAM_0x0F
    CLRF LRAM_0x12
LADR_0x00A2
    CLRWDT
    BTFSS GPIO,GP0
    GOTO LADR_0x00A2
    MOVLW 0x2E
    MOVWF LRAM_0x13
LADR_0x00A7
    DECFSZ LRAM_0x13,F
    GOTO LADR_0x00A7
LADR_0x00A9
    BCF STATUS,C
    RRF LRAM_0x12,F
    BTFSS GPIO,GP0
    BSF LRAM_0x12,7
    MOVLW 0x1F
    MOVWF LRAM_0x13
LADR_0x00AF
    DECFSZ LRAM_0x13,F
    GOTO LADR_0x00AF
    NOP
    DECFSZ LRAM_0x0F,F
    GOTO LADR_0x00A9
    MOVF LRAM_0x12,W
    RETLW 0x00
LADR_0x00B6
    CLRWDT
    MOVWF LRAM_0x11
    MOVLW 0x08
    MOVWF LRAM_0x0F
    BSF GPIO,GP2
LADR_0x00BB
    MOVLW 0x1F
    MOVWF LRAM_0x13
LADR_0x00BD
    DECFSZ LRAM_0x13,F
    GOTO LADR_0x00BD
    BCF STATUS,C
    RRF LRAM_0x11,F
    BTFSC STATUS,C
    BCF GPIO,GP2
    BTFSS STATUS,C
    BSF GPIO,GP2
    NOP
    DECFSZ LRAM_0x0F,F
    GOTO LADR_0x00BB
    MOVLW 0x1F
    MOVWF LRAM_0x13
LADR_0x00CA
    DECFSZ LRAM_0x13,F
    GOTO LADR_0x00CA
    BCF GPIO,GP2
    MOVWF LRAM_0x13
LADR_0x00CE
    DECFSZ LRAM_0x13,F
    GOTO LADR_0x00CE
    MOVWF LRAM_0x13
LADR_0x00D1
    DECFSZ LRAM_0x13,F
    GOTO LADR_0x00D1
    RETLW 0x00
LADR_0x00D4
    CLRWDT
    MOVF LRAM_0x1B,W
    CALL LADR_0x00B6
    MOVF LRAM_0x1A,W
    CALL LADR_0x00B6
    MOVF LRAM_0x19,W
    CALL LADR_0x00B6
    MOVF LRAM_0x18,W
    CALL LADR_0x00B6
    MOVF LRAM_0x17,W
    CALL LADR_0x00B6
    MOVF LRAM_0x16,W
    CALL LADR_0x00B6
    GOTO LADR_0x0023
LADR_0x00E2
    CLRWDT
    BCF STATUS,C
    MOVLW 0x26
    SUBWF LRAM_0x14,W
    BTFSC STATUS,C
    GOTO LADR_0x0023
LADR_0x00E8
    RLF LRAM_0x16,F
    RLF LRAM_0x17,F
    RLF LRAM_0x18,F
    RLF LRAM_0x19,F
    RLF LRAM_0x1A,F
    RLF LRAM_0x1B,F
    DECFSZ LRAM_0x14,F
    GOTO LADR_0x00E8
    GOTO LADR_0x00D4
LADR_0x00F1
    CLRWDT
    BCF STATUS,C
    RRF LRAM_0x15,W
    ADDWF LRAM_0x15,F
    MOVLW 0x50
    MOVWF LRAM_0x1C
    CLRF LRAM_0x1B
    CLRF LRAM_0x1A
    CLRF LRAM_0x19
    CLRF LRAM_0x18
    CLRF LRAM_0x17
    CLRF LRAM_0x16
    MOVLW 0x31
    MOVWF LRAM_0x14
LADR_0x00FF
    BTFSC GPIO,GP3
    GOTO LADR_0x00FF
    CLRWDT
    CLRF TMR0
LADR_0x0103
    BCF STATUS,C
    MOVF TMR0,W
    SUBWF LRAM_0x15,W
    BTFSS STATUS,Z
    GOTO LADR_0x0103
    BTFSS GPIO,GP3
    GOTO LADR_0x010E
LADR_0x010A
    BTFSC GPIO,GP3
    GOTO LADR_0x010A
    BCF STATUS,C
    GOTO LADR_0x0111
LADR_0x010E
    BTFSS GPIO,GP3
    GOTO LADR_0x010E
    BSF STATUS,C
LADR_0x0111
    CLRF TMR0
    CLRWDT
    RLF LRAM_0x16,F
    RLF LRAM_0x17,F
    RLF LRAM_0x18,F
    RLF LRAM_0x19,F
    RLF LRAM_0x1A,F
    RLF LRAM_0x1B,F
    DECFSZ LRAM_0x14,F
    GOTO LADR_0x0103
    GOTO LADR_0x00D4
LADR_0x011C
    CLRWDT
    BCF STATUS,C
    RRF LRAM_0x15,F
    ADDWF LRAM_0x15,W
    RRF LRAM_0x15,F
    ADDWF LRAM_0x15,F
    MOVLW 0x53
    MOVWF LRAM_0x1C
    CLRF LRAM_0x1B
    CLRF LRAM_0x1A
    CLRF LRAM_0x19
    CLRF LRAM_0x18
    CLRF LRAM_0x17
    CLRF LRAM_0x16
    MOVLW 0x30
    MOVWF LRAM_0x14
    GOTO LADR_0x0131
LADR_0x012D
    BTFSC GPIO,GP3
    GOTO LADR_0x012D
    CLRF TMR0
    CLRWDT
LADR_0x0131
    BCF STATUS,C
    MOVF TMR0,W
    SUBWF LRAM_0x15,W
    BTFSS STATUS,Z
    GOTO LADR_0x0131
    BCF STATUS,C
    BTFSC GPIO,GP3
    GOTO LADR_0x013D
    CLRF TMR0
LADR_0x013A
    BTFSS GPIO,GP3
    GOTO LADR_0x013A
    BSF STATUS,C
LADR_0x013D
    CLRWDT
    RLF LRAM_0x16,F
    RLF LRAM_0x17,F
    RLF LRAM_0x18,F
    RLF LRAM_0x19,F
    RLF LRAM_0x1A,F
    RLF LRAM_0x1B,F
    DECFSZ LRAM_0x14,F
    GOTO LADR_0x012D
    GOTO LADR_0x00D4

    End
