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

📄 timer.asm

📁 Holteck HT82M9XX的USB Mouse的Firmware汇编代码
💻 ASM
字号:
include         HT82K96E.inc
include         usbrf.inc

;extern         wait_time               :byte
;extern         wait_time_h             :byte
extern          tempkbtime              :byte
extern          tempkbtime_L    :byte
extern          reportkbtime    :byte

extern          bFLAG_HvRpt             :bit
extern          btime_out_KB    :bit

timer_Var               .section  'data' 
isr_acc                 db              ?
isr_status              db              ?

;arec_timer              .section  AT 330H 'code'
arec_timer              .section  AT 350H 'code'
                
;----------------------------------------------------------------------------------------------
; Remark : TMR0 interrupt service routine,累加timer counter直到Idle rate预设值
;----------------------------------------------------------------------------------------------
USB_timer_int:
        clr     wdt                             ;
        mov     isr_acc,a                       ; Save ACC
        mov     a,status                        ;
        mov     isr_status,a                    ; Save STATUS

        inc     tempkbtime_L                    ; tempkbtime_L累加1
        SnZ     bFLAG_HvRpt                     ; 是否device已经report过了(Has configured ?)
        jmp     exit_examine_report_time        ;

examine_kb_report_time:
        sz      reportkbtime                    ; 检查reportkbtime是否为0
        jmp     check_kb_time_out               ; 若reportkbtime不为0,则check_kb_time_out
examine_mouse_report_time:
        jmp     exit_examine_report_time        ; 若reportkbtime=0

check_kb_time_out:
        mov     a,tempkbtime_L                  ;
        xor     a, 100                           ; 检查tempkbtime_L是否加到了100
        snz     z                               ;
        jmp     examine_mouse_report_time       ;

        clr     tempkbtime_L                    ; 若加到100,则tempkbtime_L归0
        inc     tempkbtime                      ; 将高位变数tempkbtime加1
        mov     a,tempkbtime                    ;
        xor     a,reportkbtime                  ; 检查高位变数tempkbtime是否等於reportkbtime(预设时间点)
        sz      z                               ; (在SetIdle command时Host会指定reportkbtime=Idle rate)
        set     btime_out_KB                    ; 若预设时间点(Idle rate)已到,则设定btime_out_KB=1
        jmp     examine_mouse_report_time       ;

exit_examine_report_time:
out_of_rec_timer:
        mov     a,isr_status                    ;
        mov     status,a                        ; Restore STATUS
        mov     a,isr_acc                       ; Restore ACC
        reti

public          USB_timer_int

end

⌨️ 快捷键说明

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