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

📄 led8.lst

📁 AVR单片机(MEGA16L)LED数码管实验程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
__text_start:
__start:
    002F E5CF      LDI	R28,0x5F
    0030 E0D4      LDI	R29,4
    0031 BFCD      OUT	0x3D,R28
    0032 BFDE      OUT	0x3E,R29
    0033 51C0      SUBI	R28,0x10
    0034 40D0      SBCI	R29,0
    0035 EA0A      LDI	R16,0xAA
    0036 8308      STD	Y+0,R16
    0037 2400      CLR	R0
    0038 E6EA      LDI	R30,0x6A
    0039 E0F0      LDI	R31,0
    003A E010      LDI	R17,0
    003B 36EA      CPI	R30,0x6A
    003C 07F1      CPC	R31,R17
    003D F011      BEQ	0x0040
    003E 9201      ST	R0,Z+
    003F CFFB      RJMP	0x003B
    0040 8300      STD	Z+0,R16
    0041 E5E4      LDI	R30,0x54
    0042 E0F0      LDI	R31,0
    0043 E6A0      LDI	R26,0x60
    0044 E0B0      LDI	R27,0
    0045 E010      LDI	R17,0
    0046 35EE      CPI	R30,0x5E
    0047 07F1      CPC	R31,R17
    0048 F021      BEQ	0x004D
    0049 95C8      LPM
    004A 9631      ADIW	R30,1
    004B 920D      ST	R0,X+
    004C CFF9      RJMP	0x0046
    004D 940E00A2  CALL	_main
_exit:
    004F CFFF      RJMP	_exit
_ChangeIntToHex:
  dec                  --> R20
    0050 940E00E4  CALL	push_gset1
    0052 01A8      MOVW	R20,R16
FILE: F:\job\M16学习板\LED数码管程序(实验四)\..\ICC_H\SOFTWARE.h
(0001) /*********************************************************************
(0002) 	微 雪 电 子   WaveShare   http://www.waveShare.net            	
(0003) 		                                                        
(0004) 目    的:   建立AVR的软件提取库,增加各类补丁,方便系统程序移植
(0005) 	
(0006) 目标系统:   基于AVR单片机
(0007) 		                                                                
(0008) 应用软件:   ICCAVR
(0009) 		                                                                
(0010) 版    本:   Version 1.0                                                       
(0011) 		                                                                
(0012) 圆版时间:   2005-06-25
(0013) 	
(0014) 开发人员:   SEE
(0015) 
(0016) 说    明:   若用于商业用途,请保留此段文字或注明代码来源
(0017) 	
(0018) 	深 圳 微 雪 电 子 保 留 所 有 的 版 权     
(0019) *********************************************************************/
(0020) 
(0021) /*01010101010101010101010101010101010101010101010101010101010101010101
(0022) ----------------------------------------------------------------------
(0023) 版本更新记录:
(0024) 
(0025) ----------------------------------------------------------------------
(0026) 入口参数说明:
(0027) 
(0028) ----------------------------------------------------------------------
(0029) 待定参数说明:
(0030) 
(0031) ----------------------------------------------------------------------	
(0032) 对外变量说明:
(0033)     
(0034) ----------------------------------------------------------------------
(0035) 对外函数说明:
(0036)    
(0037) ----------------------------------------------------------------------
(0038) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0039) 
(0040) #ifndef Software_H
(0041) #define Software_H
(0042) 
(0043) #include <math.h>
(0044) #include <string.h>
(0045) 
(0046) /* 兼容一般程序员的常用写法 */
(0047) typedef unsigned char	uchar;
(0048) typedef unsigned int	uint;
(0049) typedef unsigned long	ulong;
(0050) typedef signed char		schar;
(0051) typedef signed int		sint;
(0052) typedef signed long		slong;
(0053) 
(0054) /* 为方便移植,建议使用下面写法 */
(0055) typedef unsigned char	bool;
(0056) typedef unsigned char	bit;
(0057) typedef unsigned char	uint8;
(0058) typedef unsigned int	uint16;
(0059) typedef unsigned long   uint32;
(0060) typedef signed  char	sint8;
(0061) typedef signed	int		sint16;
(0062) typedef signed	long	sint32;
(0063) typedef signed  char	int8;
(0064) typedef signed  int		int16;
(0065) typedef signed  long	int32;
(0066) //typedef const			code;
(0067) 
(0068) /* 一般程序定义的默认值 */
(0069) #define NULL			0
(0070) #define EOF			   -1
(0071) #define TRUE   			1
(0072) #define FALSE  			0
(0073) #define ON				1
(0074) #define OFF				0
(0075) #define ENABLE   		1
(0076) #define DISABLE			0
(0077) #define CRR				1
(0078) #define ERR				0
(0079) #define RIGHT			1
(0080) #define WRONG			0
(0081) #define SUCCESS			1
(0082) #define FAILURE			0
(0083) //#define PI			3.1415926	//3.1415926535897932
(0084) 
(0085) /* 如果你手头上的RAM实在很紧,不如尝试下面的define~ */
(0086) //#define _CALLOC(a)		( (a *)calloc(n,sizeof(a)) )
(0087) //#define _MALLOC(a)		( (a *)malloc(sizeof(a)) )
(0088) //#define _MIN(a,b)			( (a) < (b) ? (a) : (b) )
(0089) //#define _MAX(a,b)			( (a) > (b) ? (a) : (b) )
(0090) //#define _EXCHANGE(a,b)	{ int t; t=a; a=b; b=t; }
(0091) //#define _TOLOWER(c)		( (c)+32 )
(0092) //#define _TOUPPER(c)		( (c)-32 )
(0093) 
(0094) //#ifndef BIT
(0095) //#define BIT(x)	( 1<<(x) )
(0096) //#endif
(0097) 
(0098) /*--------------------------------------------------------------------
(0099) 函数全称:数据拆字
(0100) 函数功能:自己看~
(0101) 注意事项:D<=999999,C<=6
(0102) 提示说明:调用speaData(12,2),得到dataElem[0]=2,dataElem[1]=1
(0103) 输    入:
(0104) 返    回:无
(0105) --------------------------------------------------------------------
(0106) uint8 dataElem[6];
(0107) void speaData(uint32 dat,sint8 len)
(0108) {
(0109)     uint8 i;
(0110)     uint32 j,y;
(0111)     for(i=0,j=1;i<len;i++)
(0112)     {
(0113)         y=dat/j;
(0114)         dataElem[i]=y%10;
(0115)         j*=10;
(0116)     }
(0117) }
(0118) /*--------------------------------------------------------------------
(0119) 函数全称:十进制强制转换为十六进制
(0120) 函数功能:
(0121) 注意事项:
(0122) 提示说明:调用changeIntToHex(33),return 0x33
(0123) 输    入:
(0124) 返    回:
(0125) --------------------------------------------------------------------*/
(0126) #define changeIntToHex(dec)		( ( ((dec)/10) <<4 ) + ((dec)%10) )
(0127) /*--------------------------------------------------------------------
(0128) 函数全称:十进制强制转换为十六进制
(0129) 函数功能:
(0130) 注意事项:
(0131) 提示说明:调用changeIntToHex(33),return 0x33
(0132) 输    入:
(0133) 返    回:
(0134) --------------------------------------------------------------------*/
(0135) void ChangeIntToHex( uchar *dec)		
(0136) {
(0137)  	*dec = (((*dec)/10) <<4 )|((*dec)%10) ;
    0053 01FA      MOVW	R30,R20
    0054 8020      LDD	R2,Z+0
    0055 2433      CLR	R3
    0056 E01A      LDI	R17,0xA
    0057 2D02      MOV	R16,R2
    0058 940E00C4  CALL	mod8u
    005A 2E40      MOV	R4,R16
    005B E01A      LDI	R17,0xA
    005C 2D02      MOV	R16,R2
    005D 940E00C6  CALL	div8u
    005F 2F80      MOV	R24,R16
    0060 708F      ANDI	R24,0xF
    0061 9582      SWAP	R24
    0062 2984      OR	R24,R4
    0063 01FA      MOVW	R30,R20
    0064 8380      STD	Z+0,R24
    0065 940E00E7  CALL	pop_gset1
    0067 9508      RET
(0138) }
(0139) /*--------------------------------------------------------------------
(0140) 函数全称:十进制化为十六进制,并以十进制格式返回
(0141) 函数功能:
(0142) 注意事项:传参必须为 unsigned 类型,否则移位结果可能吓你一跳
(0143) 提示说明:调用converseIntToHex(33),return 21
(0144) 输    入:
(0145) 返    回:
(0146) --------------------------------------------------------------------/
(0147) #define converseIntToHex(dec)	( ( ((dec)>>4) *10 ) + ((dec)%16) )
(0148) /*--------------------------------------------------------------------
(0149) 函数全称:十六进制强制转换为十进制
(0150) 函数功能:
(0151) 注意事项:传参必须为 unsigned 类型,否则移位结果可能吓你一跳
(0152) 提示说明:调用changeHexToInt(0x33),return 33
(0153) 输    入:
(0154) 返    回:
(0155) --------------------------------------------------------------------*/
(0156) #define changeHexToInt(hex)		( ( ((hex)>>4) *10 ) + ((hex)%16) )
(0157) /*--------------------------------------------------------------------
(0158) 函数全称:十六进制强制转换为十进制
(0159) 函数功能:
(0160) 注意事项:传参必须为 unsigned 类型,否则移位结果可能吓你一跳
(0161) 提示说明:调用changeHexToInt(0x33),return 33
(0162) 输    入:
(0163) 返    回:
(0164) --------------------------------------------------------------------*/
(0165) void ChangeHexToInt(uchar *hex)
(0166) {
(0167)  	*hex = (((*hex)>>4) *10 ) + ((*hex)&0x0f);
_ChangeHexToInt:
  hex                  --> R16
    0068 01F8      MOVW	R30,R16
    0069 8020      LDD	R2,Z+0
    006A 2433      CLR	R3
    006B 2D82      MOV	R24,R2
    006C 9582      SWAP	R24
    006D 708F      ANDI	R24,0xF
    006E E09A      LDI	R25,0xA
    006F 9F98      MUL	R25,R24
    0070 2D82      MOV	R24,R2
    0071 708F      ANDI	R24,0xF
    0072 2C20      MOV	R2,R0
    0073 0E28      ADD	R2,R24
    0074 8220      STD	Z+0,R2
    0075 9508      RET
(0168) }		
(0169) /*--------------------------------------------------------------------
(0170) 函数全称:十六进制化为十进制,,并以十六进制格式返回
(0171) 函数功能:
(0172) 注意事项:
(0173) 提示说明:调用converseHexToInt(0x33),return 0x51
(0174) 输    入:
(0175) 返    回:
(0176) --------------------------------------------------------------------*/
(0177) #define converseHexToInt(hex)	( ( ((hex)/10) <<4 ) + ((hex)%10) )
(0178) 
(0179) void Delay(void)
(0180) {
(0181)  	uchar i;
(0182) 	i = 200;
_Delay:
  i                    --> R16
    0076 EC08      LDI	R16,0xC8
(0183) 	while(i--);
    0077 2E20      MOV	R2,R16
    0078 2433      CLR	R3
    0079 5001      SUBI	R16,1
    007A 2022      TST	R2
    007B F7D9      BNE	0x0077
    007C 9508      RET
_DelayMs:
  j                    --> R20
  i                    --> R16
    007D 940E00E4  CALL	push_gset1

⌨️ 快捷键说明

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