⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 单片机中的中断处理模块
💻 LST
📖 第 1 页 / 共 5 页
字号:
    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 + -