📄 m64.lst
字号:
(0132)
(0133) MCUCR = 0x00;
1BC 2422 CLR R2
1BD BE25 OUT 0x35,R2
(0134) EICRA = 0x00; //extended ext ints
1BE 9220 006A STS 0x006A,R2
(0135) EICRB = 0x00; //extended ext ints
1C0 BE2A OUT 0x3A,R2
(0136) EIMSK = 0x00;
1C1 BE29 OUT 0x39,R2
(0137) TIMSK = 0x40; //timer interrupt sources
1C2 E480 LDI R24,0x40
1C3 BF87 OUT 0x37,R24
(0138) ETIMSK = 0x00; //extended timer interrupt sources
1C4 9220 007D STS 0x007D,R2
(0139) SEI(); //re-enable interrupts
1C6 9478 BSET 7
1C7 9508 RET
(0140) //all peripherals are now initialized
(0141) }
(0142) //UART1 initialize
(0143) // desired baud rate:9600
(0144) // actual baud rate:9615 (0.2%)
(0145) void uart1_init(void)
(0146) {
(0147) UCSR1B = 0x00; //disable while setting baud rate
_uart1_init:
1C8 2422 CLR R2
1C9 9220 009A STS 0x009A,R2
(0148) UCSR1A = 0x00;
1CB 9220 009B STS 0x009B,R2
(0149) UCSR1C = 0x06;
1CD E086 LDI R24,6
1CE 9380 009D STS 0x009D,R24
(0150) UBRR1L = 0x33; //set baud rate lo
1D0 E383 LDI R24,0x33
1D1 9380 0099 STS 0x0099,R24
(0151) UBRR1H = 0x00; //set baud rate hi
1D3 9220 0098 STS 0x0098,R2
(0152) UCSR1B = 0x98;
1D5 E988 LDI R24,0x98
1D6 9380 009A STS 0x009A,R24
1D8 9508 RET
_uart1_rx_isr:
1D9 920A ST R0,-Y
1DA 921A ST R1,-Y
1DB 922A ST R2,-Y
1DC 923A ST R3,-Y
1DD 924A ST R4,-Y
1DE 925A ST R5,-Y
1DF 930A ST R16,-Y
1E0 931A ST R17,-Y
1E1 932A ST R18,-Y
1E2 933A ST R19,-Y
1E3 938A ST R24,-Y
1E4 939A ST R25,-Y
1E5 93EA ST R30,-Y
1E6 93FA ST R31,-Y
1E7 B60F IN R0,0x3F
1E8 920A ST R0,-Y
(0153) }
(0154)
(0155) #pragma interrupt_handler uart1_rx_isr:31
(0156) //cir+00100
(0157) void uart1_rx_isr(void)
(0158) {
(0159) //uart has received a character in UDR
(0160) if (all==CIR)
1E9 9180 0116 LDS R24,all
1EB 3081 CPI R24,1
1EC F009 BEQ 0x01EE
1ED C0B9 RJMP 0x02A7
(0161) {
(0162) a=b;
1EE 9020 0118 LDS R2,b
1F0 9220 0117 STS a,R2
(0163) b=c;
1F2 9020 0119 LDS R2,c
1F4 9220 0118 STS b,R2
(0164) c=d;
1F6 9020 011A LDS R2,d
1F8 9220 0119 STS c,R2
(0165) d=e;
1FA 9020 011B LDS R2,e
1FC 9220 011A STS d,R2
(0166) e=f;
1FE 9020 011C LDS R2,f
200 9220 011B STS e,R2
(0167) f=UDR1;
202 9020 009C LDS R2,0x009C
204 9220 011C STS f,R2
(0168) if ((f<'0')||(f>'9'))return;
206 2D82 MOV R24,R2
207 3380 CPI R24,0x30
208 F018 BCS 0x020C
209 E389 LDI R24,0x39
20A 1582 CP R24,R2
20B F408 BCC 0x020D
20C C1AA RJMP 0x03B7
(0169) if (a=='+')//0x2b
20D 9180 0117 LDS R24,a
20F 328B CPI R24,0x2B
210 F009 BEQ 0x0212
211 C041 RJMP 0x0253
(0170) {jiaodu=(b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48);
212 9120 0119 LDS R18,c
214 2733 CLR R19
215 EE08 LDI R16,0xE8
216 E013 LDI R17,3
217 940E 076C CALL empy16s
219 01C8 MOVW R24,R16
21A 5880 SUBI R24,0x80
21B 4B9B SBCI R25,0xBB
21C 9120 0118 LDS R18,b
21E 2733 CLR R19
21F E100 LDI R16,0x10
220 E217 LDI R17,0x27
221 940E 076C CALL empy16s
223 01F8 MOVW R30,R16
224 50E0 SUBI R30,0
225 45F3 SBCI R31,0x53
226 0FE8 ADD R30,R24
227 1FF9 ADC R31,R25
228 9020 011A LDS R2,d
22A E684 LDI R24,0x64
22B 9D82 MUL R24,R2
22C 01C0 MOVW R24,R0
22D 5C80 SUBI R24,0xC0
22E 4192 SBCI R25,0x12
22F 0FE8 ADD R30,R24
230 1FF9 ADC R31,R25
231 9020 011B LDS R2,e
233 E08A LDI R24,0xA
234 9D82 MUL R24,R2
235 01C0 MOVW R24,R0
236 5E80 SUBI R24,0xE0
237 4091 SBCI R25,1
238 0FE8 ADD R30,R24
239 1FF9 ADC R31,R25
23A 9180 011C LDS R24,f
23C 2799 CLR R25
23D 97C0 SBIW R24,0x30
23E 0FE8 ADD R30,R24
23F 1FF9 ADC R31,R25
240 011F MOVW R2,R30
241 2444 CLR R4
242 FC37 SBRC R3,7
243 9440 COM R4
244 2455 CLR R5
245 FC47 SBRC R4,7
246 9450 COM R5
247 9230 011E STS jiaodu+1,R3
249 9220 011D STS jiaodu,R2
24B 9250 0120 STS jiaodu+3,R5
24D 9240 011F STS jiaodu+2,R4
(0171) all=0;return;}
24F 2422 CLR R2
250 9220 0116 STS all,R2
252 C164 RJMP 0x03B7
(0172) else if (a=='-')//0x2d
253 9180 0117 LDS R24,a
255 328D CPI R24,0x2D
256 F009 BEQ 0x0258
257 C046 RJMP 0x029E
(0173) {jiaodu=-((b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48));
258 9120 0119 LDS R18,c
25A 2733 CLR R19
25B EE08 LDI R16,0xE8
25C E013 LDI R17,3
25D 940E 076C CALL empy16s
25F 01C8 MOVW R24,R16
260 5880 SUBI R24,0x80
261 4B9B SBCI R25,0xBB
262 9120 0118 LDS R18,b
264 2733 CLR R19
265 E100 LDI R16,0x10
266 E217 LDI R17,0x27
267 940E 076C CALL empy16s
269 01F8 MOVW R30,R16
26A 50E0 SUBI R30,0
26B 45F3 SBCI R31,0x53
26C 0FE8 ADD R30,R24
26D 1FF9 ADC R31,R25
26E 9020 011A LDS R2,d
270 E684 LDI R24,0x64
271 9D82 MUL R24,R2
272 01C0 MOVW R24,R0
273 5C80 SUBI R24,0xC0
274 4192 SBCI R25,0x12
275 0FE8 ADD R30,R24
276 1FF9 ADC R31,R25
277 9020 011B LDS R2,e
279 E08A LDI R24,0xA
27A 9D82 MUL R24,R2
27B 01C0 MOVW R24,R0
27C 5E80 SUBI R24,0xE0
27D 4091 SBCI R25,1
27E 0FE8 ADD R30,R24
27F 1FF9 ADC R31,R25
280 9180 011C LDS R24,f
282 2799 CLR R25
283 97C0 SBIW R24,0x30
284 0FE8 ADD R30,R24
285 1FF9 ADC R31,R25
286 01CF MOVW R24,R30
287 9580 COM R24
288 9590 COM R25
289 5F8F SUBI R24,0xFF
28A 4F9F SBCI R25,0xFF
28B 011C MOVW R2,R24
28C 2444 CLR R4
28D FC37 SBRC R3,7
28E 9440 COM R4
28F 2455 CLR R5
290 FC47 SBRC R4,7
291 9450 COM R5
292 9230 011E STS jiaodu+1,R3
294 9220 011D STS jiaodu,R2
296 9250 0120 STS jiaodu+3,R5
298 9240 011F STS jiaodu+2,R4
(0174) all=0;return;}
29A 2422 CLR R2
29B 9220 0116 STS all,R2
29D C119 RJMP 0x03B7
(0175) if (a!=0) {all=0;return;}
29E 9020 0117 LDS R2,a
2A0 2022 TST R2
2A1 F409 BNE 0x02A3
2A2 C114 RJMP 0x03B7
2A3 2422 CLR R2
2A4 9220 0116 STS all,R2
2A6 C110 RJMP 0x03B7
(0176) //PORTF=jiaodu;//while(1);
(0177) }
(0178) else if (all==LINE)
2A7 9180 0116 LDS R24,all
2A9 3082 CPI R24,2
2AA F009 BEQ 0x02AC
2AB C0B9 RJMP 0x0365
(0179) {
(0180) a=b;
2AC 9020 0118 LDS R2,b
2AE 9220 0117 STS a,R2
(0181) b=c;
2B0 9020 0119 LDS R2,c
2B2 9220 0118 STS b,R2
(0182) c=d;
2B4 9020 011A LDS R2,d
2B6 9220 0119 STS c,R2
(0183) d=e;
2B8 9020 011B LDS R2,e
2BA 9220 011A STS d,R2
(0184) e=f;
2BC 9020 011C LDS R2,f
2BE 9220 011B STS e,R2
(0185) f=UDR1;
2C0 9020 009C LDS R2,0x009C
2C2 9220 011C STS f,R2
(0186) if ((f<'0')||(f>'9'))return;
2C4 2D82 MOV R24,R2
2C5 3380 CPI R24,0x30
2C6 F018 BCS 0x02CA
2C7 E389 LDI R24,0x39
2C8 1582 CP R24,R2
2C9 F408 BCC 0x02CB
2CA C0EC RJMP 0x03B7
(0187) if (a=='+')
2CB 9180 0117 LDS R24,a
2CD 328B CPI R24,0x2B
2CE F009 BEQ 0x02D0
2CF C041 RJMP 0x0311
(0188) {juli=(b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48);
2D0 9120 0119 LDS R18,c
2D2 2733 CLR R19
2D3 EE08 LDI R16,0xE8
2D4 E013 LDI R17,3
2D5 940E 076C CALL empy16s
2D7 01C8 MOVW R24,R16
2D8 5880 SUBI R24,0x80
2D9 4B9B SBCI R25,0xBB
2DA 9120 0118 LDS R18,b
2DC 2733 CLR R19
2DD E100 LDI R16,0x10
2DE E217 LDI R17,0x27
2DF 940E 076C CALL empy16s
2E1 01F8 MOVW R30,R16
2E2 50E0 SUBI R30,0
2E3 45F3 SBCI R31,0x53
2E4 0FE8 ADD R30,R24
2E5 1FF9 ADC R31,R25
2E6 9020 011A LDS R2,d
2E8 E684 LDI R24,0x64
2E9 9D82 MUL R24,R2
2EA 01C0 MOVW R24,R0
2EB 5C80 SUBI R24,0xC0
2EC 4192 SBCI R25,0x12
2ED 0FE8 ADD R30,R24
2EE 1FF9 ADC R31,R25
2EF 9020 011B LDS R2,e
2F1 E08A LDI R24,0xA
2F2 9D82 MUL R24,R2
2F3 01C0 MOVW R24,R0
2F4 5E80 SUBI R24,0xE0
2F5 4091 SBCI R25,1
2F6 0FE8 ADD R30,R24
2F7 1FF9 ADC R31,R25
2F8 9180 011C LDS R24,f
2FA 2799 CLR R25
2FB 97C0 SBIW R24,0x30
2FC 0FE8 ADD R30,R24
2FD 1FF9 ADC R31,R25
2FE 011F MOVW R2,R30
2FF 2444 CLR R4
300 FC37 SBRC R3,7
301 9440 COM R4
302 2455 CLR R5
303 FC47 SBRC R4,7
304 9450 COM R5
305 9230 0122 STS juli+1,R3
307 9220 0121 STS juli,R2
309 9250 0124 STS juli+3,R5
30B 9240 0123 STS juli+2,R4
(0189) all=0;return;}
30D 2422 CLR R2
30E 9220 0116 STS all,R2
310 C0A6 RJMP 0x03B7
(0190) else if (a=='-')
311 9180 0117 LDS R24,a
313 328D CPI R24,0x2D
314 F009 BEQ 0x0316
315 C046 RJMP 0x035C
(0191) {juli=-((b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48));
316 9120 0119 LDS R18,c
318 2733 CLR R19
319 EE08 LDI R16,0xE8
31A E013 LDI R17,3
31B 940E 076C CALL empy16s
31D 01C8 MOVW R24,R16
31E 5880 SUBI R24,0x80
31F 4B9B SBCI R25,0xBB
320 9120 0118 LDS R18,b
322 2733 CLR R19
323 E100 LDI R16,0x10
324 E217 LDI R17,0x27
325 940E 076C CALL empy16s
327 01F8 MOVW R30,R16
328 50E0 SUBI R30,0
329 45F3 SBCI R31,0x53
32A 0FE8 ADD R30,R24
32B 1FF9 ADC R31,R25
32C 9020 011A LDS R2,d
32E E684 LDI R24,0x64
32F 9D82 MUL R24,R2
330 01C0 MOVW R24,R0
331 5C80 SUBI R24,0xC0
332 4192 SBCI R25,0x12
333 0FE8 ADD R30,R24
334 1FF9 ADC R31,R25
335 9020 011B LDS R2,e
337 E08A LDI R24,0xA
338 9D82 MUL R24,R2
339 01C0 MOVW R24,R0
33A 5E80 SUBI R24,0xE0
33B 4091 SBCI R25,1
33C 0FE8 ADD R30,R24
33D 1FF9 ADC R31,R25
33E 9180 011C LDS R24,f
340 2799 CLR R25
341 97C0 SBIW R24,0x30
342 0FE8 ADD R30,R24
343 1FF9 ADC R31,R25
344 01CF MOVW R24,R30
345 9580 COM R24
346 9590 COM R25
347 5F8F SUBI R24,0xFF
348 4F9F SBCI R25,0xFF
349 011C MOVW R2,R24
34A 2444 CLR R4
34B FC37 SBRC R3,7
34C 9440 COM R4
34D 2455 CLR R5
34E FC47 SBRC R4,7
34F 9450 COM R5
350 9230 0122 STS juli+1,R3
352 9220 0121 STS juli,R2
354 9250 0124 STS juli+3,R5
356 9240 0123 STS juli+2,R4
(0192) all=0;return;}
358 2422 CLR R2
359 9220 0116 STS all,R2
35B C05B RJMP 0x03B7
(0193) if (a!=0) {all=0;return;}
35C 9020 0117 LDS R2,a
35E 2022 TST R2
35F F409 BNE 0x0361
360 C056 RJMP 0x03B7
361 2422 CLR R2
362 9220 0116 STS all,R2
364 C052 RJMP 0x03B7
(0194) //PORTF=a;
(0195) }
(0196) else if (all==0)//(johu!=3)&&(johu!=5) //5:7-bit 3:8-bit
365 9020 0116 LDS R2,all
367 2022 TST R2
368 F009 BEQ 0x036A
369 C04D RJMP 0x03B7
(0197) {
(0198) a=b;
36A 9020 0118 LDS R2,b
36C 9220 0117 STS a,R2
(0199) b=c;
36E 9020 0119 LDS R2,c
370 9220 0118 STS b,R2
(0200) c=d;
372 9020 011A LDS R2,d
374 9220 0119 STS c,R2
(0201) d=UDR1;
376 9020 009C LDS R2,0x009C
378 9220 011A STS d,R2
(0202) if ((a=='c')&&(b=='i')&&(c=='r'))
37A 9180 0117 LDS R24,a
37C 3683 CPI R24,0x63
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -