📄 timer.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 + -