📄 key4x4.s
字号:
.module key4x4.c
.area text(rom, con, rel)
.dbfile E:\产品\开发板\mega128-board\待完成\扩展4x4键盘输入\key4x4.c
.dbfile E:\产品\开发板\mega128-board\待完成\扩展4x4键盘输入\key4x4.h
.dbfunc e s_ms _s_ms fV
; t -> R16,R17
.even
_s_ms::
.dbline -1
.dbline 3
; #include<iom128v.h>
; #include"key4x4.h"
; #define uchar unsigned char
.dbline 4
; #define uint unsigned int
xjmp L5
L2:
.dbline 5
;
.dbline 6
; //主函数
L3:
.dbline 4
subi R16,1
sbci R17,0
L5:
.dbline 4
ldi R24,1
ldi R25,0
cp R24,R16
cpc R25,R17
brlo L2
X0:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r t 16 i
.dbend
.dbfunc e key_value _key_value fc
; i -> <dead>
; tem2 -> R10
; rem -> R20
; tem1 -> R22
.even
_key_value::
xcall push_xgsetF00C
.dbline -1
.dbline 12
; main()
; {
; uchar key;
; DDRA=0xff;
; DDRC=0xff;
; PORTA=0xff;
.dbline 14
; while(1)
; {
clr R20
.dbline 16
; key=key_value(); //读取4x4键盘
; if(key!=0) //有按键被按下
ldi R24,240
out 0x14,R24
.dbline 18
; {
; PORTA=~key; //显示键值
ldi R24,15
out 0x15,R24
.dbline 20
; }
; }
ldi R16,30
ldi R17,0
xcall _s_ms
.dbline 21
;
in R22,0x13
.dbline 23
; }
andi R22,15
.dbline 25
cpi R22,15
breq L7
X1:
.dbline 26
.dbline 27
ldi R16,800
ldi R17,3
xcall _s_ms
.dbline 29
in R10,0x13
.dbline 31
mov R24,R10
andi R24,15
mov R10,R24
.dbline 33
cp R22,R24
brne L9
X2:
.dbline 34
.dbline 35
ldi R24,15
out 0x14,R24
.dbline 37
ldi R24,240
out 0x15,R24
.dbline 39
ldi R16,1
ldi R17,0
xcall _s_ms
.dbline 41
in R20,0x13
.dbline 43
andi R20,240
.dbline 45
add R20,R22
.dbline 47
com R20
L11:
.dbline 51
.dbline 52
ldi R24,240
out 0x15,R24
.dbline 53
ldi R16,3000
ldi R17,11
xcall _s_ms
.dbline 54
L12:
.dbline 55
in R24,0x13
cpi R24,240
brne L11
X3:
.dbline 56
L9:
.dbline 57
L7:
.dbline 58
ldi R16,6000
ldi R17,23
xcall _s_ms
.dbline 59
ldi R16,6000
ldi R17,23
xcall _s_ms
.dbline 60
mov R16,R20
.dbline -2
L6:
.dbline 0 ; func end
xjmp pop_xgsetF00C
.dbsym l i 1 c
.dbsym r tem2 10 c
.dbsym r rem 20 c
.dbsym r tem1 22 c
.dbend
.dbfile E:\产品\开发板\mega128-board\待完成\扩展4x4键盘输入\key4x4.c
.dbfunc e main _main fI
; key -> R10
.even
_main::
.dbline -1
.dbline 8
.dbline 10
ldi R24,255
out 0x1a,R24
.dbline 11
out 0x14,R24
.dbline 12
out 0x1b,R24
xjmp L16
L15:
.dbline 14
.dbline 15
xcall _key_value
mov R10,R16
.dbline 16
tst R16
breq L18
X4:
.dbline 17
.dbline 18
mov R2,R10
com R2
out 0x1b,R2
.dbline 19
L18:
.dbline 20
L16:
.dbline 13
xjmp L15
X5:
.dbline -2
L14:
.dbline 0 ; func end
ret
.dbsym r key 10 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -