ir_thomson.asm

来自「.ifnz I2C_SUPPORT ********************」· 汇编 代码 · 共 155 行

ASM
155
字号
.if IR_THOMSON
         inc    markcount          
         inc    spacecount          
         inc    synccount          
         inc    bit01count               
         lda    IrStateFlag                
         cmp    #IR_MARK_STATE    
         beq    preprocessmark
         cmp    #IR_SPACE_STATE   
         beq    preprocessspace
         cmp    #IR_SYNC_STATE    
         beq    preprocesssync
         cmp    #IR_BIT01_STATE     
         beq    preprocessbit01       
         cmp    #BEGIN_FROM_HEAD  
         beq    beginning   
preprocessmark:
         jmp     processmark
preprocessspace:
         jmp     processspace  
preprocesssync:
         jmp     processsync  
preprocessbit01:
         jmp     processbit01                                      
beginning:              
         lda    IR_PORT
         and    #IR_IN
         bne    exit1
         lda    #0
         sta    markcount
         lda    #IR_MARK_STATE
         sta    IrStateFlag        
exit1:
         jmp    PreIrqExit   
;;-----------------------------------------------
SRAM_PG1:       .section        ;;PAGE1 start
;;-----------------------------------------------          
processmark:
         lda    IR_PORT
         and    #IR_IN
         beq    exit2
         lda    markcount
         cmp    #34         ;;36
         bcc    fromhead
         lda    #IR_SPACE_STATE
         sta    IrStateFlag
         lda    #0
         sta    spacecount         
exit2:
         jmp    PreIrqExit 
processspace:
         lda    IR_PORT
         and    #IR_IN
         bne    exit3
         lda    spacecount
         cmp    #34         ;;36
         bcc    fromhead
         lda    #IR_SYNC_STATE
         sta    IrStateFlag
         lda    #0
         sta    synccount   
exit3:
         jmp    PreIrqExit 
processsync:    
         lda    IR_PORT
         and    #IR_IN
         beq    exit4
         lda    synccount
         cmp    #3         ;;4
         bcc    fromhead
         lda    #IR_BIT01_STATE
         sta    IrStateFlag
         lda    #0
         sta    bit01count   
exit4:
         jmp    PreIrqExit                
processbit01:
         lda    IR_PORT
         and    #IR_IN
         bne    exit5
         lda    bit01count
         cmp    #15       ;;18
         bcc    checknext
         lda    #1
         sta    bitis0
         lda    #IR_SYNC_STATE
         sta    IrStateFlag
         lda    #0
         sta    synccount 
         bra    exit5
checknext:
         lda    bit01count
         cmp    #7         ;;9
         bcc    fromhead
         lda    #1
         sta    bitis1
         lda    #IR_SYNC_STATE
         sta    IrStateFlag
         lda    #0
         sta    synccount 
exit5:         
         jmp    PreIrqExit  
fromhead:
         lda    #BEGIN_FROM_HEAD
         sta    IrStateFlag 
         stz    datacount
         jmp    PreIrqExit
PreIrqExit:
         lda    datacount
         cmp    #12
         beq    sendIRdata
         lda    bitis0
         cmp    #1
         bne    check_next_bit
         lda    #0
         sta    bitis0
         inc    datacount
         clc
         bra    receive
check_next_bit:
         lda    bitis1
         cmp    #1
         bne    end_exit
         lda    #0
         sta    bitis1
         inc    datacount
         sec
receive:    
         rol    Receiver1     
         rol    Receiver2        
         bra    end_exit                 
sendIRdata:
         inc    repeattimes
         lda    repeattimes
         cmp    #3
         bne    next
         stz    repeattimes
         lda    IOP_DATA5_H
         ora    #$80
         sta    IOP_DATA5_H                         
         lda    Receiver1
         eor    #%11111111
         sta    IOP_DATA5_L 
         lda    Receiver2
         sta    IOP_DATA6_L 
next:                 
         stz    Receiver1         
         stz    Receiver2                  
         lda    #0
         sta    datacount
         lda    #BEGIN_FROM_HEAD
         sta    IrStateFlag        
end_exit:
         jmp  lIrqIrExit       
.endif

⌨️ 快捷键说明

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