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

📄 ir_m50560.asm

📁 .ifnz I2C_SUPPORT ************************************************************** Function : fPro
💻 ASM
字号:
.ifnz IR_M50560
         inc    MarkCounter          
         inc    SpaceCounter         
         inc    SyncCounter          
         inc    Bit01Counter   
         inc    Low4msCounter             
         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    #IR_4MSLOW_STATE     
         beq    PreProcess4MsLow  
         cmp    #BEGIN_FROM_HEAD  
         beq    StartProgram   
PreProcessMark:
         jmp     ProcesSmark
PreProcessSpace:
         jmp     ProcessSpace  
PreProcessSync:
         jmp     ProcessSync  
PreProcessBit01:
         jmp     ProcessBit01    
PreProcess4MsLow:
         jmp     Process4MsLow  
StartProgram: 
         lda    IR_PORT
         and    #IR_IN
         bne    DirectExit
         lda    #0
         sta    MarkCounter
         lda    #IR_MARK_STATE
         sta    IrStateFlag        
DirectExit:
         jmp    EndExit            
;;-----------------------------------------------
SRAM_PG1:       .section        ;;PAGE1 start
;;-----------------------------------------------     
       
ProcesSmark:
         lda    IR_PORT
         and    #IR_IN
         beq    Exit1
         lda    MarkCounter
         cmp    #65           ;;73
         bcc    LongJmp1
         lda    #IR_SPACE_STATE
         sta    IrStateFlag
         lda    #0
         sta    SpaceCounter         
Exit1:
         jmp    EndExit  
LongJmp1:  
         jmp    FromHeadStart       
;------------------------------------------------------------------                 
ProcessSpace:
         lda    IR_PORT
         and    #IR_IN
         bne    Exit2
         lda    SpaceCounter
         cmp    #33          ;;36
         bcc    LongJmp2 
         lda    #IR_SYNC_STATE
         sta    IrStateFlag
         lda    #0
         sta    SyncCounter   
Exit2:
         jmp    EndExit 
LongJmp2:
         jmp    FromHeadStart         
;------------------------------------------------------------------          
ProcessSync:
         lda    IR_PORT
         and    #IR_IN
         beq    Exit3
         lda    SyncCounter
         cmp    #2            ;;4
         bcc    FromHeadStart        
         lda    BitsCounter
         cmp    #8
         bne    GoNext2
         lda    Flag4Ms
         cmp    #1
         beq    GoNext2
         lda    #IR_4MSLOW_STATE
         sta    IrStateFlag
         lda    #0
         sta    Low4msCounter
         bra    Exit3
GoNext2:    
         stz    Flag4Ms 
         lda    #IR_BIT01_STATE
         sta    IrStateFlag
         lda    #0
         sta    Bit01Counter   
Exit3:
         jmp    EndExit   
;------------------------------------------------------------------                  
ProcessBit01:
         lda    IR_PORT
         and    #IR_IN
         bne    Exit4
         lda    Bit01Counter
         cmp    #11             ;;14
         bcc    CheckNext
         lda    #1
         sta    BitIs1
         inc    BitsCounter         
         lda    #IR_SYNC_STATE
         sta    IrStateFlag
         lda    #0
         sta    SyncCounter 
         bra    Exit4
CheckNext:
         lda    Bit01Counter
         cmp    #4               ;;5
         bcc    FromHeadStart
         lda    #1
         sta    BitIs0
         inc    BitsCounter
                 
         lda    #IR_SYNC_STATE
         sta    IrStateFlag
         lda    #0
         sta    SyncCounter 
Exit4:         
         jmp    PreIrqExit  
;------------------------------------------------------------------         
Process4MsLow:  
         lda    #1    
         sta    Flag4Ms   
         lda    IR_PORT
         and    #IR_IN
         bne    Exit5        
         lda    Low4msCounter
         cmp    #30               ;;36
         bcc    FromHeadStart
         lda    #IR_SYNC_STATE
         sta    IrStateFlag
         lda    #0
         sta    SyncCounter   
Exit5:
         jmp    EndExit
;------------------------------------------------------------------           
FromHeadStart:      	             
         lda    #BEGIN_FROM_HEAD
         sta    IrStateFlag 
         stz    BitsCounter
         jmp    EndExit
;------------------------------------------------------------------ 
PreIrqExit:               
         lda    BitIs0
         cmp    #1
         bne    CheckNextBit
         lda    #0
         sta    BitIs0       
         clc
         bra    ReceiveData
CheckNextBit:
         lda    BitIs1
         cmp    #1
         bne    EndExit
         lda    #0
         sta    BitIs1         
         sec
ReceiveData:                
         rol    DataCode 
         rol    CustomCode  
         lda    BitsCounter
         cmp    #16
         beq    SendToRisc       
         bra    EndExit 
;------------------------------------------------------------------                          
SendToRisc:
         inc    RepTimes
         lda    RepTimes
         cmp    #3
         bne    next
         stz    RepTimes
         lda    IOP_DATA5_H
         ora    #$80
         sta    IOP_DATA5_H                         
         lda    DataCode
         eor    #%11111111
         sta    IOP_DATA5_L 
         lda    CustomCode
         sta    IOP_DATA6_L 
next:                 
         stz    DataCode 
         stz    CustomCode     
         stz    BitsCounter
         lda    #BEGIN_FROM_HEAD
         sta    IrStateFlag           
         
         
EndExit:
         jmp   lIrqIrExit
.endif

⌨️ 快捷键说明

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