📄 read_key2.s
字号:
.module READ_KEY2.c
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\asdf\MYDOCU~1\11111111111\READ_KEY2.c
.dbfunc e delay_1ms _delay_1ms fV
; i -> R16,R17
; j -> R18,R19
.even
_delay_1ms::
.dbline -1
.dbline 4
; #include<iom8v.h>
; #include<macros.h>
; void delay_1ms(void)
; {
.dbline 6
; int i,j;
; for(i=0;i<10;i++)
clr R16
clr R17
L2:
.dbline 7
clr R18
clr R19
L6:
.dbline 7
L7:
.dbline 7
subi R18,255 ; offset = 1
sbci R19,255
.dbline 7
cpi R18,100
ldi R30,0
cpc R19,R30
brlt L6
L3:
.dbline 6
subi R16,255 ; offset = 1
sbci R17,255
.dbline 6
cpi R16,10
ldi R30,0
cpc R17,R30
brlt L2
.dbline -2
.dbline 8
; for(j=0;j<100;j++);
; }
L1:
.dbline 0 ; func end
ret
.dbsym r i 16 I
.dbsym r j 18 I
.dbend
.dbfunc e read_key _read_key fc
; key -> R20
; a -> y+0
; i -> R22,R23
.even
_read_key::
rcall push_gset2
sbiw R28,5
.dbline -1
.dbline 10
; char read_key(void)
; {
.dbline 13
; int i;
; char a[5],key;
; for(i=0;i<5;i++)
clr R22
clr R23
L11:
.dbline 14
.dbline 15
rcall _delay_1ms
.dbline 16
movw R24,R28
movw R30,R22
add R30,R24
adc R31,R25
in R2,0x16
std z+0,R2
.dbline 17
L12:
.dbline 13
subi R22,255 ; offset = 1
sbci R23,255
.dbline 13
cpi R22,5
ldi R30,0
cpc R23,R30
brlt L11
.dbline 18
; {
; delay_1ms();
; a[i]=PINB;
; }
; if((a[0]==a[1])&&(a[1]==a[2])&&(a[2]==a[3])&&(a[3]==a[4]))
ldd R2,y+1
ldd R3,y+0
cp R3,R2
brne L15
ldd R2,y+2
ldd R3,y+1
cp R3,R2
brne L15
ldd R2,y+3
ldd R3,y+2
cp R3,R2
brne L15
ldd R2,y+4
ldd R3,y+3
cp R3,R2
brne L15
.dbline 19
; key=a[4];
mov R20,R2
rjmp L16
L15:
.dbline 21
; else
; key=0xFF;
ldi R20,255
L16:
.dbline 22
; return key;
mov R16,R20
.dbline -2
L10:
adiw R28,5
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r key 20 c
.dbsym l a 0 A[5:5]c
.dbsym r i 22 I
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -