📄 main.lst
字号:
064C 8837 LDD R3,Z+23
064D 8C40 LDD R4,Z+24
064E 8C51 LDD R5,Z+25
064F 925A ST R5,-Y
0650 924A ST R4,-Y
0651 923A ST R3,-Y
0652 922A ST R2,-Y
0653 EB00 LDI R16,0xB0
0654 E010 LDI R17,0
0655 940E0948 CALL lpm32
0657 933A ST R19,-Y
0658 932A ST R18,-Y
0659 931A ST R17,-Y
065A 930A ST R16,-Y
065B 940E0A92 CALL cmp32f
065D F0D4 BLT 0x0678
065E 01FE MOVW R30,R28
065F 8826 LDD R2,Z+22
0660 8837 LDD R3,Z+23
0661 8C40 LDD R4,Z+24
0662 8C51 LDD R5,Z+25
0663 925A ST R5,-Y
0664 924A ST R4,-Y
0665 923A ST R3,-Y
0666 922A ST R2,-Y
0667 EB00 LDI R16,0xB0
0668 E010 LDI R17,0
0669 940E0948 CALL lpm32
066B 933A ST R19,-Y
066C 932A ST R18,-Y
066D 931A ST R17,-Y
066E 930A ST R16,-Y
066F 940E09DF CALL sub32f
0671 940E0962 CALL fp2int
0673 01C8 MOVW R24,R16
0674 5080 SUBI R24,0
0675 4890 SBCI R25,0x80
0676 015C MOVW R10,R24
0677 C008 RJMP 0x0680
0678 01FE MOVW R30,R28
0679 8906 LDD R16,Z+22
067A 8917 LDD R17,Z+23
067B 8D20 LDD R18,Z+24
067C 8D31 LDD R19,Z+25
067D 940E0962 CALL fp2int
067F 0158 MOVW R10,R16
0680 01B5 MOVW R22,R10
(0247) temp=(temp2%10);// 123.4%10=3
0681 E02A LDI R18,0xA
0682 E030 LDI R19,0
0683 018B MOVW R16,R22
0684 940E08FE CALL mod16u
0686 2F40 MOV R20,R16
(0248) display_one(5,temp);
0687 2F24 MOV R18,R20
0688 E005 LDI R16,5
0689 DA49 RCALL _display_one
(0249) led_port &= 0x7F; //点亮对应小数点
068A B38B IN R24,0x1B
068B 778F ANDI R24,0x7F
068C BB8B OUT 0x1B,R24
(0250) delay_ms(6);
068D E006 LDI R16,6
068E E010 LDI R17,0
068F DA2A RCALL _delay_ms
(0251) led_contrl_port |= (1<<5);
0690 9A95 SBI 0x12,5
(0252)
(0253) temp2=(data*10);
0691 EB04 LDI R16,0xB4
0692 E010 LDI R17,0
0693 940E0948 CALL lpm32
0695 933A ST R19,-Y
0696 932A ST R18,-Y
0697 931A ST R17,-Y
0698 930A ST R16,-Y
0699 01FE MOVW R30,R28
069A 8C22 LDD R2,Z+26
069B 8C33 LDD R3,Z+27
069C 8C44 LDD R4,Z+28
069D 8C55 LDD R5,Z+29
069E 925A ST R5,-Y
069F 924A ST R4,-Y
06A0 923A ST R3,-Y
06A1 922A ST R2,-Y
06A2 940E0AC6 CALL empy32f
06A4 01FE MOVW R30,R28
06A5 8304 STD Z+4,R16
06A6 8315 STD Z+5,R17
06A7 8326 STD Z+6,R18
06A8 8337 STD Z+7,R19
06A9 01FE MOVW R30,R28
06AA 8024 LDD R2,Z+4
06AB 8035 LDD R3,Z+5
06AC 8046 LDD R4,Z+6
06AD 8057 LDD R5,Z+7
06AE 925A ST R5,-Y
06AF 924A ST R4,-Y
06B0 923A ST R3,-Y
06B1 922A ST R2,-Y
06B2 EB00 LDI R16,0xB0
06B3 E010 LDI R17,0
06B4 940E0948 CALL lpm32
06B6 933A ST R19,-Y
06B7 932A ST R18,-Y
06B8 931A ST R17,-Y
06B9 930A ST R16,-Y
06BA 940E0A92 CALL cmp32f
06BC F0D4 BLT 0x06D7
06BD 01FE MOVW R30,R28
06BE 8024 LDD R2,Z+4
06BF 8035 LDD R3,Z+5
06C0 8046 LDD R4,Z+6
06C1 8057 LDD R5,Z+7
06C2 925A ST R5,-Y
06C3 924A ST R4,-Y
06C4 923A ST R3,-Y
06C5 922A ST R2,-Y
06C6 EB00 LDI R16,0xB0
06C7 E010 LDI R17,0
06C8 940E0948 CALL lpm32
06CA 933A ST R19,-Y
06CB 932A ST R18,-Y
06CC 931A ST R17,-Y
06CD 930A ST R16,-Y
06CE 940E09DF CALL sub32f
06D0 940E0962 CALL fp2int
06D2 01C8 MOVW R24,R16
06D3 5080 SUBI R24,0
06D4 4890 SBCI R25,0x80
06D5 015C MOVW R10,R24
06D6 C008 RJMP 0x06DF
06D7 01FE MOVW R30,R28
06D8 8104 LDD R16,Z+4
06D9 8115 LDD R17,Z+5
06DA 8126 LDD R18,Z+6
06DB 8137 LDD R19,Z+7
06DC 940E0962 CALL fp2int
06DE 0158 MOVW R10,R16
06DF 01B5 MOVW R22,R10
(0254) temp=temp2%10;// 123.4*10%10=4
06E0 E02A LDI R18,0xA
06E1 E030 LDI R19,0
06E2 018B MOVW R16,R22
06E3 940E08FE CALL mod16u
06E5 2F40 MOV R20,R16
(0255) display_one(4,temp);
06E6 2F24 MOV R18,R20
06E7 E004 LDI R16,4
06E8 D9EA RCALL _display_one
(0256) delay_ms(6);
06E9 E006 LDI R16,6
06EA E010 LDI R17,0
06EB D9CE RCALL _delay_ms
(0257) led_contrl_port |= (1<<4);
06EC 9A94 SBI 0x12,4
(0258) }
06ED C001 RJMP 0x06EF
(0259) else led_error();
06EE D1A7 RCALL _led_error
06EF 9660 ADIW R28,0x10
06F0 940E091D CALL pop_gset3
06F2 9624 ADIW R28,4
06F3 9508 RET
_display_float2:
temp --> R20
data --> Y+8
06F4 940E08F9 CALL push_arg4
06F6 940E0926 CALL push_gset2
06F8 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)
06F9 EC00 LDI R16,0xC0
06FA E010 LDI R17,0
06FB 940E0948 CALL lpm32
06FD 933A ST R19,-Y
06FE 932A ST R18,-Y
06FF 931A ST R17,-Y
0700 930A ST R16,-Y
0701 01FE MOVW R30,R28
0702 8424 LDD R2,Z+12
0703 8435 LDD R3,Z+13
0704 8446 LDD R4,Z+14
0705 8457 LDD R5,Z+15
0706 925A ST R5,-Y
0707 924A ST R4,-Y
0708 923A ST R3,-Y
0709 922A ST R2,-Y
070A 940E0A92 CALL cmp32f
070C F00C BLT 0x070E
070D C03A RJMP 0x0748
(0272) {
(0273) temp=data;
070E 01FE MOVW R30,R28
070F 8420 LDD R2,Z+8
0710 8431 LDD R3,Z+9
0711 8442 LDD R4,Z+10
0712 8453 LDD R5,Z+11
0713 925A ST R5,-Y
0714 924A ST R4,-Y
0715 923A ST R3,-Y
0716 922A ST R2,-Y
0717 EB00 LDI R16,0xB0
0718 E010 LDI R17,0
0719 940E0948 CALL lpm32
071B 933A ST R19,-Y
071C 932A ST R18,-Y
071D 931A ST R17,-Y
071E 930A ST R16,-Y
071F 940E0A92 CALL cmp32f
0721 F0CC BLT 0x073B
0722 01FE MOVW R30,R28
0723 8420 LDD R2,Z+8
0724 8431 LDD R3,Z+9
0725 8442 LDD R4,Z+10
0726 8453 LDD R5,Z+11
0727 925A ST R5,-Y
0728 924A ST R4,-Y
0729 923A ST R3,-Y
072A 922A ST R2,-Y
072B EB00 LDI R16,0xB0
072C E010 LDI R17,0
072D 940E0948 CALL lpm32
072F 933A ST R19,-Y
0730 932A ST R18,-Y
0731 931A ST R17,-Y
0732 930A ST R16,-Y
0733 940E09DF CALL sub32f
0735 940E0962 CALL fp2int
0737 01B8 MOVW R22,R16
0738 5060 SUBI R22,0
0739 4870 SBCI R23,0x80
073A C008 RJMP 0x0743
073B 01FE MOVW R30,R28
073C 8500 LDD R16,Z+8
073D 8511 LDD R17,Z+9
073E 8522 LDD R18,Z+10
073F 8533 LDD R19,Z+11
0740 940E0962 CALL fp2int
0742 01B8 MOVW R22,R16
0743 01AB MOVW R20,R22
(0274) display(temp,1);
0744 E021 LDI R18,1
0745 018A MOVW R16,R20
0746 D9A7 RCALL _display
(0275) return;
0747 C149 RJMP 0x0891
(0276) }
(0277) if(data>100) //比如123.4
0748 EA0C LDI R16,0xAC
0749 E010 LDI R17,0
074A 940E0948 CALL lpm32
074C 933A ST R19,-Y
074D 932A ST R18,-Y
074E 931A ST R17,-Y
074F 930A ST R16,-Y
0750 01FE MOVW R30,R28
0751 8424 LDD R2,Z+12
0752 8435 LDD R3,Z+13
0753 8446 LDD R4,Z+14
0754 8457 LDD R5,Z+15
0755 925A ST R5,-Y
0756 924A ST R4,-Y
0757 923A ST R3,-Y
0758 922A ST R2,-Y
0759 940E0A92 CALL cmp32f
075B F00C BLT 0x075D
075C C059 RJMP 0x07B6
(0278) {
(0279) temp=data*10;
075D EB04 LDI R16,0xB4
075E E010 LDI R17,0
075F 940E0948 CALL lpm32
0761 933A ST R19,-Y
0762 932A ST R18,-Y
0763 931A ST R17,-Y
0764 930A ST R16,-Y
0765 01FE MOVW R30,R28
0766 8424 LDD R2,Z+12
0767 8435 LDD R3,Z+13
0768 8446 LDD R4,Z+14
0769 8457 LDD R5,Z+15
076A 925A ST R5,-Y
076B 924A ST R4,-Y
076C 923A ST R3,-Y
076D 922A ST R2,-Y
076E 940E0AC6 CALL empy32f
0770 01FE MOVW R30,R28
0771 8300 STD Z+0,R16
0772 8311 STD Z+1,R17
0773 8322 STD Z+2,R18
0774 8333 STD Z+3,R19
0775 01FE MOVW R30,R28
0776 8020 LDD R2,Z+0
0777 8031 LDD R3,Z+1
0778 8042 LDD R4,Z+2
0779 8053 LDD R5,Z+3
077A 925A ST R5,-Y
077B 924A ST R4,-Y
077C 923A ST R3,-Y
077D 922A ST R2,-Y
077E EB00 LDI R16,0xB0
077F E010 LDI R17,0
0780 940E0948 CALL lpm32
0782 933A ST R19,-Y
0783 932A ST R18,-Y
0784 931A ST R17,-Y
0785 930A ST R16,-Y
0786 940E0A92 CALL cmp32f
0788 F0CC BLT 0x07A2
0789 01FE MOVW R30,R28
078A 8020 LDD R2,Z+0
078B 8031 LDD R3,Z+1
078C 8042 LDD R4,Z+2
078D 8053 LDD R5,Z+3
078E 925A ST R5,-Y
078F 924A ST R4,-Y
0790 923A ST R3,-Y
0791 922A ST R2,-Y
0792 EB00 LDI R16,0xB0
0793 E010 LDI R17,0
0794 940E0948 CALL lpm32
0796 933A ST R19,-Y
0797 932A ST R18,-Y
0798 931A ST R17,-Y
0799 930A ST R16,-Y
079A 940E09DF CALL sub32f
079C 940E0962 CALL fp2int
079E 01B8 MOVW R22,R16
079F 5060 SUBI R22,0
07A0 4870 SBCI R23,0x80
07A1 C008 RJMP 0x07AA
07A2 01FE MOVW R30,R28
07A3 8100 LDD R16,Z+0
07A4 8111 LDD R17,Z+1
07A5 8122 LDD R18,Z+2
07A6 8133 LDD R19,Z+3
07A7 940E0962 CALL fp2int
07A9 01B8 MOVW R22,R16
07AA 01AB MOVW R20,R22
(0280) display(temp,0); //普通模式显示 1234
07AB 2722 CLR R18
07AC 018A MOVW R16,R20
07AD D940 RCALL _display
(0281) led_contrl_port |= (1<<5); //选中第三位
07AE 9A95 SBI 0x12,5
(0282) led_port = 0x80; //点亮对应小数点
07AF E880 LDI R24,0x80
07B0 BB8B OUT 0x1B,R24
(0283) delay_ms(6);
07B1 E006 LDI R16,6
07B2 E010 LDI R17,0
07B3 D906 RCALL _delay_ms
(0284) led_contrl_port &=~ (1<<5);
07B4 9895 CBI 0x12,5
(0285) return;
07B5 C0DB RJMP 0x0891
(0286) }
(0287) if(data>10) //比如12.34
07B6 EB04 LDI R16,0xB4
07B7 E010 LDI R17,0
07B8 940E0948 CALL lpm32
07BA 933A ST R19,-Y
07BB 932A ST R18,-Y
07BC 931A ST R17,-Y
07BD 930A ST R16,-Y
07BE 01FE MOVW R30,R28
07BF 8424 LDD R2,Z+12
07C0 8435 LDD R3,Z+13
07C1 8446 LDD R4,Z+14
07C2 8457 LDD R5,Z+15
07C3 925A ST R5,-Y
07C4 924A ST R4,-Y
07C5 923A ST R3,-Y
07C6 922A ST R2,-Y
07C7 940E0A92 CALL cmp32f
07C9 F00C BLT 0x07CB
07CA C059 RJMP 0x0824
(0288) {
(0289) temp=data*100;
07CB EA0C LDI R16,0xAC
07CC E010 LDI R17,0
07CD 940E0948 CALL lpm32
07CF 933A ST R19,-Y
07D0 932A ST R18,-Y
07D1 931A ST R17,-Y
07D2 930A ST R16,-Y
07D3 01FE MOVW R30,R28
07D4 8424 LDD R2,Z+12
07D5 8435 LDD R3,Z+13
07D6 8446 LDD R4,Z+14
07D7 8457 LDD R5,Z+15
07D8 925A ST R5,-Y
07D9 924A ST R4,-Y
07DA 923A ST R3,-Y
07DB 922A ST R2,-Y
07DC 940E0AC6 CALL empy32f
07DE 01FE MOVW R30,R28
07DF 8300 STD Z+0,R16
07E0 8311 STD Z+1,R17
07E1 8322 STD Z+2,R18
07E2 8333 STD Z+3,R19
07E3 01FE MOVW R30,R28
07E4 8020 LDD R2,Z+0
07E5 8031 LDD R3,Z+1
07E6 8042 LDD R4,Z+2
07E7 8053 LDD R5,Z+3
07E8 925A ST R5,-Y
07E9 924A ST R4,-Y
07EA 923A ST R3,-Y
07EB 922A ST R2,-Y
07EC EB00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -