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

📄 led.lst

📁 meg16 的所有功能实例
💻 LST
字号:
__text_start:
__start:
    0033 E5CF      LDI	R28,0x5F
    0034 E0D4      LDI	R29,4
    0035 BFCD      OUT	0x3D,R28
    0036 BFDE      OUT	0x3E,R29
    0037 51C0      SUBI	R28,0x10
    0038 40D0      SBCI	R29,0
    0039 EA0A      LDI	R16,0xAA
    003A 8308      STD	Y+0,R16
    003B 2400      CLR	R0
    003C E7E2      LDI	R30,0x72
    003D E0F0      LDI	R31,0
    003E E010      LDI	R17,0
    003F 37E3      CPI	R30,0x73
    0040 07F1      CPC	R31,R17
    0041 F011      BEQ	0x0044
    0042 9201      ST	R0,Z+
    0043 CFFB      RJMP	0x003F
    0044 8300      STD	Z+0,R16
    0045 E5E4      LDI	R30,0x54
    0046 E0F0      LDI	R31,0
    0047 E6A0      LDI	R26,0x60
    0048 E0B0      LDI	R27,0
    0049 E010      LDI	R17,0
    004A 36E6      CPI	R30,0x66
    004B 07F1      CPC	R31,R17
    004C F021      BEQ	0x0051
    004D 95C8      LPM
    004E 9631      ADIW	R30,1
    004F 920D      ST	R0,X+
    0050 CFF9      RJMP	0x004A
    0051 940E0092  CALL	_main
_exit:
    0053 CFFF      RJMP	_exit
FILE: E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\数码管测试\main.c
(0001) /****************************************Copyright (c)**************************************************
(0002) **                               ADEmbed Development Co.,LTD.                                    
(0003) **                                 http://www.adembed.com
(0004) **--------------File Info-------------------------------------------------------------------------------
(0005) ** File name:			main.c
(0006) ** Last modified Date:  2008-12-13
(0007) ** Last Version:		1.0
(0008) ** Descriptions:		StopWatch.
(0009) ** 
(0010) **------------------------------------------------------------------------------------------------------
(0011) ** Created by:			junbolu
(0012) ** Created date:		2008-12-13
(0013) ** Version:				1.0
(0014) ** Descriptions:		
(0015) **
(0016) **------------------------------------------------------------------------------------------------------
(0017) ** Modified by:
(0018) ** Modified date:
(0019) ** Version:
(0020) ** Descriptions:
(0021) **
(0022) **------------------------------------------------------------------------------------------------------
(0023) **ICC-AVR application builder : 2008-12-13
(0024) **Target : M16
(0025) **Crystal: 7.3728Mhz
(0026) **PA0~PA7口接LED的段码
(0027) **PB0~PB3口接LED的位选
(0028) **描述:这是一个LED数码管测试程序。采用共阴LED数码管,动态显示固定数字2009。
(0029) **      没有一点多余的代码,清晰明了。
(0030) **
(0031) **涉及知识点:
(0032) **          DO输出
(0033) **          for 循环的应用
(0034) **          数组的简单应用
(0035) *******************************************************************************************************/
(0036) 
(0037) #include<iom16v.h>
(0038) #include<macros.h>
(0039) 
(0040) unsigned char DISP_NUM;							//显示的位数
(0041) unsigned char BitTab[]={0xFE,0xFD,0xFB,0xF7};	//三位位选码
(0042) unsigned char DispTab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //LED字形码
(0043) unsigned char DISP_DATA[4]={2,0,0,9};		    //显示的数字
(0044) 
(0045) void Display(void);
(0046) 
(0047) void Delay_us(unsigned int time)
(0048) {
(0049) while(time--);
_Delay_us:
  time                 --> R16
    0054 0118      MOVW	R2,R16
    0055 5001      SUBI	R16,1
    0056 4010      SBCI	R17,0
    0057 2022      TST	R2
    0058 F7D9      BNE	0x0054
    0059 2033      TST	R3
    005A F7C9      BNE	0x0054
    005B 9508      RET
_Delay_ms:
  time                 --> R20
    005C 940E00A9  CALL	push_gset1
    005E 01A8      MOVW	R20,R16
(0050) }
(0051) 
(0052) void Delay_ms(unsigned int time)
(0053) {
    005F C003      RJMP	0x0063
(0054) while(time--)
(0055) 	{
(0056) 	Delay_us(10000);
    0060 E100      LDI	R16,0x10
    0061 E217      LDI	R17,0x27
    0062 DFF1      RCALL	_Delay_us
    0063 011A      MOVW	R2,R20
    0064 5041      SUBI	R20,1
    0065 4050      SBCI	R21,0
    0066 2022      TST	R2
    0067 F7C1      BNE	0x0060
    0068 2033      TST	R3
    0069 F7B1      BNE	0x0060
    006A 940E00AC  CALL	pop_gset1
    006C 9508      RET
(0057) 	}
(0058) }
(0059) 
(0060) //显示函数,DISP_NUM决定显示哪个LED
(0061) void Display(void)		
(0062) {
(0063)  PORTA=0x00;					   			//清除显示再位选
_Display:
    006D 2422      CLR	R2
    006E BA2B      OUT	0x1B,R2
(0064)  PORTB=BitTab[DISP_NUM];					//PB口接位选
    006F E680      LDI	R24,0x60
    0070 E090      LDI	R25,0
    0071 91E00072  LDS	R30,DISP_NUM
    0073 27FF      CLR	R31
    0074 0FE8      ADD	R30,R24
    0075 1FF9      ADC	R31,R25
    0076 8020      LDD	R2,Z+0
    0077 BA28      OUT	0x18,R2
(0065)  PORTA=DispTab[DISP_DATA[DISP_NUM]];		//PA口接LED的段码
    0078 E68E      LDI	R24,0x6E
    0079 E090      LDI	R25,0
    007A 91E00072  LDS	R30,DISP_NUM
    007C 27FF      CLR	R31
    007D 0FE8      ADD	R30,R24
    007E 1FF9      ADC	R31,R25
    007F 81E0      LDD	R30,Z+0
    0080 27FF      CLR	R31
    0081 E684      LDI	R24,0x64
    0082 E090      LDI	R25,0
    0083 0FE8      ADD	R30,R24
    0084 1FF9      ADC	R31,R25
    0085 8020      LDD	R2,Z+0
    0086 BA2B      OUT	0x1B,R2
(0066)  
(0067) 
(0068)  DISP_NUM++;								//先显示低位,再显示高位
    0087 91800072  LDS	R24,DISP_NUM
    0089 5F8F      SUBI	R24,0xFF
    008A 93800072  STS	DISP_NUM,R24
(0069)  if(DISP_NUM==4)
    008C 3084      CPI	R24,4
    008D F419      BNE	0x0091
(0070)     DISP_NUM=0;
    008E 2422      CLR	R2
    008F 92200072  STS	DISP_NUM,R2
    0091 9508      RET
(0071) }
(0072) 
(0073) void main(void)
(0074) {
(0075)  DDRA=0XFF;
_main:
    0092 EF8F      LDI	R24,0xFF
    0093 BB8A      OUT	0x1A,R24
(0076)  PORTA=0X00;
    0094 2422      CLR	R2
    0095 BA2B      OUT	0x1B,R2
(0077)  DDRB=0X0F;
    0096 E08F      LDI	R24,0xF
    0097 BB87      OUT	0x17,R24
(0078)  PORTB=0X00;
    0098 BA28      OUT	0x18,R2
(0079)  
(0080)  DISP_NUM=0;
    0099 92200072  STS	DISP_NUM,R2
(0081)  for(;;)
(0082) 	 { 
(0083) 	 Delay_us(200);
    009B EC08      LDI	R16,0xC8
    009C E010      LDI	R17,0
    009D DFB6      RCALL	_Delay_us
(0084)      Display();
FILE: <library>
    009E DFCE      RCALL	_Display
    009F CFFB      RJMP	0x009B
    00A0 9508      RET
push_gset5:
    00A1 92FA      ST	R15,-Y
    00A2 92EA      ST	R14,-Y
push_gset4:
    00A3 92DA      ST	R13,-Y
    00A4 92CA      ST	R12,-Y
push_gset3:
    00A5 92BA      ST	R11,-Y
    00A6 92AA      ST	R10,-Y
push_gset2:
    00A7 937A      ST	R23,-Y
    00A8 936A      ST	R22,-Y
push_gset1:
    00A9 935A      ST	R21,-Y
    00AA 934A      ST	R20,-Y
    00AB 9508      RET
pop_gset1:
    00AC E0E1      LDI	R30,1
pop:
    00AD 9149      LD	R20,Y+
    00AE 9159      LD	R21,Y+
    00AF FDE0      SBRC	R30,0
    00B0 9508      RET
    00B1 9169      LD	R22,Y+
    00B2 9179      LD	R23,Y+
    00B3 FDE1      SBRC	R30,1
    00B4 9508      RET
    00B5 90A9      LD	R10,Y+
    00B6 90B9      LD	R11,Y+
    00B7 FDE2      SBRC	R30,2
    00B8 9508      RET
    00B9 90C9      LD	R12,Y+
    00BA 90D9      LD	R13,Y+
    00BB FDE3      SBRC	R30,3
    00BC 9508      RET
    00BD 90E9      LD	R14,Y+
    00BE 90F9      LD	R15,Y+
    00BF 9508      RET

⌨️ 快捷键说明

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