📄 m.lst
字号:
1 .file "m.c"
2 .arch atmega16
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
51 .global ledcode
52 .data
55 ledcode:
56 0000 3F .byte 63
57 0001 06 .byte 6
58 0002 5B .byte 91
59 0003 4F .byte 79
60 0004 66 .byte 102
61 0005 6D .byte 109
62 0006 7D .byte 125
63 0007 07 .byte 7
64 0008 7F .byte 127
65 0009 67 .byte 103
66 000a 77 .byte 119
67 000b 7C .byte 124
68 000c 58 .byte 88
69 000d 5E .byte 94
70 000e 79 .byte 121
71 000f 71 .byte 113
74 scancode.1:
75 0010 F7 .byte -9
78 tempnum.2:
79 0011 10 .byte 16
82 lastnum.3:
83 0012 10 .byte 16
86 currentnum.4:
87 0013 10 .byte 16
88 .lcomm times.5,1
89 .text
91 .global keyboard
93 keyboard:
1:D:/liwei/two/m.c **** #define KEYPORT PORTC
2:D:/liwei/two/m.c **** #define KEYPIN PINC
3:D:/liwei/two/m.c **** //PB port as led data port
4:D:/liwei/two/m.c **** #define LED_DATA_DDR DDRB
5:D:/liwei/two/m.c **** #define LED_DATA_PORT PORTB
6:D:/liwei/two/m.c **** #define LED_DATA_PIN PINB
7:D:/liwei/two/m.c ****
8:D:/liwei/two/m.c **** //PD port as led select port
9:D:/liwei/two/m.c **** #define LED_ADD_DDR DDRD
10:D:/liwei/two/m.c **** #define LED_ADD_PORT PORTD
11:D:/liwei/two/m.c **** #define LED_ADD_PIN PIND
12:D:/liwei/two/m.c ****
13:D:/liwei/two/m.c **** #include <avr/io.h>
14:D:/liwei/two/m.c **** #include <inttypes.h>
15:D:/liwei/two/m.c **** #include <avr/signal.h>
16:D:/liwei/two/m.c **** #include <avr/interrupt.h>
17:D:/liwei/two/m.c ****
18:D:/liwei/two/m.c ****
19:D:/liwei/two/m.c ****
20:D:/liwei/two/m.c **** uint8_t keyboard(void)
21:D:/liwei/two/m.c **** {
95 .LM1:
96 /* prologue: frame size=0 */
97 /* prologue end (size=0) */
22:D:/liwei/two/m.c **** static uint8_t scancode=0xF7,tempnum=16,lastnum=16,currentnum=16,times=0;
23:D:/liwei/two/m.c **** switch(scancode)
99 .LM2:
100 0000 8091 0000 lds r24,scancode.1
101 0004 9927 clr r25
102 0006 8B3F cpi r24,251
103 0008 9105 cpc r25,__zero_reg__
104 000a 69F0 breq .L4
106 .LM3:
107 000c 8C3F cpi r24,252
108 000e 9105 cpc r25,__zero_reg__
109 0010 24F4 brge .L8
110 0012 873F cpi r24,247
111 0014 9105 cpc r25,__zero_reg__
112 0016 29F0 breq .L3
113 0018 0AC0 rjmp .L7
114 .L8:
115 001a 8D3F cpi r24,253
116 001c 9105 cpc r25,__zero_reg__
117 001e 29F0 breq .L5
118 0020 06C0 rjmp .L7
119 .L3:
24:D:/liwei/two/m.c **** {
25:D:/liwei/two/m.c **** case 0xF7:scancode=0xFB;break;
121 .LM4:
122 0022 8BEF ldi r24,lo8(-5)
123 0024 05C0 rjmp .L37
124 .L4:
26:D:/liwei/two/m.c **** case 0xFB:scancode=0xFD;break;
126 .LM5:
127 0026 8DEF ldi r24,lo8(-3)
128 0028 03C0 rjmp .L37
129 .L5:
27:D:/liwei/two/m.c **** case 0xFD:scancode=0xFE;break;
131 .LM6:
132 002a 8EEF ldi r24,lo8(-2)
133 002c 01C0 rjmp .L37
134 .L7:
28:D:/liwei/two/m.c **** case 0xFE:scancode=0xF7;break;
29:D:/liwei/two/m.c **** default:scancode=0xF7;break;
136 .LM7:
137 002e 87EF ldi r24,lo8(-9)
138 .L37:
139 0030 8093 0000 sts scancode.1,r24
30:D:/liwei/two/m.c **** }
31:D:/liwei/two/m.c **** KEYPORT=scancode;
141 .LM8:
142 0034 8091 0000 lds r24,scancode.1
143 0038 85BB out 53-0x20,r24
32:D:/liwei/two/m.c **** switch(KEYPIN)
145 .LM9:
146 003a 83B3 in r24,51-0x20
147 003c 9927 clr r25
148 003e 8E3B cpi r24,190
149 0040 9105 cpc r25,__zero_reg__
150 0042 09F4 brne .+2
151 0044 6BC0 rjmp .L24
152 0046 8F3B cpi r24,191
153 0048 9105 cpc r25,__zero_reg__
154 004a 34F5 brge .L28
155 004c 8E37 cpi r24,126
156 004e 9105 cpc r25,__zero_reg__
157 0050 09F4 brne .+2
158 0052 66C0 rjmp .L25
159 0054 8F37 cpi r24,127
160 0056 9105 cpc r25,__zero_reg__
161 0058 8CF4 brge .L29
162 005a 8B37 cpi r24,123
163 005c 9105 cpc r25,__zero_reg__
164 005e 09F4 brne .+2
165 0060 4FC0 rjmp .L17
166 0062 8C37 cpi r24,124
167 0064 9105 cpc r25,__zero_reg__
168 0066 2CF4 brge .L30
169 0068 8737 cpi r24,119
170 006a 9105 cpc r25,__zero_reg__
171 006c 09F4 brne .+2
172 006e 40C0 rjmp .L13
173 0070 59C0 rjmp .L26
174 .L30:
175 0072 8D37 cpi r24,125
176 0074 9105 cpc r25,__zero_reg__
177 0076 09F4 brne .+2
178 0078 4BC0 rjmp .L21
179 007a 54C0 rjmp .L26
180 .L29:
181 007c 8B3B cpi r24,187
182 007e 9105 cpc r25,__zero_reg__
183 0080 E9F1 breq .L16
184 0082 8C3B cpi r24,188
185 0084 9105 cpc r25,__zero_reg__
186 0086 24F4 brge .L31
187 0088 873B cpi r24,183
188 008a 9105 cpc r25,__zero_reg__
189 008c 79F1 breq .L12
190 008e 4AC0 rjmp .L26
191 .L31:
192 0090 8D3B cpi r24,189
193 0092 9105 cpc r25,__zero_reg__
194 0094 D9F1 breq .L20
195 0096 46C0 rjmp .L26
196 .L28:
197 0098 8E3D cpi r24,222
198 009a 9105 cpc r25,__zero_reg__
199 009c E9F1 breq .L23
200 009e 8F3D cpi r24,223
201 00a0 9105 cpc r25,__zero_reg__
202 00a2 74F4 brge .L32
203 00a4 8B3D cpi r24,219
204 00a6 9105 cpc r25,__zero_reg__
205 00a8 39F1 breq .L15
206 00aa 8C3D cpi r24,220
207 00ac 9105 cpc r25,__zero_reg__
208 00ae 24F4 brge .L33
209 00b0 873D cpi r24,215
210 00b2 9105 cpc r25,__zero_reg__
211 00b4 C9F0 breq .L11
212 00b6 36C0 rjmp .L26
213 .L33:
214 00b8 8D3D cpi r24,221
215 00ba 9105 cpc r25,__zero_reg__
216 00bc 29F1 breq .L19
217 00be 32C0 rjmp .L26
218 .L32:
219 00c0 8B3E cpi r24,235
220 00c2 9105 cpc r25,__zero_reg__
221 00c4 B9F0 breq .L14
222 00c6 8C3E cpi r24,236
223 00c8 9105 cpc r25,__zero_reg__
224 00ca 24F4 brge .L34
225 00cc 873E cpi r24,231
226 00ce 9105 cpc r25,__zero_reg__
227 00d0 41F0 breq .L10
228 00d2 28C0 rjmp .L26
229 .L34:
230 00d4 8D3E cpi r24,237
231 00d6 9105 cpc r25,__zero_reg__
232 00d8 A9F0 breq .L18
233 00da 8E3E cpi r24,238
234 00dc 9105 cpc r25,__zero_reg__
235 00de D1F0 breq .L22
236 00e0 21C0 rjmp .L26
237 .L10:
33:D:/liwei/two/m.c **** {
34:D:/liwei/two/m.c **** case 0xE7:tempnum=0;times=0;break;
239 .LM10:
240 00e2 1092 0000 sts tempnum.2,__zero_reg__
241 00e6 28C0 rjmp .L39
242 .L11:
35:D:/liwei/two/m.c **** case 0xD7:tempnum=1;times=0;break;
244 .LM11:
245 00e8 81E0 ldi r24,lo8(1)
246 00ea 24C0 rjmp .L38
247 .L12:
36:D:/liwei/two/m.c **** case 0xB7:tempnum=2;times=0;break;
249 .LM12:
250 00ec 82E0 ldi r24,lo8(2)
251 00ee 22C0 rjmp .L38
252 .L13:
37:D:/liwei/two/m.c **** case 0x77:tempnum=3;times=0;break;
254 .LM13:
255 00f0 83E0 ldi r24,lo8(3)
256 00f2 20C0 rjmp .L38
257 .L14:
38:D:/liwei/two/m.c **** case 0xEB:tempnum=4;times=0;break;
259 .LM14:
260 00f4 84E0 ldi r24,lo8(4)
261 00f6 1EC0 rjmp .L38
262 .L15:
39:D:/liwei/two/m.c **** case 0xDB:tempnum=5;times=0;break;
264 .LM15:
265 00f8 85E0 ldi r24,lo8(5)
266 00fa 1CC0 rjmp .L38
267 .L16:
40:D:/liwei/two/m.c **** case 0xBB:tempnum=6;times=0;break;
269 .LM16:
270 00fc 86E0 ldi r24,lo8(6)
271 00fe 1AC0 rjmp .L38
272 .L17:
41:D:/liwei/two/m.c **** case 0x7B:tempnum=7;times=0;break;
274 .LM17:
275 0100 87E0 ldi r24,lo8(7)
276 0102 18C0 rjmp .L38
277 .L18:
42:D:/liwei/two/m.c **** case 0xED:tempnum=8;times=0;break;
279 .LM18:
280 0104 88E0 ldi r24,lo8(8)
281 0106 16C0 rjmp .L38
282 .L19:
43:D:/liwei/two/m.c **** case 0xDD:tempnum=9;times=0;break;
284 .LM19:
285 0108 89E0 ldi r24,lo8(9)
286 010a 14C0 rjmp .L38
287 .L20:
44:D:/liwei/two/m.c **** case 0xBD:tempnum=10;times=0;break;
289 .LM20:
290 010c 8AE0 ldi r24,lo8(10)
291 010e 12C0 rjmp .L38
292 .L21:
45:D:/liwei/two/m.c **** case 0x7D:tempnum=11;times=0;break;
294 .LM21:
295 0110 8BE0 ldi r24,lo8(11)
296 0112 10C0 rjmp .L38
297 .L22:
46:D:/liwei/two/m.c **** case 0xEE:tempnum=12;times=0;break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -