📄 main.lss
字号:
16e: 21 c0 rjmp .+66 ; 0x1b2
{
/*TempNum记录读到的键值,由于此键值需经进一步处理,
所以是暂时数值(TempNum)。Times用以记录没有读到有效键值的次数,
如果次数达到4次(即扫描一轮后没有发现有效键值),
就表示没有键按下。*/
case 0xE7:TempNum=0;Times=0;break;
170: 10 92 71 00 sts 0x0071, r1
174: 28 c0 rjmp .+80 ; 0x1c6
case 0xD7:TempNum=1;Times=0;break;
176: 81 e0 ldi r24, 0x01 ; 1
178: 24 c0 rjmp .+72 ; 0x1c2
case 0xB7:TempNum=2;Times=0;break;
17a: 82 e0 ldi r24, 0x02 ; 2
17c: 22 c0 rjmp .+68 ; 0x1c2
case 0x77:TempNum=3;Times=0;break;
17e: 83 e0 ldi r24, 0x03 ; 3
180: 20 c0 rjmp .+64 ; 0x1c2
case 0xEB:TempNum=4;Times=0;break;
182: 84 e0 ldi r24, 0x04 ; 4
184: 1e c0 rjmp .+60 ; 0x1c2
case 0xDB:TempNum=5;Times=0;break;
186: 85 e0 ldi r24, 0x05 ; 5
188: 1c c0 rjmp .+56 ; 0x1c2
case 0xBB:TempNum=6;Times=0;break;
18a: 86 e0 ldi r24, 0x06 ; 6
18c: 1a c0 rjmp .+52 ; 0x1c2
case 0x7B:TempNum=7;Times=0;break;
18e: 87 e0 ldi r24, 0x07 ; 7
190: 18 c0 rjmp .+48 ; 0x1c2
case 0xED:TempNum=8;Times=0;break;
192: 88 e0 ldi r24, 0x08 ; 8
194: 16 c0 rjmp .+44 ; 0x1c2
case 0xDD:TempNum=9;Times=0;break;
196: 89 e0 ldi r24, 0x09 ; 9
198: 14 c0 rjmp .+40 ; 0x1c2
case 0xBD:TempNum=10;Times=0;break;
19a: 8a e0 ldi r24, 0x0A ; 10
19c: 12 c0 rjmp .+36 ; 0x1c2
case 0x7D:TempNum=11;Times=0;break;
19e: 8b e0 ldi r24, 0x0B ; 11
1a0: 10 c0 rjmp .+32 ; 0x1c2
case 0xEE:TempNum=12;Times=0;break;
1a2: 8c e0 ldi r24, 0x0C ; 12
1a4: 0e c0 rjmp .+28 ; 0x1c2
case 0xDE:TempNum=13;Times=0;break;
1a6: 8d e0 ldi r24, 0x0D ; 13
1a8: 0c c0 rjmp .+24 ; 0x1c2
case 0xBE:TempNum=14;Times=0;break;
1aa: 8e e0 ldi r24, 0x0E ; 14
1ac: 0a c0 rjmp .+20 ; 0x1c2
case 0x7E:TempNum=15;Times=0;break;
1ae: 8f e0 ldi r24, 0x0F ; 15
1b0: 08 c0 rjmp .+16 ; 0x1c2
default:{
Times++;
1b2: 80 91 76 00 lds r24, 0x0076
1b6: 8f 5f subi r24, 0xFF ; 255
1b8: 80 93 76 00 sts 0x0076, r24
if (Times==4)
1bc: 84 30 cpi r24, 0x04 ; 4
1be: 29 f4 brne .+10 ; 0x1ca
{
TempNum=16;
1c0: 80 e1 ldi r24, 0x10 ; 16
1c2: 80 93 71 00 sts 0x0071, r24
Times=0;
1c6: 10 92 76 00 sts 0x0076, r1
}
}break;
}
LastNum=CurrentNum;
1ca: 80 91 73 00 lds r24, 0x0073
1ce: 80 93 72 00 sts 0x0072, r24
CurrentNum=TempNum;
1d2: 90 91 71 00 lds r25, 0x0071
1d6: 90 93 73 00 sts 0x0073, r25
if (CurrentNum==LastNum) return(16);
1da: 98 17 cp r25, r24
1dc: 19 f4 brne .+6 ; 0x1e4
1de: 80 e1 ldi r24, 0x10 ; 16
1e0: 90 e0 ldi r25, 0x00 ; 0
1e2: 08 95 ret
else return(CurrentNum);
1e4: 89 2f mov r24, r25
1e6: 99 27 eor r25, r25
} 1e8: 08 95 ret
1ea: 08 95 ret
000001ec <_Z12Initi_Devicev>:
61 0003 4F .byte 79
62 0004 66 .byte 102
63 0005 6D .byte 109
64 0006 7D .byte 125
65 0007 07 .byte 7
1ec: 8f ef ldi r24, 0xFF ; 255
1ee: 81 bb out 0x11, r24 ; 17
66 0008 7F .byte 127
1f0: 9e ef ldi r25, 0xFE ; 254
1f2: 92 bb out 0x12, r25 ; 18
67 0009 67 .byte 103
68 000a 77 .byte 119
1f4: 87 bb out 0x17, r24 ; 23
69 000b 7C .byte 124
1f6: 8f e3 ldi r24, 0x3F ; 63
1f8: 88 bb out 0x18, r24 ; 24
1fa: 08 95 ret
000001fc <__vector_9>:
70 000c 58 .byte 88
71 000d 5E .byte 94
72 000e 79 .byte 121
73 000f 71 .byte 113
76 _ZZ8KeyboardvE8ScanCode:
77 0010 F7 .byte -9
80 _ZZ8KeyboardvE7TempNum:
81 0011 10 .byte 16
84 _ZZ8KeyboardvE7LastNum:
1fc: 1f 92 push r1
1fe: 0f 92 push r0
200: 0f b6 in r0, 0x3f ; 63
202: 0f 92 push r0
204: 11 24 eor r1, r1
206: 2f 93 push r18
208: 3f 93 push r19
20a: 4f 93 push r20
20c: 5f 93 push r21
20e: 6f 93 push r22
210: 7f 93 push r23
212: 8f 93 push r24
214: 9f 93 push r25
216: af 93 push r26
218: bf 93 push r27
21a: ef 93 push r30
21c: ff 93 push r31
85 0012 10 .byte 16
21e: 82 eb ldi r24, 0xB2 ; 178
220: 82 bf out 0x32, r24 ; 50
88 _ZZ8KeyboardvE10CurrentNum:
222: 0e 94 47 00 call 0x8e
226: 80 93 74 00 sts 0x0074, r24
89 0013 10 .byte 16
22a: 80 31 cpi r24, 0x10 ; 16
22c: 30 f4 brcc .+12 ; 0x23a
90 .lcomm _ZZ8KeyboardvE5Times,1
22e: e8 2f mov r30, r24
230: ff 27 eor r31, r31
232: e0 5a subi r30, 0xA0 ; 160
234: ff 4f sbci r31, 0xFF ; 255
236: 80 81 ld r24, Z
238: 88 bb out 0x18, r24 ; 24
23a: ff 91 pop r31
23c: ef 91 pop r30
23e: bf 91 pop r27
240: af 91 pop r26
242: 9f 91 pop r25
244: 8f 91 pop r24
246: 7f 91 pop r23
248: 6f 91 pop r22
24a: 5f 91 pop r21
24c: 4f 91 pop r20
24e: 3f 91 pop r19
250: 2f 91 pop r18
252: 0f 90 pop r0
254: 0f be out 0x3f, r0 ; 63
256: 0f 90 pop r0
258: 1f 90 pop r1
25a: 18 95 reti
0000025c <main>:
91 .text
93 .global _Z8Keyboardv
95 _Z8Keyboardv:
97 .Ltext1:
1:E:/ROCKY的文档/文档/课件/数据采集技术/project/SY2/Key.h **** int Keyboard(void)
2:E:/ROCKY的文档/文档/课件/数据采集技术/project/SY2/Key.h **** {static uint8_t ScanCode=0xF7,TempNum=16,LastNum=16,CurrentNum=16,Times=0;
99 .LM1:
25c: cf e5 ldi r28, 0x5F ; 95
25e: d4 e0 ldi r29, 0x04 ; 4
260: de bf out 0x3e, r29 ; 62
262: cd bf out 0x3d, r28 ; 61
264: 0e 94 f6 00 call 0x1ec
100 /* prologue: frame size=0 */
101 /* prologue end (size=0) */
268: 8f e0 ldi r24, 0x0F ; 15
26a: 84 bb out 0x14, r24 ; 20
102 .LBB2:
26c: 8f ef ldi r24, 0xFF ; 255
26e: 85 bb out 0x15, r24 ; 21
103 .LBB3:
270: 81 bb out 0x11, r24 ; 17
3:E:/ROCKY的文档/文档/课件/数据采集技术/project/SY2/Key.h **** switch(ScanCode) // 扫描信号
272: 12 ba out 0x12, r1 ; 18
105 .LM2:
274: 87 bb out 0x17, r24 ; 23
106 0000 8091 0000 lds r24,_ZZ8KeyboardvE8ScanCode
276: 18 ba out 0x18, r1 ; 24
107 0004 9927 clr r25
278: 85 e0 ldi r24, 0x05 ; 5
27a: 83 bf out 0x33, r24 ; 51
108 0006 8B3F cpi r24,251
27c: 82 eb ldi r24, 0xB2 ; 178
27e: 82 bf out 0x32, r24 ; 50
109 0008 9105 cpc r25,__zero_reg__
280: 81 e0 ldi r24, 0x01 ; 1
282: 89 bf out 0x39, r24 ; 57
110 000a 69F0 breq .L4
284: 78 94 sei
112 .LM3:
286: ff cf rjmp .-2 ; 0x286
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -