📄 read_key2.lis
字号:
.module READ_KEY2.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\asdf\MYDOCU~1\11111111111\READ_KEY2.c
0000 .dbfunc e delay_1ms _delay_1ms fV
0000 ; i -> R16,R17
0000 ; j -> R18,R19
.even
0000 _delay_1ms::
0000 .dbline -1
0000 .dbline 4
0000 ; #include<iom8v.h>
0000 ; #include<macros.h>
0000 ; void delay_1ms(void)
0000 ; {
0000 .dbline 6
0000 ; int i,j;
0000 ; for(i=0;i<10;i++)
0000 0027 clr R16
0002 1127 clr R17
0004 L2:
0004 .dbline 7
0004 2227 clr R18
0006 3327 clr R19
0008 L6:
0008 .dbline 7
0008 L7:
0008 .dbline 7
0008 2F5F subi R18,255 ; offset = 1
000A 3F4F sbci R19,255
000C .dbline 7
000C 2436 cpi R18,100
000E E0E0 ldi R30,0
0010 3E07 cpc R19,R30
0012 D4F3 brlt L6
0014 L3:
0014 .dbline 6
0014 0F5F subi R16,255 ; offset = 1
0016 1F4F sbci R17,255
0018 .dbline 6
0018 0A30 cpi R16,10
001A E0E0 ldi R30,0
001C 1E07 cpc R17,R30
001E 94F3 brlt L2
0020 .dbline -2
0020 .dbline 8
0020 ; for(j=0;j<100;j++);
0020 ; }
0020 L1:
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbsym r i 16 I
0022 .dbsym r j 18 I
0022 .dbend
0022 .dbfunc e read_key _read_key fc
0022 ; key -> R20
0022 ; a -> y+0
0022 ; i -> R22,R23
.even
0022 _read_key::
0022 00D0 rcall push_gset2
0024 2597 sbiw R28,5
0026 .dbline -1
0026 .dbline 10
0026 ; char read_key(void)
0026 ; {
0026 .dbline 13
0026 ; int i;
0026 ; char a[5],key;
0026 ; for(i=0;i<5;i++)
0026 6627 clr R22
0028 7727 clr R23
002A L11:
002A .dbline 14
002A .dbline 15
002A EADF rcall _delay_1ms
002C .dbline 16
002C CE01 movw R24,R28
002E FB01 movw R30,R22
0030 E80F add R30,R24
0032 F91F adc R31,R25
0034 26B2 in R2,0x16
0036 2082 std z+0,R2
0038 .dbline 17
0038 L12:
0038 .dbline 13
0038 6F5F subi R22,255 ; offset = 1
003A 7F4F sbci R23,255
003C .dbline 13
003C 6530 cpi R22,5
003E E0E0 ldi R30,0
0040 7E07 cpc R23,R30
0042 9CF3 brlt L11
0044 .dbline 18
0044 ; {
0044 ; delay_1ms();
0044 ; a[i]=PINB;
0044 ; }
0044 ; if((a[0]==a[1])&&(a[1]==a[2])&&(a[2]==a[3])&&(a[3]==a[4]))
0044 2980 ldd R2,y+1
0046 3880 ldd R3,y+0
0048 3214 cp R3,R2
004A 71F4 brne L15
004C 2A80 ldd R2,y+2
004E 3980 ldd R3,y+1
0050 3214 cp R3,R2
0052 51F4 brne L15
0054 2B80 ldd R2,y+3
0056 3A80 ldd R3,y+2
0058 3214 cp R3,R2
005A 31F4 brne L15
005C 2C80 ldd R2,y+4
005E 3B80 ldd R3,y+3
0060 3214 cp R3,R2
0062 11F4 brne L15
0064 .dbline 19
0064 ; key=a[4];
0064 422D mov R20,R2
0066 01C0 rjmp L16
0068 L15:
0068 .dbline 21
0068 ; else
0068 ; key=0xFF;
0068 4FEF ldi R20,255
006A L16:
006A .dbline 22
006A ; return key;
006A 042F mov R16,R20
006C .dbline -2
006C L10:
006C 2596 adiw R28,5
006E 00D0 rcall pop_gset2
0070 .dbline 0 ; func end
0070 0895 ret
0072 .dbsym r key 20 c
0072 .dbsym l a 0 A[5:5]c
0072 .dbsym r i 22 I
0072 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -