📄 main.lst
字号:
0642 EB00 LDI R16,0xB0
0643 E010 LDI R17,0
0644 940E090A CALL lpm32
0646 933A ST R19,-Y
0647 932A ST R18,-Y
0648 931A ST R17,-Y
0649 930A ST R16,-Y
064A 940E09A1 CALL sub32f
064C 940E0924 CALL fp2int
064E 01C8 MOVW R24,R16
064F 5080 SUBI R24,0
0650 4890 SBCI R25,0x80
0651 015C MOVW R10,R24
0652 C008 RJMP 0x065B
0653 01FE MOVW R30,R28
0654 8100 LDD R16,Z+0
0655 8111 LDD R17,Z+1
0656 8122 LDD R18,Z+2
0657 8133 LDD R19,Z+3
0658 940E0924 CALL fp2int
065A 0158 MOVW R10,R16
065B 01B5 MOVW R22,R10
(0241) temp=temp2%10;// 123.4/10%10=2
065C E02A LDI R18,0xA
065D E030 LDI R19,0
065E 018B MOVW R16,R22
065F 940E08C0 CALL mod16u
0661 2F40 MOV R20,R16
(0242) display_one(6,temp);
0662 2F24 MOV R18,R20
0663 E006 LDI R16,6
0664 DA8D RCALL _display_one
(0243) delay_ms(6);
0665 E006 LDI R16,6
0666 E010 LDI R17,0
0667 DA71 RCALL _delay_ms
(0244) led_contrl_port |= (1<<6);
0668 9A96 SBI 0x12,6
(0245)
(0246) temp2=data;
0669 01FE MOVW R30,R28
066A 8826 LDD R2,Z+22
066B 8837 LDD R3,Z+23
066C 8C40 LDD R4,Z+24
066D 8C51 LDD R5,Z+25
066E 925A ST R5,-Y
066F 924A ST R4,-Y
0670 923A ST R3,-Y
0671 922A ST R2,-Y
0672 EB00 LDI R16,0xB0
0673 E010 LDI R17,0
0674 940E090A CALL lpm32
0676 933A ST R19,-Y
0677 932A ST R18,-Y
0678 931A ST R17,-Y
0679 930A ST R16,-Y
067A 940E0A54 CALL cmp32f
067C F0D4 BLT 0x0697
067D 01FE MOVW R30,R28
067E 8826 LDD R2,Z+22
067F 8837 LDD R3,Z+23
0680 8C40 LDD R4,Z+24
0681 8C51 LDD R5,Z+25
0682 925A ST R5,-Y
0683 924A ST R4,-Y
0684 923A ST R3,-Y
0685 922A ST R2,-Y
0686 EB00 LDI R16,0xB0
0687 E010 LDI R17,0
0688 940E090A CALL lpm32
068A 933A ST R19,-Y
068B 932A ST R18,-Y
068C 931A ST R17,-Y
068D 930A ST R16,-Y
068E 940E09A1 CALL sub32f
0690 940E0924 CALL fp2int
0692 01C8 MOVW R24,R16
0693 5080 SUBI R24,0
0694 4890 SBCI R25,0x80
0695 015C MOVW R10,R24
0696 C008 RJMP 0x069F
0697 01FE MOVW R30,R28
0698 8906 LDD R16,Z+22
0699 8917 LDD R17,Z+23
069A 8D20 LDD R18,Z+24
069B 8D31 LDD R19,Z+25
069C 940E0924 CALL fp2int
069E 0158 MOVW R10,R16
069F 01B5 MOVW R22,R10
(0247) temp=(temp2%10);// 123.4%10=3
06A0 E02A LDI R18,0xA
06A1 E030 LDI R19,0
06A2 018B MOVW R16,R22
06A3 940E08C0 CALL mod16u
06A5 2F40 MOV R20,R16
(0248) display_one(5,temp);
06A6 2F24 MOV R18,R20
06A7 E005 LDI R16,5
06A8 DA49 RCALL _display_one
(0249) led_port &= 0x7F; //点亮对应小数点
06A9 B38B IN R24,0x1B
06AA 778F ANDI R24,0x7F
06AB BB8B OUT 0x1B,R24
(0250) delay_ms(6);
06AC E006 LDI R16,6
06AD E010 LDI R17,0
06AE DA2A RCALL _delay_ms
(0251) led_contrl_port |= (1<<5);
06AF 9A95 SBI 0x12,5
(0252)
(0253) temp2=(data*10);
06B0 EB04 LDI R16,0xB4
06B1 E010 LDI R17,0
06B2 940E090A CALL lpm32
06B4 933A ST R19,-Y
06B5 932A ST R18,-Y
06B6 931A ST R17,-Y
06B7 930A ST R16,-Y
06B8 01FE MOVW R30,R28
06B9 8C22 LDD R2,Z+26
06BA 8C33 LDD R3,Z+27
06BB 8C44 LDD R4,Z+28
06BC 8C55 LDD R5,Z+29
06BD 925A ST R5,-Y
06BE 924A ST R4,-Y
06BF 923A ST R3,-Y
06C0 922A ST R2,-Y
06C1 940E0A88 CALL empy32f
06C3 01FE MOVW R30,R28
06C4 8304 STD Z+4,R16
06C5 8315 STD Z+5,R17
06C6 8326 STD Z+6,R18
06C7 8337 STD Z+7,R19
06C8 01FE MOVW R30,R28
06C9 8024 LDD R2,Z+4
06CA 8035 LDD R3,Z+5
06CB 8046 LDD R4,Z+6
06CC 8057 LDD R5,Z+7
06CD 925A ST R5,-Y
06CE 924A ST R4,-Y
06CF 923A ST R3,-Y
06D0 922A ST R2,-Y
06D1 EB00 LDI R16,0xB0
06D2 E010 LDI R17,0
06D3 940E090A CALL lpm32
06D5 933A ST R19,-Y
06D6 932A ST R18,-Y
06D7 931A ST R17,-Y
06D8 930A ST R16,-Y
06D9 940E0A54 CALL cmp32f
06DB F0D4 BLT 0x06F6
06DC 01FE MOVW R30,R28
06DD 8024 LDD R2,Z+4
06DE 8035 LDD R3,Z+5
06DF 8046 LDD R4,Z+6
06E0 8057 LDD R5,Z+7
06E1 925A ST R5,-Y
06E2 924A ST R4,-Y
06E3 923A ST R3,-Y
06E4 922A ST R2,-Y
06E5 EB00 LDI R16,0xB0
06E6 E010 LDI R17,0
06E7 940E090A CALL lpm32
06E9 933A ST R19,-Y
06EA 932A ST R18,-Y
06EB 931A ST R17,-Y
06EC 930A ST R16,-Y
06ED 940E09A1 CALL sub32f
06EF 940E0924 CALL fp2int
06F1 01C8 MOVW R24,R16
06F2 5080 SUBI R24,0
06F3 4890 SBCI R25,0x80
06F4 015C MOVW R10,R24
06F5 C008 RJMP 0x06FE
06F6 01FE MOVW R30,R28
06F7 8104 LDD R16,Z+4
06F8 8115 LDD R17,Z+5
06F9 8126 LDD R18,Z+6
06FA 8137 LDD R19,Z+7
06FB 940E0924 CALL fp2int
06FD 0158 MOVW R10,R16
06FE 01B5 MOVW R22,R10
(0254) temp=temp2%10;// 123.4*10%10=4
06FF E02A LDI R18,0xA
0700 E030 LDI R19,0
0701 018B MOVW R16,R22
0702 940E08C0 CALL mod16u
0704 2F40 MOV R20,R16
(0255) display_one(4,temp);
0705 2F24 MOV R18,R20
0706 E004 LDI R16,4
0707 D9EA RCALL _display_one
(0256) delay_ms(6);
0708 E006 LDI R16,6
0709 E010 LDI R17,0
070A D9CE RCALL _delay_ms
(0257) led_contrl_port |= (1<<4);
070B 9A94 SBI 0x12,4
(0258) }
070C C001 RJMP 0x070E
(0259) else led_error();
070D D1A7 RCALL _led_error
070E 9660 ADIW R28,0x10
070F 940E08DF CALL pop_gset3
0711 9624 ADIW R28,4
0712 9508 RET
_display_float2:
temp --> R20
data --> Y+8
0713 940E08BB CALL push_arg4
0715 940E08E8 CALL push_gset2
0717 9724 SBIW R28,4
(0260) }
(0261)
(0262) /***********************************************
(0263) ** 显示浮点数 本函数占用 mega16 的空间 9%,有一点闪烁感,可将display中的延时调小
(0264) ** 思路二:直接显示整数,再显示点
(0265) ** 注意:输入的data必须为小于1000的四位小数(0.234,1.23,12.45,224.8) 等
(0266) ***********************************************/
(0267)
(0268) void display_float2(float data)
(0269) {
(0270) UNS16 temp;
(0271) if(data>1000)
0718 EC00 LDI R16,0xC0
0719 E010 LDI R17,0
071A 940E090A CALL lpm32
071C 933A ST R19,-Y
071D 932A ST R18,-Y
071E 931A ST R17,-Y
071F 930A ST R16,-Y
0720 01FE MOVW R30,R28
0721 8424 LDD R2,Z+12
0722 8435 LDD R3,Z+13
0723 8446 LDD R4,Z+14
0724 8457 LDD R5,Z+15
0725 925A ST R5,-Y
0726 924A ST R4,-Y
0727 923A ST R3,-Y
0728 922A ST R2,-Y
0729 940E0A54 CALL cmp32f
072B F00C BLT 0x072D
072C C03A RJMP 0x0767
(0272) {
(0273) temp=data;
072D 01FE MOVW R30,R28
072E 8420 LDD R2,Z+8
072F 8431 LDD R3,Z+9
0730 8442 LDD R4,Z+10
0731 8453 LDD R5,Z+11
0732 925A ST R5,-Y
0733 924A ST R4,-Y
0734 923A ST R3,-Y
0735 922A ST R2,-Y
0736 EB00 LDI R16,0xB0
0737 E010 LDI R17,0
0738 940E090A CALL lpm32
073A 933A ST R19,-Y
073B 932A ST R18,-Y
073C 931A ST R17,-Y
073D 930A ST R16,-Y
073E 940E0A54 CALL cmp32f
0740 F0CC BLT 0x075A
0741 01FE MOVW R30,R28
0742 8420 LDD R2,Z+8
0743 8431 LDD R3,Z+9
0744 8442 LDD R4,Z+10
0745 8453 LDD R5,Z+11
0746 925A ST R5,-Y
0747 924A ST R4,-Y
0748 923A ST R3,-Y
0749 922A ST R2,-Y
074A EB00 LDI R16,0xB0
074B E010 LDI R17,0
074C 940E090A CALL lpm32
074E 933A ST R19,-Y
074F 932A ST R18,-Y
0750 931A ST R17,-Y
0751 930A ST R16,-Y
0752 940E09A1 CALL sub32f
0754 940E0924 CALL fp2int
0756 01B8 MOVW R22,R16
0757 5060 SUBI R22,0
0758 4870 SBCI R23,0x80
0759 C008 RJMP 0x0762
075A 01FE MOVW R30,R28
075B 8500 LDD R16,Z+8
075C 8511 LDD R17,Z+9
075D 8522 LDD R18,Z+10
075E 8533 LDD R19,Z+11
075F 940E0924 CALL fp2int
0761 01B8 MOVW R22,R16
0762 01AB MOVW R20,R22
(0274) display(temp,1);
0763 E021 LDI R18,1
0764 018A MOVW R16,R20
0765 D9A7 RCALL _display
(0275) return;
0766 C149 RJMP 0x08B0
(0276) }
(0277) if(data>100) //比如123.4
0767 EA0C LDI R16,0xAC
0768 E010 LDI R17,0
0769 940E090A CALL lpm32
076B 933A ST R19,-Y
076C 932A ST R18,-Y
076D 931A ST R17,-Y
076E 930A ST R16,-Y
076F 01FE MOVW R30,R28
0770 8424 LDD R2,Z+12
0771 8435 LDD R3,Z+13
0772 8446 LDD R4,Z+14
0773 8457 LDD R5,Z+15
0774 925A ST R5,-Y
0775 924A ST R4,-Y
0776 923A ST R3,-Y
0777 922A ST R2,-Y
0778 940E0A54 CALL cmp32f
077A F00C BLT 0x077C
077B C059 RJMP 0x07D5
(0278) {
(0279) temp=data*10;
077C EB04 LDI R16,0xB4
077D E010 LDI R17,0
077E 940E090A CALL lpm32
0780 933A ST R19,-Y
0781 932A ST R18,-Y
0782 931A ST R17,-Y
0783 930A ST R16,-Y
0784 01FE MOVW R30,R28
0785 8424 LDD R2,Z+12
0786 8435 LDD R3,Z+13
0787 8446 LDD R4,Z+14
0788 8457 LDD R5,Z+15
0789 925A ST R5,-Y
078A 924A ST R4,-Y
078B 923A ST R3,-Y
078C 922A ST R2,-Y
078D 940E0A88 CALL empy32f
078F 01FE MOVW R30,R28
0790 8300 STD Z+0,R16
0791 8311 STD Z+1,R17
0792 8322 STD Z+2,R18
0793 8333 STD Z+3,R19
0794 01FE MOVW R30,R28
0795 8020 LDD R2,Z+0
0796 8031 LDD R3,Z+1
0797 8042 LDD R4,Z+2
0798 8053 LDD R5,Z+3
0799 925A ST R5,-Y
079A 924A ST R4,-Y
079B 923A ST R3,-Y
079C 922A ST R2,-Y
079D EB00 LDI R16,0xB0
079E E010 LDI R17,0
079F 940E090A CALL lpm32
07A1 933A ST R19,-Y
07A2 932A ST R18,-Y
07A3 931A ST R17,-Y
07A4 930A ST R16,-Y
07A5 940E0A54 CALL cmp32f
07A7 F0CC BLT 0x07C1
07A8 01FE MOVW R30,R28
07A9 8020 LDD R2,Z+0
07AA 8031 LDD R3,Z+1
07AB 8042 LDD R4,Z+2
07AC 8053 LDD R5,Z+3
07AD 925A ST R5,-Y
07AE 924A ST R4,-Y
07AF 923A ST R3,-Y
07B0 922A ST R2,-Y
07B1 EB00 LDI R16,0xB0
07B2 E010 LDI R17,0
07B3 940E090A CALL lpm32
07B5 933A ST R19,-Y
07B6 932A ST R18,-Y
07B7 931A ST R17,-Y
07B8 930A ST R16,-Y
07B9 940E09A1 CALL sub32f
07BB 940E0924 CALL fp2int
07BD 01B8 MOVW R22,R16
07BE 5060 SUBI R22,0
07BF 4870 SBCI R23,0x80
07C0 C008 RJMP 0x07C9
07C1 01FE MOVW R30,R28
07C2 8100 LDD R16,Z+0
07C3 8111 LDD R17,Z+1
07C4 8122 LDD R18,Z+2
07C5 8133 LDD R19,Z+3
07C6 940E0924 CALL fp2int
07C8 01B8 MOVW R22,R16
07C9 01AB MOVW R20,R22
(0280) display(temp,0); //普通模式显示 1234
07CA 2722 CLR R18
07CB 018A MOVW R16,R20
07CC D940 RCALL _display
(0281) led_contrl_port |= (1<<5); //选中第三位
07CD 9A95 SBI 0x12,5
(0282) led_port = 0x80; //点亮对应小数点
07CE E880 LDI R24,0x80
07CF BB8B OUT 0x1B,R24
(0283) delay_ms(6);
07D0 E006 LDI R16,6
07D1 E010 LDI R17,0
07D2 D906 RCALL _delay_ms
(0284) led_contrl_port &=~ (1<<5);
07D3 9895 CBI 0x12,5
(0285) return;
07D4 C0DB RJMP 0x08B0
(0286) }
(0287) if(data>10) //比如12.34
07D5 EB04 LDI R16,0xB4
07D6 E010 LDI R17,0
07D7 940E090A CALL lpm32
07D9 933A ST R19,-Y
07DA 932A ST R18,-Y
07DB 931A ST R17,-Y
07DC 930A ST R16,-Y
07DD 01FE MOVW R30,R28
07DE 8424 LDD R2,Z+12
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -