📄 keyboard.asm
字号:
.include"8535def.inc"
.org 0x00
rjmp RESET ;
.org INT0addr ;通用中断
INTT0: rjmp keyint ;
;.org OC2addr
;OC2: rjmp tim2
;.org OC1Aaddr
;OC1A rjmp tim1a
;.org OC1Baddr
;OC1B rjmp tim1b
;.org URXCaddr
;UDRE rjmp RXD
;.org UDREaddr
;UDRE rjmp UDADD
;.org UTXCaddr
;UTXC rjmp TXD
.org $0010
keyint:
push r16
push r17
push r18
push r19
push r20
push r21
push r22
push r23
push r24
push r25
clr r25
clr r24
ldi r16,$01
sbis portd,3
rjmp pod3
hz1: sbis portd,4
rjmp pd4
hz2: sbis portd,5
rjmp pod5
rjmp read
pod3: mov r18,r16
rjmp hz1
pod4: mov r19,r16
rjmp hz2
pod5: mov r20,r16
read: rcall readkey
cpi r17,$01 ;启动编码
breq startsystem
cpi r17,$00 ;停止编码
breq stopsystem
cpi r17,$00 ;设定编码
breq setup
cpi r17,$00 ;退出编码
breq quit
cpi r17,$00 ;加编码
breq keyup
cpi r17,$00 ;减编码
breq keydown
cpi r17,$00 ;消音
breq mute
rjmp read
kqt: ser r16
out ddrb,r16
cpi r18,$01
breq w3
sbi portd,3
hz3: cpi r19,$01
breq w4
sbi portd,4
hz4: cpi r20,$01
breq w5
sbi portd,5
rjmp hz5
w3: cbi portd,3
rjmp hz3
w4: cbi portd,4
rjmp hz4
w5: cbi portd,5
hz5: pop r25
pop r24
pop r23
pop r22
pop r21
pop r20
pop r19
pop r18
pop r17
pop r16
reti
startsystem:
rcall fmq
ldi r16,01 ;启动风机输出
out portc,r16
sbi portd,7
nop
nop
cbi portd,7
rjmp read
stopsystem:
rcall fmq
ldi r16,00 ;停止风机输出
out portc,r16
sbi portd,7
nop
nop
cbi portd,7
rjmp read
mute: rcall fmq
cbi portd,6 ;消音报警
rjmp read
setup: rcall fmq
rcall setupxs
rcall szcs
inc r15
rjmp read
quit: rcall fmq
cpi r25,$01
breq kqt
;上一界面
dec r25
rjmp read
keyup: rcall fmq
rjmp read
keydown:rcall fmq
rjmp read
reset:
readkey:clr r16
out ddrb,r16
out portb,r16
sbi portd,5
sbi portd,4
cbi portd,3
in r17,pinb
sbi portd,3
andi r17,$7
cpi r17,$0
breq kqt
ser r16
out ddrb,r16
cbi portd,4
ldi r16,$40
out portb,r16
sbi portd,4
cbi portd,5
clr r16
out ddrb,r16
out portb,r16
cbi portd,3
in r17,pinb
sbi portd,3
sbi portd,5
ret
setupxs:rcall cs8279
ldi r16,$6d ;'S'
rcall outxs
ldi r16,$79 ;'E'
rcall outxs
ldi r16,$78 ;'t'
rcall outxs
ldi r16,$3e ;'u'
rcall outxs
ldi r16,$73 ;'p'
rcall outxs
sbi portd,5
; ldi r20,$48 ;调用延时
; rcall dely
ret
szcs: rcall cs8279
ldi r16,$78 ;'t'
rcall outxs
ldi r16,$40 ;'-'
rcall outxs
ldi r16,$40 ;'-'
rcall outxs
ldi r16,$40 ;'-'
rcall outxs
ldi r16,$40 ;'-'
rcall outxs
sbi portd,5
cs8279: sbi portd,5 ;初始化8279控制字
cbi portd,4
ldi r16,$90
out portb,r16
sbi portd,4
cbi portd,5
ret
outxs: out portb,r16
cbi portd,4
nop
sbi portd,4
ret
fmq: sbi portd,6
ldi r20,$48 ;调用延时
; rcall dely
cbi portd,6
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -