📄 m64.lst
字号:
1B8 BE2C OUT 0x3C,R2
(0131) XMCRA = 0x00; //external memory
1B9 9220 006D STS 0x006D,R2
(0132) port_init();
1BB DEC4 RCALL _port_init
(0133) timer2_init();
1BC DED7 RCALL _timer2_init
(0134)
(0135) adc_init();uart1_init();
1BD DFE6 RCALL _adc_init
1BE D00C RCALL _uart1_init
(0136)
(0137) MCUCR = 0x00;
1BF 2422 CLR R2
1C0 BE25 OUT 0x35,R2
(0138) EICRA = 0x00; //extended ext ints
1C1 9220 006A STS 0x006A,R2
(0139) EICRB = 0x00; //extended ext ints
1C3 BE2A OUT 0x3A,R2
(0140) EIMSK = 0x00;
1C4 BE29 OUT 0x39,R2
(0141) TIMSK = 0x20; //timer interrupt sources
1C5 E280 LDI R24,0x20
1C6 BF87 OUT 0x37,R24
(0142) ETIMSK = 0x00; //extended timer interrupt sources
1C7 9220 007D STS 0x007D,R2
(0143) SEI(); //re-enable interrupts
1C9 9478 BSET 7
1CA 9508 RET
(0144) //all peripherals are now initialized
(0145) }
(0146)
(0147) //UART1 initialize
(0148) // desired baud rate:19200
(0149) // actual baud rate:19200 (0.0%)
(0150) // char size: 8 bit
(0151) // parity: Disabled
(0152) void uart1_init(void)
(0153) {
(0154) UCSR1B = 0x00; //disable while setting baud rate
_uart1_init:
1CB 2422 CLR R2
1CC 9220 009A STS 0x009A,R2
(0155) UCSR1A = 0x00;
1CE 9220 009B STS 0x009B,R2
(0156) UCSR1C = 0x06;
1D0 E086 LDI R24,6
1D1 9380 009D STS 0x009D,R24
(0157) UBRR1L = 0x23; //set baud rate lo
1D3 E283 LDI R24,0x23
1D4 9380 0099 STS 0x0099,R24
(0158) UBRR1H = 0x00; //set baud rate hi
1D6 9220 0098 STS 0x0098,R2
(0159) UCSR1B = 0x98;
1D8 E988 LDI R24,0x98
1D9 9380 009A STS 0x009A,R24
1DB 9508 RET
_uart1_rx_isr:
1DC 920A ST R0,-Y
1DD 921A ST R1,-Y
1DE 922A ST R2,-Y
1DF 923A ST R3,-Y
1E0 924A ST R4,-Y
1E1 925A ST R5,-Y
1E2 930A ST R16,-Y
1E3 931A ST R17,-Y
1E4 932A ST R18,-Y
1E5 933A ST R19,-Y
1E6 938A ST R24,-Y
1E7 939A ST R25,-Y
1E8 93EA ST R30,-Y
1E9 93FA ST R31,-Y
1EA B60F IN R0,0x3F
1EB 920A ST R0,-Y
(0160) }
(0161)
(0162) #pragma interrupt_handler uart1_rx_isr:31
(0163) //cir+00100
(0164) void uart1_rx_isr(void)
(0165) {
(0166) //uart has received a character in UDR
(0167) if (all==CIR)
1EC 9180 0116 LDS R24,all
1EE 3081 CPI R24,1
1EF F009 BEQ 0x01F1
1F0 C0B9 RJMP 0x02AA
(0168) {
(0169) a=b;
1F1 9020 0118 LDS R2,b
1F3 9220 0117 STS a,R2
(0170) b=c;
1F5 9020 0119 LDS R2,c
1F7 9220 0118 STS b,R2
(0171) c=d;
1F9 9020 011A LDS R2,d
1FB 9220 0119 STS c,R2
(0172) d=e;
1FD 9020 011B LDS R2,e
1FF 9220 011A STS d,R2
(0173) e=f;
201 9020 011C LDS R2,f
203 9220 011B STS e,R2
(0174) f=UDR1;
205 9020 009C LDS R2,0x009C
207 9220 011C STS f,R2
(0175) if ((f<'0')||(f>'9'))return;
209 2D82 MOV R24,R2
20A 3380 CPI R24,0x30
20B F018 BCS 0x020F
20C E389 LDI R24,0x39
20D 1582 CP R24,R2
20E F408 BCC 0x0210
20F C1AA RJMP 0x03BA
(0176) if (a=='+')//0x2b
210 9180 0117 LDS R24,a
212 328B CPI R24,0x2B
213 F009 BEQ 0x0215
214 C041 RJMP 0x0256
(0177) {jiaodu=(b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48);
215 9120 0119 LDS R18,c
217 2733 CLR R19
218 EE08 LDI R16,0xE8
219 E013 LDI R17,3
21A 940E 07DB CALL empy16s
21C 01C8 MOVW R24,R16
21D 5880 SUBI R24,0x80
21E 4B9B SBCI R25,0xBB
21F 9120 0118 LDS R18,b
221 2733 CLR R19
222 E100 LDI R16,0x10
223 E217 LDI R17,0x27
224 940E 07DB CALL empy16s
226 01F8 MOVW R30,R16
227 50E0 SUBI R30,0
228 45F3 SBCI R31,0x53
229 0FE8 ADD R30,R24
22A 1FF9 ADC R31,R25
22B 9020 011A LDS R2,d
22D E684 LDI R24,0x64
22E 9D82 MUL R24,R2
22F 01C0 MOVW R24,R0
230 5C80 SUBI R24,0xC0
231 4192 SBCI R25,0x12
232 0FE8 ADD R30,R24
233 1FF9 ADC R31,R25
234 9020 011B LDS R2,e
236 E08A LDI R24,0xA
237 9D82 MUL R24,R2
238 01C0 MOVW R24,R0
239 5E80 SUBI R24,0xE0
23A 4091 SBCI R25,1
23B 0FE8 ADD R30,R24
23C 1FF9 ADC R31,R25
23D 9180 011C LDS R24,f
23F 2799 CLR R25
240 97C0 SBIW R24,0x30
241 0FE8 ADD R30,R24
242 1FF9 ADC R31,R25
243 011F MOVW R2,R30
244 2444 CLR R4
245 FC37 SBRC R3,7
246 9440 COM R4
247 2455 CLR R5
248 FC47 SBRC R4,7
249 9450 COM R5
24A 9230 011E STS jiaodu+1,R3
24C 9220 011D STS jiaodu,R2
24E 9250 0120 STS jiaodu+3,R5
250 9240 011F STS jiaodu+2,R4
(0178) all=0;return;}
252 2422 CLR R2
253 9220 0116 STS all,R2
255 C164 RJMP 0x03BA
(0179) else if (a=='-')//0x2d
256 9180 0117 LDS R24,a
258 328D CPI R24,0x2D
259 F009 BEQ 0x025B
25A C046 RJMP 0x02A1
(0180) {jiaodu=-((b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48));
25B 9120 0119 LDS R18,c
25D 2733 CLR R19
25E EE08 LDI R16,0xE8
25F E013 LDI R17,3
260 940E 07DB CALL empy16s
262 01C8 MOVW R24,R16
263 5880 SUBI R24,0x80
264 4B9B SBCI R25,0xBB
265 9120 0118 LDS R18,b
267 2733 CLR R19
268 E100 LDI R16,0x10
269 E217 LDI R17,0x27
26A 940E 07DB CALL empy16s
26C 01F8 MOVW R30,R16
26D 50E0 SUBI R30,0
26E 45F3 SBCI R31,0x53
26F 0FE8 ADD R30,R24
270 1FF9 ADC R31,R25
271 9020 011A LDS R2,d
273 E684 LDI R24,0x64
274 9D82 MUL R24,R2
275 01C0 MOVW R24,R0
276 5C80 SUBI R24,0xC0
277 4192 SBCI R25,0x12
278 0FE8 ADD R30,R24
279 1FF9 ADC R31,R25
27A 9020 011B LDS R2,e
27C E08A LDI R24,0xA
27D 9D82 MUL R24,R2
27E 01C0 MOVW R24,R0
27F 5E80 SUBI R24,0xE0
280 4091 SBCI R25,1
281 0FE8 ADD R30,R24
282 1FF9 ADC R31,R25
283 9180 011C LDS R24,f
285 2799 CLR R25
286 97C0 SBIW R24,0x30
287 0FE8 ADD R30,R24
288 1FF9 ADC R31,R25
289 01CF MOVW R24,R30
28A 9580 COM R24
28B 9590 COM R25
28C 5F8F SUBI R24,0xFF
28D 4F9F SBCI R25,0xFF
28E 011C MOVW R2,R24
28F 2444 CLR R4
290 FC37 SBRC R3,7
291 9440 COM R4
292 2455 CLR R5
293 FC47 SBRC R4,7
294 9450 COM R5
295 9230 011E STS jiaodu+1,R3
297 9220 011D STS jiaodu,R2
299 9250 0120 STS jiaodu+3,R5
29B 9240 011F STS jiaodu+2,R4
(0181) all=0;return;}
29D 2422 CLR R2
29E 9220 0116 STS all,R2
2A0 C119 RJMP 0x03BA
(0182) if (a!=0) {all=0;return;}
2A1 9020 0117 LDS R2,a
2A3 2022 TST R2
2A4 F409 BNE 0x02A6
2A5 C114 RJMP 0x03BA
2A6 2422 CLR R2
2A7 9220 0116 STS all,R2
2A9 C110 RJMP 0x03BA
(0183) //PORTF=jiaodu;//while(1);
(0184) }
(0185) else if (all==LINE)
2AA 9180 0116 LDS R24,all
2AC 3082 CPI R24,2
2AD F009 BEQ 0x02AF
2AE C0B9 RJMP 0x0368
(0186) {
(0187) a=b;
2AF 9020 0118 LDS R2,b
2B1 9220 0117 STS a,R2
(0188) b=c;
2B3 9020 0119 LDS R2,c
2B5 9220 0118 STS b,R2
(0189) c=d;
2B7 9020 011A LDS R2,d
2B9 9220 0119 STS c,R2
(0190) d=e;
2BB 9020 011B LDS R2,e
2BD 9220 011A STS d,R2
(0191) e=f;
2BF 9020 011C LDS R2,f
2C1 9220 011B STS e,R2
(0192) f=UDR1;
2C3 9020 009C LDS R2,0x009C
2C5 9220 011C STS f,R2
(0193) if ((f<'0')||(f>'9'))return;
2C7 2D82 MOV R24,R2
2C8 3380 CPI R24,0x30
2C9 F018 BCS 0x02CD
2CA E389 LDI R24,0x39
2CB 1582 CP R24,R2
2CC F408 BCC 0x02CE
2CD C0EC RJMP 0x03BA
(0194) if (a=='+')
2CE 9180 0117 LDS R24,a
2D0 328B CPI R24,0x2B
2D1 F009 BEQ 0x02D3
2D2 C041 RJMP 0x0314
(0195) {juli=(b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48);
2D3 9120 0119 LDS R18,c
2D5 2733 CLR R19
2D6 EE08 LDI R16,0xE8
2D7 E013 LDI R17,3
2D8 940E 07DB CALL empy16s
2DA 01C8 MOVW R24,R16
2DB 5880 SUBI R24,0x80
2DC 4B9B SBCI R25,0xBB
2DD 9120 0118 LDS R18,b
2DF 2733 CLR R19
2E0 E100 LDI R16,0x10
2E1 E217 LDI R17,0x27
2E2 940E 07DB CALL empy16s
2E4 01F8 MOVW R30,R16
2E5 50E0 SUBI R30,0
2E6 45F3 SBCI R31,0x53
2E7 0FE8 ADD R30,R24
2E8 1FF9 ADC R31,R25
2E9 9020 011A LDS R2,d
2EB E684 LDI R24,0x64
2EC 9D82 MUL R24,R2
2ED 01C0 MOVW R24,R0
2EE 5C80 SUBI R24,0xC0
2EF 4192 SBCI R25,0x12
2F0 0FE8 ADD R30,R24
2F1 1FF9 ADC R31,R25
2F2 9020 011B LDS R2,e
2F4 E08A LDI R24,0xA
2F5 9D82 MUL R24,R2
2F6 01C0 MOVW R24,R0
2F7 5E80 SUBI R24,0xE0
2F8 4091 SBCI R25,1
2F9 0FE8 ADD R30,R24
2FA 1FF9 ADC R31,R25
2FB 9180 011C LDS R24,f
2FD 2799 CLR R25
2FE 97C0 SBIW R24,0x30
2FF 0FE8 ADD R30,R24
300 1FF9 ADC R31,R25
301 011F MOVW R2,R30
302 2444 CLR R4
303 FC37 SBRC R3,7
304 9440 COM R4
305 2455 CLR R5
306 FC47 SBRC R4,7
307 9450 COM R5
308 9230 0122 STS juli+1,R3
30A 9220 0121 STS juli,R2
30C 9250 0124 STS juli+3,R5
30E 9240 0123 STS juli+2,R4
(0196) all=0;return;}
310 2422 CLR R2
311 9220 0116 STS all,R2
313 C0A6 RJMP 0x03BA
(0197) else if (a=='-')
314 9180 0117 LDS R24,a
316 328D CPI R24,0x2D
317 F009 BEQ 0x0319
318 C046 RJMP 0x035F
(0198) {juli=-((b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48));
319 9120 0119 LDS R18,c
31B 2733 CLR R19
31C EE08 LDI R16,0xE8
31D E013 LDI R17,3
31E 940E 07DB CALL empy16s
320 01C8 MOVW R24,R16
321 5880 SUBI R24,0x80
322 4B9B SBCI R25,0xBB
323 9120 0118 LDS R18,b
325 2733 CLR R19
326 E100 LDI R16,0x10
327 E217 LDI R17,0x27
328 940E 07DB CALL empy16s
32A 01F8 MOVW R30,R16
32B 50E0 SUBI R30,0
32C 45F3 SBCI R31,0x53
32D 0FE8 ADD R30,R24
32E 1FF9 ADC R31,R25
32F 9020 011A LDS R2,d
331 E684 LDI R24,0x64
332 9D82 MUL R24,R2
333 01C0 MOVW R24,R0
334 5C80 SUBI R24,0xC0
335 4192 SBCI R25,0x12
336 0FE8 ADD R30,R24
337 1FF9 ADC R31,R25
338 9020 011B LDS R2,e
33A E08A LDI R24,0xA
33B 9D82 MUL R24,R2
33C 01C0 MOVW R24,R0
33D 5E80 SUBI R24,0xE0
33E 4091 SBCI R25,1
33F 0FE8 ADD R30,R24
340 1FF9 ADC R31,R25
341 9180 011C LDS R24,f
343 2799 CLR R25
344 97C0 SBIW R24,0x30
345 0FE8 ADD R30,R24
346 1FF9 ADC R31,R25
347 01CF MOVW R24,R30
348 9580 COM R24
349 9590 COM R25
34A 5F8F SUBI R24,0xFF
34B 4F9F SBCI R25,0xFF
34C 011C MOVW R2,R24
34D 2444 CLR R4
34E FC37 SBRC R3,7
34F 9440 COM R4
350 2455 CLR R5
351 FC47 SBRC R4,7
352 9450 COM R5
353 9230 0122 STS juli+1,R3
355 9220 0121 STS juli,R2
357 9250 0124 STS juli+3,R5
359 9240 0123 STS juli+2,R4
(0199) all=0;return;}
35B 2422 CLR R2
35C 9220 0116 STS all,R2
35E C05B RJMP 0x03BA
(0200) if (a!=0) {all=0;return;}
35F 9020 0117 LDS R2,a
361 2022 TST R2
362 F409 BNE 0x0364
363 C056 RJMP 0x03BA
364 2422 CLR R2
365 9220 0116 STS all,R2
367 C052 RJMP 0x03BA
(0201) //PORTF=a;
(0202) }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -