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

📄 数码管的显示.lst

📁 为了实现让单片机显示阿拉伯数字的功能
💻 LST
字号:
__text_start:
__start:
    0026 EFCF      LDI	R28,0xFF
    0027 E0D2      LDI	R29,2
    0028 BFCD      OUT	0x3D,R28
    0029 BFDE      OUT	0x3E,R29
    002A 51C0      SUBI	R28,0x10
    002B 40D0      SBCI	R29,0
    002C EA0A      LDI	R16,0xAA
    002D 8308      STD	Y+0,R16
    002E 2400      CLR	R0
    002F E0E0      LDI	R30,0
    0030 E0F1      LDI	R31,1
    0031 E011      LDI	R17,1
    0032 30E0      CPI	R30,0
    0033 07F1      CPC	R31,R17
    0034 F011      BEQ	0x0037
    0035 9201      ST	R0,Z+
    0036 CFFB      RJMP	0x0032
    0037 8300      STD	Z+0,R16
    0038 E4EB      LDI	R30,0x4B
    0039 E0F0      LDI	R31,0
    003A E0A0      LDI	R26,0
    003B E0B1      LDI	R27,1
    003C E010      LDI	R17,0
    003D 34EB      CPI	R30,0x4B
    003E 07F1      CPC	R31,R17
    003F F021      BEQ	0x0044
    0040 95C8      LPM
    0041 9631      ADIW	R30,1
    0042 920D      ST	R0,X+
    0043 CFF9      RJMP	0x003D
    0044 D010      RCALL	_main
_exit:
    0045 CFFF      RJMP	_exit
_Delay_ms:
  n                    --> R20
  Time                 --> R16
    0046 D031      RCALL	push_gset1
FILE: D:\实例5~1\delay.h
(0001) /***********************************************************
(0002) 以头文件的形式保存的延时函数,这种方法避免了重复拷贝函数之苦
(0003) ***********************************************************/
(0004) 
(0005) void Delay_ms(unsigned int Time)
(0006) {
    0047 C008      RJMP	0x0050
(0007)     unsigned char n;
(0008)     while(Time>0)
(0009)     {
(0010)         for (n=1;n<187;n++)
    0048 E041      LDI	R20,1
    0049 C002      RJMP	0x004C
(0011)         {
(0012)             NOP();
    004A 0000      NOP
    004B 9543      INC	R20
    004C 3B4B      CPI	R20,0xBB
    004D F3E0      BCS	0x004A
(0013)         }
(0014)         Time--;
    004E 5001      SUBI	R16,1
    004F 4010      SBCI	R17,0
    0050 3000      CPI	R16,0
    0051 0701      CPC	R16,R17
    0052 F7A9      BNE	0x0048
    0053 D027      RCALL	pop_gset1
    0054 9508      RET
FILE: D:\实例5~1\digital_dispaly.c
(0001) #include <iom48v.h>
(0002) #include <macros.h>
(0003) #include "delay.h"
(0004) 
(0005) const unsigned char DisTab[]=
(0006) {
(0007) 	0xFC,0x60,0xDA,0xF2,0x66,	//0,1,2,3,4
(0008) 	0xB6,0xBE,0xE0,0xFE,0xF6,	//5,6,7,8,9
(0009) 	0xEE,0x3E,0x9C,0x7A,0x9E,	//A,b,C,d,E
(0010) 	0x8E,0xCE,0x1C,0x6E,0x7C,	//F,P,L,H,U
(0011) 	0x0A,0x10,0x02				//r,_,-
(0012) };
(0013) 
(0014) void main (void)
(0015) {
(0016) 	unsigned char Counter=0;
_main:
  Counter              --> R20
    0055 2744      CLR	R20
(0017) 
(0018)     DDRC=0xFF;
    0056 EF8F      LDI	R24,0xFF
    0057 B987      OUT	0x07,R24
(0019)     DDRB=0xFF;
    0058 B984      OUT	0x04,R24
(0020)     DDRD=0xFF;
    0059 B98A      OUT	0x0A,R24
(0021)     PORTC=0xFF;
    005A B988      OUT	0x08,R24
(0022)     PORTB=0xFF;
    005B B985      OUT	0x05,R24
(0023)     PORTD=0xFF;
    005C B98B      OUT	0x0B,R24
    005D C010      RJMP	0x006E
(0024) 
(0025)     while(1)
(0026)     {
(0027)         PORTD=DisTab[Counter];
    005E E384      LDI	R24,0x34
    005F E090      LDI	R25,0
    0060 2FE4      MOV	R30,R20
    0061 27FF      CLR	R31
    0062 0FE8      ADD	R30,R24
    0063 1FF9      ADC	R31,R25
    0064 91E4      LPM	R30,0(Z)
    0065 B9EB      OUT	0x0B,R30
(0028)         Counter++;
    0066 9543      INC	R20
(0029)         if (Counter>22)
    0067 E186      LDI	R24,0x16
    0068 1784      CP	R24,R20
    0069 F408      BCC	0x006B
(0030)         	Counter=0;
    006A 2744      CLR	R20
(0031)         Delay_ms(500);
FILE: <library>
    006B EF04      LDI	R16,0xF4
    006C E011      LDI	R17,1
    006D DFD8      RCALL	_Delay_ms
    006E CFEF      RJMP	0x005E
    006F 9508      RET
push_gset5:
    0070 92FA      ST	R15,-Y
    0071 92EA      ST	R14,-Y
push_gset4:
    0072 92DA      ST	R13,-Y
    0073 92CA      ST	R12,-Y
push_gset3:
    0074 92BA      ST	R11,-Y
    0075 92AA      ST	R10,-Y
push_gset2:
    0076 937A      ST	R23,-Y
    0077 936A      ST	R22,-Y
push_gset1:
    0078 935A      ST	R21,-Y
    0079 934A      ST	R20,-Y
    007A 9508      RET
pop_gset1:
    007B E0E1      LDI	R30,1
pop:
    007C 9149      LD	R20,Y+
    007D 9159      LD	R21,Y+
    007E FDE0      SBRC	R30,0
    007F 9508      RET
    0080 9169      LD	R22,Y+
    0081 9179      LD	R23,Y+
    0082 FDE1      SBRC	R30,1
    0083 9508      RET
    0084 90A9      LD	R10,Y+
    0085 90B9      LD	R11,Y+
    0086 FDE2      SBRC	R30,2
    0087 9508      RET
    0088 90C9      LD	R12,Y+
    0089 90D9      LD	R13,Y+
    008A FDE3      SBRC	R30,3
    008B 9508      RET
    008C 90E9      LD	R14,Y+
    008D 90F9      LD	R15,Y+
    008E 9508      RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -