⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ir_konka.asm

📁 .ifnz I2C_SUPPORT ************************************************************** Function : fPro
💻 ASM
字号:
.ifnz IR_KONKA
;;---------------------------------------------------------------------------
SRAM_PG1:       .section        ;;PAGE1 start
;;---------------------------------------------------------------------------   
        lda     IrStateFlag
        cmp     #STATE_IDLE
        beq     F_idle_state
        cmp     #STATE_3MS_LOW
        beq     F_3ms_low_state
        cmp     #STATE_3MS_HIGH
        beq     F_3ms_high_state
        cmp     #STATE_0_5MS_LOW
        beq     F_0_5ms_low_state
        cmp     #STATE_BIT01
        beq     F_bit_is_0_or_1_state    
;;---------------------------------------------------------------------------         
F_idle_state:
        lda     IR_PORT
        and     #IR_IN
        bne     Judge_repeat_press_key    
        stz     IO_low_counter
        stz     Idle_counter
        lda     #STATE_3MS_LOW
        sta     IrStateFlag
        jmp     Exit_IR_Interrupt   
Judge_repeat_press_key:        
        inc     Idle_counter
        lda     Idle_counter
        cmp     #REPEAT_LEN
        bcc     Exit_idle_state
        stz     First_send_data_flag
        stz     Idle_counter
        stz     Repeat_counter   
Exit_idle_state:      
        jmp     Exit_IR_Interrupt 
;;---------------------------------------------------------------------------
F_3ms_low_state:
        inc     IO_low_counter
        lda     IR_PORT
        and     #IR_IN
        beq     Pre_Exit_IR_Interrupt
        lda     IO_low_counter
        cmp     #MASK_LEN
        bcc     Pre_F_Error_Handle
        stz     IO_high_counter
        lda     #STATE_3MS_HIGH
        sta     IrStateFlag
        jmp     Exit_IR_Interrupt   

;;---------------------------------------------------------------------------
F_3ms_high_state:
        inc     IO_high_counter
        lda     IR_PORT
        and     #IR_IN
        bne     Pre_Exit_IR_Interrupt
        lda     IO_high_counter
        cmp     #SPACE_LEN
        bcc     Pre_F_Error_Handle
        stz     IO_low_counter
        lda     #STATE_0_5MS_LOW
        sta     IrStateFlag
        jmp     Exit_IR_Interrupt 
;;---------------------------------------------------------------------------
F_0_5ms_low_state:
        inc     IO_low_counter
        lda     IR_PORT
        and     #IR_IN
        beq     Pre_Exit_IR_Interrupt
        lda     IO_low_counter
        cmp     #SYNC_LEN
        bcc     Pre_F_Error_Handle
        stz     IO_high_counter
        lda     #STATE_BIT01
        sta     IrStateFlag
        jmp     Exit_IR_Interrupt 
;;--------------------------------------------------------------------------- 
Pre_Exit_IR_Interrupt:
        jmp     Exit_IR_Interrupt
Pre_F_Error_Handle:
        jmp     F_Error_Handle        
;;---------------------------------------------------------------------------
F_bit_is_0_or_1_state:
        inc     IO_high_counter
        lda     IR_PORT
        and     #IR_IN
        bne     Exit_IR_Interrupt
        lda     IO_high_counter
        cmp     #BIT1_LEN
        bcs     Bit_is_1
        cmp     #BIT0_LEN
        bcs     Bit_is_0
        bra     F_Error_Handle      
Bit_is_1:        
        sec
        bra     Receive_data
Bit_is_0:
        clc
Receive_data:
        rol     Data_IR_Code
        rol     Data_Customer_Code
        inc     Data_bits_counter
        lda     Data_bits_counter
        cmp     #16
        bne     Enter_0_5ms_low_state 
        stz     Data_bits_counter 
        lda     Data_IR_Code
        eor     Prev_ir_data
        cmp     #0        
        beq     Process_next_receive
        stz     First_send_data_flag  
        stz     Repeat_counter         
Process_next_receive:               
        lda     First_send_data_flag
        cmp     #1
        bne     Send_Data_To_Risc  
        inc     Repeat_counter  
        lda     IOP_DATA5_H
        and     #%00001111
        eor     Repeat_counter 
        cmp     #0   
        bne     Restart   
        stz     Repeat_counter   
        lda     IOP_DATA5_H
        ora     #%11000000
        sta     IOP_DATA5_H     
Send_Data_To_Risc:               
        lda     Data_IR_Code
        sta     IOP_DATA5_L   
        lda     Data_IR_Code
        sta     Prev_ir_data        
        lda     Data_Customer_Code
        sta     IOP_DATA6_L
        lda     IOP_DATA5_H
        ora     #%10000000
        sta     IOP_DATA5_H   
        lda     #1
        sta     First_send_data_flag
        bra     Restart
Enter_0_5ms_low_state:
        stz     IO_low_counter
        lda     #STATE_0_5MS_LOW
        sta     IrStateFlag
        jmp     Exit_IR_Interrupt      
;;---------------------------------------------------------------------------
F_Error_Handle:         
Restart:        
        stz     Data_bits_counter
        stz     IO_high_counter
        stz     IO_low_counter
        stz     Data_Customer_Code     
        stz     Data_IR_Code   
        stz     Idle_counter           
        lda     #STATE_IDLE
        sta     IrStateFlag
;;---------------------------------------------------------------------------        
Exit_IR_Interrupt:             
.endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -