📄 m64.lst
字号:
37D F4C9 BNE 0x0397
37E 9180 0118 LDS R24,b
380 3689 CPI R24,0x69
381 F4A9 BNE 0x0397
382 9180 0119 LDS R24,c
384 3782 CPI R24,0x72
385 F489 BNE 0x0397
(0203) {
(0204) all=CIR;
386 E081 LDI R24,1
387 9380 0116 STS all,R24
(0205) a=0;b=0;c=0;d=0;e=0;f=0;
389 2422 CLR R2
38A 9220 0117 STS a,R2
38C 9220 0118 STS b,R2
38E 9220 0119 STS c,R2
390 9220 011A STS d,R2
392 9220 011B STS e,R2
394 9220 011C STS f,R2
(0206) return; }//RXlen=4;{johu=3;RXlen=3;return;}
396 C020 RJMP 0x03B7
(0207) else if ((a=='l')&&(b=='i')&&(c=='n')&&(d=='e'))
397 9180 0117 LDS R24,a
399 368C CPI R24,0x6C
39A F4E1 BNE 0x03B7
39B 9180 0118 LDS R24,b
39D 3689 CPI R24,0x69
39E F4C1 BNE 0x03B7
39F 9180 0119 LDS R24,c
3A1 368E CPI R24,0x6E
3A2 F4A1 BNE 0x03B7
3A3 9180 011A LDS R24,d
3A5 3685 CPI R24,0x65
3A6 F481 BNE 0x03B7
(0208) {
(0209) all=LINE;
3A7 E082 LDI R24,2
3A8 9380 0116 STS all,R24
(0210) a=0;b=0;c=0;d=0;e=0;f=0;
3AA 2422 CLR R2
3AB 9220 0117 STS a,R2
3AD 9220 0118 STS b,R2
3AF 9220 0119 STS c,R2
3B1 9220 011A STS d,R2
3B3 9220 011B STS e,R2
3B5 9220 011C STS f,R2
(0211) return; }//RXlen=4;{johu=5;RXlen=3;return;}
(0212) ////////////////////////////////////////////////////////////////////
(0213) }
3B7 9009 LD R0,Y+
3B8 BE0F OUT 0x3F,R0
3B9 91F9 LD R31,Y+
3BA 91E9 LD R30,Y+
3BB 9199 LD R25,Y+
3BC 9189 LD R24,Y+
3BD 9139 LD R19,Y+
3BE 9129 LD R18,Y+
3BF 9119 LD R17,Y+
3C0 9109 LD R16,Y+
3C1 9059 LD R5,Y+
3C2 9049 LD R4,Y+
3C3 9039 LD R3,Y+
3C4 9029 LD R2,Y+
3C5 9019 LD R1,Y+
3C6 9009 LD R0,Y+
3C7 9518 RETI
_number_uart1:
n --> Y,+0
huanhang --> Y,+8
NUM --> Y,+4
3C8 940E 06FD CALL push_arg4
3CA 9724 SBIW R28,4
(0214) }
(0215)
(0216)
(0217)
(0218) /*void number(unsigned char X,unsigned char Y,unsigned char LEN,int NUM,unsigned char BLACK)
(0219) {
(0220) char code[]={'0','1','2','3','4','5','6','7','8','9',};
(0221) if (NUM<0)
(0222) {LCD_write_String1(X,Y,"-");NUM=-NUM;}
(0223) else
(0224) {LCD_write_String1(X,Y,"+");}
(0225) X=X+6;
(0226) while(LEN--)
(0227) {
(0228) LCD_write_String1(X+LEN*6,Y,& code[NUM%10]);
(0229) NUM=NUM/10;
(0230) }
(0231) }*/
(0232) void number_uart1(long NUM,char huanhang)
(0233) {long n=0;
3CB E080 LDI R24,0
3CC E090 LDI R25,0
3CD E0A0 LDI R26,0
3CE E0B0 LDI R27,0
3CF 8388 STD Y+0,R24
3D0 8399 STD Y+1,R25
3D1 83AA STD Y+2,R26
3D2 83BB STD Y+3,R27
(0234) if (NUM<0){n=-NUM; while(!(UCSR1A&(1<<UDRE1))); UDR1='-';}
3D3 E080 LDI R24,0
3D4 E090 LDI R25,0
3D5 E0A0 LDI R26,0
3D6 E0B0 LDI R27,0
3D7 802C LDD R2,Y+4
3D8 803D LDD R3,Y+5
3D9 804E LDD R4,Y+6
3DA 805F LDD R5,Y+7
3DB 1628 CP R2,R24
3DC 0639 CPC R3,R25
3DD 064A CPC R4,R26
3DE 065B CPC R5,R27
3DF F484 BGE 0x03F0
3E0 0181 MOVW R16,R2
3E1 0192 MOVW R18,R4
3E2 940E 078A CALL neg32
3E4 8308 STD Y+0,R16
3E5 8319 STD Y+1,R17
3E6 832A STD Y+2,R18
3E7 833B STD Y+3,R19
3E8 9020 009B LDS R2,0x009B
3EA FE25 SBRS R2,5
3EB CFFC RJMP 0x03E8
3EC E28D LDI R24,0x2D
3ED 9380 009C STS 0x009C,R24
3EF C00F RJMP 0x03FF
(0235) else {n=NUM;while(!(UCSR1A&(1<<UDRE1))); UDR1='+';}
3F0 802C LDD R2,Y+4
3F1 803D LDD R3,Y+5
3F2 804E LDD R4,Y+6
3F3 805F LDD R5,Y+7
3F4 8228 STD Y+0,R2
3F5 8239 STD Y+1,R3
3F6 824A STD Y+2,R4
3F7 825B STD Y+3,R5
3F8 9020 009B LDS R2,0x009B
3FA FE25 SBRS R2,5
3FB CFFC RJMP 0x03F8
3FC E28B LDI R24,0x2B
3FD 9380 009C STS 0x009C,R24
(0236) while(!(UCSR1A&(1<<UDRE1)));
3FF 9020 009B LDS R2,0x009B
401 FE25 SBRS R2,5
402 CFFC RJMP 0x03FF
(0237) UDR1=(n/10000)%10+48;
403 E180 LDI R24,0x10
404 E297 LDI R25,0x27
405 E0A0 LDI R26,0
406 E0B0 LDI R27,0
407 8108 LDD R16,Y+0
408 8119 LDD R17,Y+1
409 812A LDD R18,Y+2
40A 813B LDD R19,Y+3
40B 93BA ST R27,-Y
40C 93AA ST R26,-Y
40D 939A ST R25,-Y
40E 938A ST R24,-Y
40F 940E 0708 CALL div32s
411 E08A LDI R24,0xA
412 E090 LDI R25,0
413 E0A0 LDI R26,0
414 E0B0 LDI R27,0
415 93BA ST R27,-Y
416 93AA ST R26,-Y
417 939A ST R25,-Y
418 938A ST R24,-Y
419 940E 070A CALL mod32s
41B 0118 MOVW R2,R16
41C 0129 MOVW R4,R18
41D E380 LDI R24,0x30
41E E090 LDI R25,0
41F E0A0 LDI R26,0
420 E0B0 LDI R27,0
421 0E28 ADD R2,R24
422 1E39 ADC R3,R25
423 1E4A ADC R4,R26
424 1E5B ADC R5,R27
425 9220 009C STS 0x009C,R2
(0238) while(!(UCSR1A&(1<<UDRE1)));
427 9020 009B LDS R2,0x009B
429 FE25 SBRS R2,5
42A CFFC RJMP 0x0427
(0239) UDR1=(n/1000)%10+48;
42B EE88 LDI R24,0xE8
42C E093 LDI R25,3
42D E0A0 LDI R26,0
42E E0B0 LDI R27,0
42F 8108 LDD R16,Y+0
430 8119 LDD R17,Y+1
431 812A LDD R18,Y+2
432 813B LDD R19,Y+3
433 93BA ST R27,-Y
434 93AA ST R26,-Y
435 939A ST R25,-Y
436 938A ST R24,-Y
437 940E 0708 CALL div32s
439 E08A LDI R24,0xA
43A E090 LDI R25,0
43B E0A0 LDI R26,0
43C E0B0 LDI R27,0
43D 93BA ST R27,-Y
43E 93AA ST R26,-Y
43F 939A ST R25,-Y
440 938A ST R24,-Y
441 940E 070A CALL mod32s
443 0118 MOVW R2,R16
444 0129 MOVW R4,R18
445 E380 LDI R24,0x30
446 E090 LDI R25,0
447 E0A0 LDI R26,0
448 E0B0 LDI R27,0
449 0E28 ADD R2,R24
44A 1E39 ADC R3,R25
44B 1E4A ADC R4,R26
44C 1E5B ADC R5,R27
44D 9220 009C STS 0x009C,R2
(0240) while(!(UCSR1A&(1<<UDRE1)));
44F 9020 009B LDS R2,0x009B
451 FE25 SBRS R2,5
452 CFFC RJMP 0x044F
(0241) UDR1=(n/100)%10+48;
453 E684 LDI R24,0x64
454 E090 LDI R25,0
455 E0A0 LDI R26,0
456 E0B0 LDI R27,0
457 8108 LDD R16,Y+0
458 8119 LDD R17,Y+1
459 812A LDD R18,Y+2
45A 813B LDD R19,Y+3
45B 93BA ST R27,-Y
45C 93AA ST R26,-Y
45D 939A ST R25,-Y
45E 938A ST R24,-Y
45F 940E 0708 CALL div32s
461 E08A LDI R24,0xA
462 E090 LDI R25,0
463 E0A0 LDI R26,0
464 E0B0 LDI R27,0
465 93BA ST R27,-Y
466 93AA ST R26,-Y
467 939A ST R25,-Y
468 938A ST R24,-Y
469 940E 070A CALL mod32s
46B 0118 MOVW R2,R16
46C 0129 MOVW R4,R18
46D E380 LDI R24,0x30
46E E090 LDI R25,0
46F E0A0 LDI R26,0
470 E0B0 LDI R27,0
471 0E28 ADD R2,R24
472 1E39 ADC R3,R25
473 1E4A ADC R4,R26
474 1E5B ADC R5,R27
475 9220 009C STS 0x009C,R2
(0242) while(!(UCSR1A&(1<<UDRE1)));
477 9020 009B LDS R2,0x009B
479 FE25 SBRS R2,5
47A CFFC RJMP 0x0477
(0243) UDR1=(n/10)%10+48;
47B E08A LDI R24,0xA
47C E090 LDI R25,0
47D E0A0 LDI R26,0
47E E0B0 LDI R27,0
47F 8108 LDD R16,Y+0
480 8119 LDD R17,Y+1
481 812A LDD R18,Y+2
482 813B LDD R19,Y+3
483 93BA ST R27,-Y
484 93AA ST R26,-Y
485 939A ST R25,-Y
486 938A ST R24,-Y
487 940E 0708 CALL div32s
489 E08A LDI R24,0xA
48A E090 LDI R25,0
48B E0A0 LDI R26,0
48C E0B0 LDI R27,0
48D 93BA ST R27,-Y
48E 93AA ST R26,-Y
48F 939A ST R25,-Y
490 938A ST R24,-Y
491 940E 070A CALL mod32s
493 0118 MOVW R2,R16
494 0129 MOVW R4,R18
495 E380 LDI R24,0x30
496 E090 LDI R25,0
497 E0A0 LDI R26,0
498 E0B0 LDI R27,0
499 0E28 ADD R2,R24
49A 1E39 ADC R3,R25
49B 1E4A ADC R4,R26
49C 1E5B ADC R5,R27
49D 9220 009C STS 0x009C,R2
(0244) while(!(UCSR1A&(1<<UDRE1)));
49F 9020 009B LDS R2,0x009B
4A1 FE25 SBRS R2,5
4A2 CFFC RJMP 0x049F
(0245) UDR1=n%10+48;
4A3 E08A LDI R24,0xA
4A4 E090 LDI R25,0
4A5 E0A0 LDI R26,0
4A6 E0B0 LDI R27,0
4A7 8108 LDD R16,Y+0
4A8 8119 LDD R17,Y+1
4A9 812A LDD R18,Y+2
4AA 813B LDD R19,Y+3
4AB 93BA ST R27,-Y
4AC 93AA ST R26,-Y
4AD 939A ST R25,-Y
4AE 938A ST R24,-Y
4AF 940E 070A CALL mod32s
4B1 0118 MOVW R2,R16
4B2 0129 MOVW R4,R18
4B3 E380 LDI R24,0x30
4B4 E090 LDI R25,0
4B5 E0A0 LDI R26,0
4B6 E0B0 LDI R27,0
4B7 0E28 ADD R2,R24
4B8 1E39 ADC R3,R25
4B9 1E4A ADC R4,R26
4BA 1E5B ADC R5,R27
4BB 9220 009C STS 0x009C,R2
(0246) if (huanhang)
4BD 8408 LDD R0,Y+8
4BE 2000 TST R0
4BF F079 BEQ 0x04CF
(0247) {
(0248) while(!(UCSR1A&(1<<UDRE1)));
4C0 9020 009B LDS R2,0x009B
4C2 FE25 SBRS R2,5
4C3 CFFC RJMP 0x04C0
(0249) UDR1=0x0d;
4C4 E08D LDI R24,0xD
4C5 9380 009C STS 0x009C,R24
(0250) while(!(UCSR1A&(1<<UDRE1)));
4C7 9020 009B LDS R2,0x009B
4C9 FE25 SBRS R2,5
4CA CFFC RJMP 0x04C7
(0251) UDR1=0x0a;
4CB E08A LDI R24,0xA
4CC 9380 009C STS 0x009C,R24
(0252) }
4CE C00E RJMP 0x04DD
(0253) else
(0254) {
(0255) while(!(UCSR1A&(1<<UDRE1)));
4CF 9020 009B LDS R2,0x009B
4D1 FE25 SBRS R2,5
4D2 CFFC RJMP 0x04CF
(0256) UDR1=0x20;
4D3 E280 LDI R24,0x20
4D4 9380 009C STS 0x009C,R24
(0257) while(!(UCSR1A&(1<<UDRE1)));
4D6 9020 009B LDS R2,0x009B
4D8 FE25 SBRS R2,5
4D9 CFFC RJMP 0x04D6
(0258) UDR1=0x20;
4DA E280 LDI R24,0x20
4DB 9380 009C STS 0x009C,R24
(0259) }
4DD 9628 ADIW R28,0x8
4DE 9508 RET
(0260) }
(0261)
(0262)
(0263)
(0264) //TIMER0 initialize - prescale:64
(0265) // WGM: PWM Fast
(0266) // desired value: 1KHz
(0267) // actual value: 0.488KHz (-104.8%)
(0268) void timer0_init(void)
(0269) {
(0270) TCCR0 = 0x00; //stop
_timer0_init:
4DF 2422 CLR R2
4E0 BE23 OUT 0x33,R2
(0271) ASSR = 0x00; //set async mode
4E1 BE20 OUT 0x30,R2
(0272) TCNT0 = 0x01; //set count
4E2 E081 LDI R24,1
4E3 BF82 OUT 0x32,R24
(0273) OCR0 = 0x0f;
4E4 E08F LDI R24,0xF
4E5 BF81 OUT 0x31,R24
(0274) TCCR0 = 0x6C; //start timer
4E6 E68C LDI R24,0x6C
4E7 BF83 OUT 0x33,R24
4E8 9508 RET
(0275) }
(0276)
(0277) //TIMER1 initialize - prescale:64
(0278) // WGM: 5) PWM 8bit fast, TOP=0x00FF
(0279) // desired value: 1KHz
(0280) // actual value: 0.488KHz (104.8%)
(0281) /*void timer1_init(void)
(0282) {
(0283) TCCR1B = 0x00; //stop
(0284) TCNT1H = 0xFF; //setup
(0285) TCNT1L = 0x01;
(0286) OCR1AH = 0x00;
(0287) OCR1AL = 0x0f;
(0288) OCR1BH = 0x00;
(0289) OCR1BL = 0x0f;
(0290) OCR1CH = 0x00;
(0291) OCR1CL = 0x0f;
(0292) ICR1H = 0x00;
(0293) ICR1L = 0xFF;
(0294) TCCR1A = 0xA9;
(0295) TCCR1B = 0x0B; //start Timer
(0296) }*/
(0297) //TIMER1 initialize - prescale:8
(0298) // WGM: 9) PWM phz freq correct, TOP=OCRnA
(0299) // desired value: 40mSec
(0300) // actual value: 40.000mSec (0.0%)
(0301) /*void timer1_init(void)
(0302) {
(0303) TCCR1B = 0x00; //stop
(0304) TCNT1H = 0xB1; //setup
(0305) TCNT1L = 0xE0;
(0306) OCR1AH = 0x4E;
(0307) OCR1AL = 0x20;
(0308) OCR1BH = 0x4E;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -