📄 isr.asm
字号:
ISR:
PUSH
;-----------------------------------
; check which interrupt happen
;-----------------------------------
int0chk:
b0bts1 ft0irq
jmp intc0chk
jmp int0
intc0chk:
b0bts1 ftc0irq
jmp int_exit
jmp intC0
int0:
b0bclr ft0irq
MOV A,#0xf0 ;reload to T0C
B0MOV T0C,A
b0bset f_1ms
DECMS counter_rx
JMP $+3
; MOV A,#50
; MOV counter_rx,A
NOP
NOP
keycheck0:
b0bts1 key1
jmp $+3
clr key1_counter
jmp $+2
incms key1_counter
b0bts1 key2
jmp $+3
clr key2_counter
jmp $+2
incms key2_counter
mov a,key2_counter
xor a,#40
b0bts1 fz
jmp $+2
b0bset f_key_2
mov a,key2_counter
SUB a,#250
b0bts1 fz
JMP $+2
clr key2_counter
mov a,key1_counter
xor a,#40
b0bts1 fz
jmp $+2
b0bset f_key_1
mov a,key1_counter
SUB a,#250
b0bts1 fz
JMP $+2
clr key1_counter
jmp int_exit
/*
;============================================
; do key debounce
;============================================
dkeychat:
b0mov a,keychat
b0bts0 fz ;is keychat <> 0
jmp dkeychat90 ;is A = 0
decms keychat ;keychat1 --
jmp dkeychat90
dkeychat90:
jmp int_exit
*/
intc0:
b0bclr ftc0irq
mov a,#0F0H
mov tc0c,a
B0BSET F_100US
b0bts1 f_key2
jmp intc0_20
jmp intc0_10
intc0_10:
INCMS T_PWM_H
INCMS T_PWM_L
MOV A,T_PWM_H
XOR A,datax
B0BTS1 FZ
JMP $+3
; B0BCLR LED2
; b0bclr led1
MOV A,T_PWM_L
XOR A,#20
B0BTS1 FZ
JMP $+5
; B0BSET LED2
; b0bset led1
CLR T_PWM_H
CLR T_PWM_L
JMP intc0_90
intc0_20:
/*
INCMS T_PWM_H
INCMS T_PWM_L
MOV A,T_PWM_H
XOR A,data1
B0BTS1 FZ
JMP $+2
B0BCLR LED1
MOV A,T_PWM_L
XOR A,#20
B0BTS1 FZ
JMP $+4
B0BSET LED1
CLR T_PWM_H
CLR T_PWM_L
JMP intc0_90
*/
intc0_90:
jmp int_exit
int_exit:
pop
reti
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -