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

📄 eeprom.lst

📁 ATmega16应用例子
💻 LST
📖 第 1 页 / 共 3 页
字号:
__text_start:
__start:
    002E E5CF      LDI	R28,0x5F
    002F E0D4      LDI	R29,4
    0030 BFCD      OUT	0x3D,R28
    0031 BFDE      OUT	0x3E,R29
    0032 51C0      SUBI	R28,0x10
    0033 40D0      SBCI	R29,0
    0034 EA0A      LDI	R16,0xAA
    0035 8308      STD	Y+0,R16
    0036 2400      CLR	R0
    0037 E6E0      LDI	R30,0x60
    0038 E0F0      LDI	R31,0
    0039 E010      LDI	R17,0
    003A 36E6      CPI	R30,0x66
    003B 07F1      CPC	R31,R17
    003C F011      BEQ	0x003F
    003D 9201      ST	R0,Z+
    003E CFFB      RJMP	0x003A
    003F 8300      STD	Z+0,R16
    0040 E5EC      LDI	R30,0x5C
    0041 E0F0      LDI	R31,0
    0042 E6A0      LDI	R26,0x60
    0043 E0B0      LDI	R27,0
    0044 E010      LDI	R17,0
    0045 35EC      CPI	R30,0x5C
    0046 07F1      CPC	R31,R17
    0047 F021      BEQ	0x004C
    0048 95C8      LPM
    0049 9631      ADIW	R30,1
    004A 920D      ST	R0,X+
    004B CFF9      RJMP	0x0045
    004C 940E0134  CALL	_main
_exit:
    004E CFFF      RJMP	_exit
_delay50us:
  j                    --> R20
  t                    --> R16
    004F 940E023C  CALL	push_gset1
FILE: E:\ICCAVR_H\CmmICC.H
(0001) /*********************************************************************
(0002) 	微 雪 电 子   WaveShare   http://www.waveShare.net            	
(0003) 		                                                        
(0004) 目    的:   建立ICCAVR的底层库函数,增加各类补丁,方便系统程序移植
(0005) 	
(0006) 目标系统:   基于任何兼容C51的微处理器
(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)     uint8 dataElem[6];
(0034) ----------------------------------------------------------------------
(0035) 对外函数说明:
(0036)     void delay50us(uint16 t);               //50us延时
(0037)     void delay50ms(uint16 t);               //50ms延时
(0038)     void speaData(ulong D,uint8 C);			//数据拆字
(0039)     uint8 changeDToH(uint8 dec);            //十进制强制转换为十六进制
(0040)     uint8 converseDToH(uint8 dec);          //十进制化为十六进制
(0041)     uint8 changeHToD(uint8 hex);            //十六进制强制转换为十进制
(0042)     uint8 converseHToD(uint8 hex);          //十六进制化为十进制
(0043) ----------------------------------------------------------------------
(0044) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0045) 
(0046) #ifndef CmmICC_H
(0047) #define CmmICC_H
(0048) 
(0049) #include <macros.h>
(0050) #include <stdio.h>
(0051) #include <math.h>
(0052) #include <string.h>
(0053) 
(0054) /* 兼容一般程序员的常用写法 */
(0055) typedef unsigned char	uchar;
(0056) typedef unsigned int	uint;
(0057) typedef unsigned long	ulong;
(0058) typedef signed char		schar;
(0059) typedef signed int		sint;
(0060) typedef signed long		slong;
(0061) 
(0062) /* 为方便移植,建议使用下面写法 */
(0063) typedef unsigned char	uint8;
(0064) typedef unsigned int	uint16;
(0065) typedef unsigned long   uint32;
(0066) typedef signed  char	sint8;
(0067) typedef signed	int		sint16;
(0068) typedef signed	long	sint32;
(0069) //typedef signed  char	int8;
(0070) //typedef signed  int	int16;
(0071) //typedef signed  long	int32;
(0072) 
(0073) /* 下面写法一般不推荐 */
(0074) //typedef unsigned char ubyte;
(0075) //typedef unsigned int	uword;
(0076) //typedef unsigned long udword;
(0077) //typedef signed   char	sbyte;
(0078) //typedef signed   int	sword;
(0079) //typedef signed   long	sdword;
(0080) 
(0081) /* 各程序员一般定义的默认值 */
(0082) //#define TRUE   		1
(0083) //#define FALSE  		0
(0084) //#define YES   		1
(0085) //#define NO  			0
(0086) //#define ON			1
(0087) //#define OFF			0
(0088) //#define ENABLE   		1
(0089) //#define DISABLE  		0
(0090) //#define CRR			1
(0091) //#define ERR			0
(0092) //#define RIGHT			1
(0093) //#define WRONG			0
(0094) //#define SUCCESS		1
(0095) //#define FAILURE		0
(0096) 
(0097) /* 为减少常用操作需要使用的RAM,可考虑使用下面的define */
(0098) //#define _CALLOC(a)	((a *)calloc(n,sizeof(a)))
(0099) //#define _MALLOC(a)	((a *)malloc(sizeof(a)))
(0100) //
(0101) //#define _MIN(a,b)		((a) < (b) ? (a) : (b))
(0102) //#define _MAX(a,b)		((a) > (b) ? (a) : (b))
(0103) //
(0104) //#define _EXCHANGE(a,b)	{int t; t=a; a=b; b=t;}
(0105) 
(0106) /*--------------------------------------------------------------------
(0107) 函数全称:50us 延时
(0108) 函数功能:
(0109) 注意事项:基于7.3728M晶振,i<70
(0110) 提示说明:调用Delay50us(20),得到1ms延时
(0111) 输    入:	
(0112) 返    回:无 
(0113) --------------------------------------------------------------------*/
(0114) void delay50us(sint16 t)
(0115) {
(0116)     uint8 j;		
(0117)     for(;t>0;t--)			
    0051 C007      RJMP	0x0059
(0118)         for(j=0;j<70;j++)	
    0052 2744      CLR	R20
    0053 C001      RJMP	0x0055
    0054 9543      INC	R20
    0055 3446      CPI	R20,0x46
    0056 F3E8      BCS	0x0054
    0057 5001      SUBI	R16,1
    0058 4010      SBCI	R17,0
    0059 2422      CLR	R2
    005A 2433      CLR	R3
    005B 1620      CP	R2,R16
    005C 0631      CPC	R3,R17
    005D F3A4      BLT	0x0052
(0119)             ;
(0120) }
    005E 940E023F  CALL	pop_gset1
    0060 9508      RET
_delay50ms:
  i                    --> R20
  t                    --> R16
    0061 940E023C  CALL	push_gset1
(0121) /*--------------------------------------------------------------------
(0122) 函数全称:50ms 延时
(0123) 函数功能:
(0124) 注意事项:基于7.3728M晶振,i<52642
(0125) 提示说明:调用delay50ms(20),得到1s延时 
(0126) 输    入:
(0127) 返    回:无
(0128) --------------------------------------------------------------------*/
(0129) void delay50ms(sint16 t)
(0130) {
(0131) 	uint16 i; 
(0132) 	for(;t>0;t--)
    0063 C00B      RJMP	0x006F
(0133) 		for(i=0;i<52642;i++)	
    0064 2744      CLR	R20
    0065 2755      CLR	R21
    0066 C002      RJMP	0x0069
    0067 5F4F      SUBI	R20,0xFF
    0068 4F5F      SBCI	R21,0xFF
    0069 3A42      CPI	R20,0xA2
    006A ECED      LDI	R30,0xCD
    006B 075E      CPC	R21,R30
    006C F3D0      BCS	0x0067
    006D 5001      SUBI	R16,1
    006E 4010      SBCI	R17,0
    006F 2422      CLR	R2
    0070 2433      CLR	R3
    0071 1620      CP	R2,R16
    0072 0631      CPC	R3,R17
    0073 F384      BLT	0x0064
(0134) 			;								 
(0135) }
    0074 940E023F  CALL	pop_gset1
    0076 9508      RET
_speaData:
  y                    --> Y+4
  j                    --> Y+0
  i                    --> R10
  C                    --> R12
  D                    --> Y+16
    0077 940E017B  CALL	push_arg4
    0079 940E025B  CALL	push_gset4
    007B 9728      SBIW	R28,0x8
    007C 88CC      LDD	R12,Y+20
(0136) /*--------------------------------------------------------------------
(0137) 函数全称:拆字
(0138) 函数功能:
(0139) 注意事项:D<=999999,C<=6
(0140) 提示说明:调用speaData(12,2),得到dataElem[0]=2、dataElem[0]=1
(0141) 输    入:
(0142) 返    回:无
(0143) --------------------------------------------------------------------*/
(0144) uint8 dataElem[6];
(0145) void speaData(ulong D,uint8 C)
(0146) {
(0147)     uint8 i;
(0148)     ulong j,y;
(0149)     for(i=0,j=1;i<C;i++)               
    007D 24AA      CLR	R10
    007E E041      LDI	R20,1
    007F E050      LDI	R21,0
    0080 E060      LDI	R22,0
    0081 E070      LDI	R23,0
    0082 01FE      MOVW	R30,R28
    0083 8340      STD	Z+0,R20
    0084 8351      STD	Z+1,R21
    0085 8362      STD	Z+2,R22
    0086 8373      STD	Z+3,R23
    0087 C046      RJMP	0x00CE
(0150)     {
(0151)         y=D/j;           
    0088 01FE      MOVW	R30,R28
    0089 8020      LDD	R2,Z+0
    008A 8031      LDD	R3,Z+1
    008B 8042      LDD	R4,Z+2
    008C 8053      LDD	R5,Z+3
    008D 01FE      MOVW	R30,R28
    008E 8860      LDD	R6,Z+16
    008F 8871      LDD	R7,Z+17
    0090 8882      LDD	R8,Z+18
    0091 8893      LDD	R9,Z+19
    0092 925A      ST	R5,-Y
    0093 924A      ST	R4,-Y
    0094 923A      ST	R3,-Y
    0095 922A      ST	R2,-Y
    0096 0183      MOVW	R16,R6
    0097 0194      MOVW	R18,R8
    0098 940E0180  CALL	div32u
    009A 01FE      MOVW	R30,R28
    009B 8304      STD	Z+4,R16
    009C 8315      STD	Z+5,R17
    009D 8326      STD	Z+6,R18
    009E 8337      STD	Z+7,R19
(0152)         dataElem[i]=y%10;
    009F E04A      LDI	R20,0xA
    00A0 E050      LDI	R21,0
    00A1 E060      LDI	R22,0
    00A2 E070      LDI	R23,0
    00A3 01FE      MOVW	R30,R28
    00A4 8024      LDD	R2,Z+4
    00A5 8035      LDD	R3,Z+5
    00A6 8046      LDD	R4,Z+6
    00A7 8057      LDD	R5,Z+7
    00A8 937A      ST	R23,-Y
    00A9 936A      ST	R22,-Y
    00AA 935A      ST	R21,-Y
    00AB 934A      ST	R20,-Y
    00AC 0181      MOVW	R16,R2
    00AD 0192      MOVW	R18,R4
    00AE 940E0182  CALL	mod32u
    00B0 E680      LDI	R24,0x60
    00B1 E090      LDI	R25,0
    00B2 2DEA      MOV	R30,R10
    00B3 27FF      CLR	R31
    00B4 0FE8      ADD	R30,R24
    00B5 1FF9      ADC	R31,R25
    00B6 8300      STD	Z+0,R16
(0153)         j*=10;
    00B7 01FE      MOVW	R30,R28
    00B8 8020      LDD	R2,Z+0
    00B9 8031      LDD	R3,Z+1
    00BA 8042      LDD	R4,Z+2
    00BB 8053      LDD	R5,Z+3
    00BC E04A      LDI	R20,0xA
    00BD E050      LDI	R21,0
    00BE E060      LDI	R22,0
    00BF E070      LDI	R23,0
    00C0 925A      ST	R5,-Y
    00C1 924A      ST	R4,-Y
    00C2 923A      ST	R3,-Y
    00C3 922A      ST	R2,-Y
    00C4 018A      MOVW	R16,R20
    00C5 019B      MOVW	R18,R22
    00C6 940E0209  CALL	empy32u
    00C8 01FE      MOVW	R30,R28
    00C9 8300      STD	Z+0,R16
    00CA 8311      STD	Z+1,R17
    00CB 8322      STD	Z+2,R18
    00CC 8333      STD	Z+3,R19
    00CD 94A3      INC	R10
    00CE 14AC      CP	R10,R12
    00CF F408      BCC	0x00D1
    00D0 CFB7      RJMP	0x0088
(0154)     }
(0155) }
    00D1 9628      ADIW	R28,0x8
    00D2 940E0239  CALL	pop_gset4
    00D4 9624      ADIW	R28,4
    00D5 9508      RET
_changeDToH:
  hex                  --> R20

⌨️ 快捷键说明

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