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

📄 ledindicator.lst

📁 ATmega16应用例子
💻 LST
📖 第 1 页 / 共 2 页
字号:
__text_start:
__start:
    0032 E5CF      LDI	R28,0x5F
    0033 E0D4      LDI	R29,4
    0034 BFCD      OUT	0x3D,R28
    0035 BFDE      OUT	0x3E,R29
    0036 51C0      SUBI	R28,0x10
    0037 40D0      SBCI	R29,0
    0038 EA0A      LDI	R16,0xAA
    0039 8308      STD	Y+0,R16
    003A 2400      CLR	R0
    003B E6E0      LDI	R30,0x60
    003C E0F0      LDI	R31,0
    003D E010      LDI	R17,0
    003E 36E6      CPI	R30,0x66
    003F 07F1      CPC	R31,R17
    0040 F011      BEQ	0x0043
    0041 9201      ST	R0,Z+
    0042 CFFB      RJMP	0x003E
    0043 8300      STD	Z+0,R16
    0044 E6E4      LDI	R30,0x64
    0045 E0F0      LDI	R31,0
    0046 E6A0      LDI	R26,0x60
    0047 E0B0      LDI	R27,0
    0048 E010      LDI	R17,0
    0049 36E4      CPI	R30,0x64
    004A 07F1      CPC	R31,R17
    004B F021      BEQ	0x0050
    004C 95C8      LPM
    004D 9631      ADIW	R30,1
    004E 920D      ST	R0,X+
    004F CFF9      RJMP	0x0049
    0050 940E00DA  CALL	_main
_exit:
    0052 CFFF      RJMP	_exit
_speaData:
  y                    --> Y+4
  j                    --> Y+0
  i                    --> R10
  len                  --> R12
  dat                  --> Y+16
    0053 940E00FE  CALL	push_arg4
    0055 940E01C6  CALL	push_gset4
    0057 9728      SBIW	R28,0x8
    0058 88CC      LDD	R12,Y+20
FILE: E:\ICC_H\SoftExt.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 SoftExt_H
(0041) #define SoftExt_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	uint8;
(0057) typedef unsigned int	uint16;
(0058) typedef unsigned long   uint32;
(0059) typedef signed  char	sint8;
(0060) typedef signed	int		sint16;
(0061) typedef signed	long	sint32;
(0062) typedef signed  char	int8;
(0063) typedef signed  int		int16;
(0064) typedef signed  long	int32;
(0065) 
(0066) /* 下面写法一般不推荐 */
(0067) //typedef unsigned char ubyte;
(0068) //typedef unsigned int	uword;
(0069) //typedef unsigned long udword;
(0070) //typedef signed   char	sbyte;
(0071) //typedef signed   int	sword;
(0072) //typedef signed   long	sdword;
(0073) 
(0074) /* 一般程序定义的默认值 */
(0075) //#define NULL			0
(0076) //#define EOF			-1
(0077) //#define TRUE   		1
(0078) //#define FALSE  		0
(0079) //#define YES   		1
(0080) //#define NO  			0
(0081) //#define ON			1
(0082) //#define OFF			0
(0083) //#define ENABLE   		1
(0084) //#define DISABLE		0
(0085) //#define CRR			1
(0086) //#define ERR			0
(0087) //#define RIGHT			1
(0088) //#define WRONG			0
(0089) //#define SUCCESS		1
(0090) //#define FAILURE		0
(0091) //#define PI			3.1415926	//3.1415926535897932
(0092) 
(0093) /* 如果你手头上的RAM实在很紧,可考虑下面的define哦~ */
(0094) //#define _CALLOC(a)		( (a *)calloc(n,sizeof(a)) )
(0095) //#define _MALLOC(a)		( (a *)malloc(sizeof(a)) )
(0096) //#define _MIN(a,b)			( (a) < (b) ? (a) : (b) )
(0097) //#define _MAX(a,b)			( (a) > (b) ? (a) : (b) )
(0098) //#define _EXCHANGE(a,b)	{ int t; t=a; a=b; b=t; }
(0099) //#define _TOLOWER(c)		( (c)+32 )
(0100) //#define _TOUPPER(c)		( (c)-32 )
(0101) 
(0102) //#ifndef BIT
(0103) //#define BIT(x)	( 1<<(x) )
(0104) //#endif
(0105) 
(0106) /*--------------------------------------------------------------------
(0107) 函数全称:数据拆字
(0108) 函数功能:自己看~
(0109) 注意事项:D<=999999,C<=6
(0110) 提示说明:调用speaData(12,2),得到dataElem[0]=2,dataElem[1]=1
(0111) 输    入:
(0112) 返    回:无
(0113) --------------------------------------------------------------------*/
(0114) uint8 dataElem[6];
(0115) void speaData(uint32 dat,sint8 len)
(0116) {
(0117)     uint8 i;
(0118)     uint32 j,y;
(0119)     for(i=0,j=1;i<len;i++)
    0059 24AA      CLR	R10
    005A E041      LDI	R20,1
    005B E050      LDI	R21,0
    005C E060      LDI	R22,0
    005D E070      LDI	R23,0
    005E 01FE      MOVW	R30,R28
    005F 8340      STD	Z+0,R20
    0060 8351      STD	Z+1,R21
    0061 8362      STD	Z+2,R22
    0062 8373      STD	Z+3,R23
    0063 C046      RJMP	0x00AA
(0120)     {
(0121)         y=dat/j;
    0064 01FE      MOVW	R30,R28
    0065 8020      LDD	R2,Z+0
    0066 8031      LDD	R3,Z+1
    0067 8042      LDD	R4,Z+2
    0068 8053      LDD	R5,Z+3
    0069 01FE      MOVW	R30,R28
    006A 8860      LDD	R6,Z+16
    006B 8871      LDD	R7,Z+17
    006C 8882      LDD	R8,Z+18
    006D 8893      LDD	R9,Z+19
    006E 925A      ST	R5,-Y
    006F 924A      ST	R4,-Y
    0070 923A      ST	R3,-Y
    0071 922A      ST	R2,-Y
    0072 0183      MOVW	R16,R6
    0073 0194      MOVW	R18,R8
    0074 940E0103  CALL	div32u
    0076 01FE      MOVW	R30,R28
    0077 8304      STD	Z+4,R16
    0078 8315      STD	Z+5,R17
    0079 8326      STD	Z+6,R18
    007A 8337      STD	Z+7,R19
(0122)         dataElem[i]=y%10;
    007B E04A      LDI	R20,0xA
    007C E050      LDI	R21,0
    007D E060      LDI	R22,0
    007E E070      LDI	R23,0
    007F 01FE      MOVW	R30,R28
    0080 8024      LDD	R2,Z+4
    0081 8035      LDD	R3,Z+5
    0082 8046      LDD	R4,Z+6
    0083 8057      LDD	R5,Z+7
    0084 937A      ST	R23,-Y
    0085 936A      ST	R22,-Y
    0086 935A      ST	R21,-Y
    0087 934A      ST	R20,-Y
    0088 0181      MOVW	R16,R2
    0089 0192      MOVW	R18,R4
    008A 940E0105  CALL	mod32u
    008C E680      LDI	R24,0x60
    008D E090      LDI	R25,0
    008E 2DEA      MOV	R30,R10
    008F 27FF      CLR	R31
    0090 0FE8      ADD	R30,R24
    0091 1FF9      ADC	R31,R25
    0092 8300      STD	Z+0,R16
(0123)         j*=10;
    0093 01FE      MOVW	R30,R28
    0094 8020      LDD	R2,Z+0
    0095 8031      LDD	R3,Z+1
    0096 8042      LDD	R4,Z+2
    0097 8053      LDD	R5,Z+3
    0098 E04A      LDI	R20,0xA
    0099 E050      LDI	R21,0
    009A E060      LDI	R22,0
    009B E070      LDI	R23,0
    009C 925A      ST	R5,-Y
    009D 924A      ST	R4,-Y
    009E 923A      ST	R3,-Y
    009F 922A      ST	R2,-Y
    00A0 018A      MOVW	R16,R20
    00A1 019B      MOVW	R18,R22
    00A2 940E0174  CALL	empy32s
    00A4 01FE      MOVW	R30,R28
    00A5 8300      STD	Z+0,R16
    00A6 8311      STD	Z+1,R17
    00A7 8322      STD	Z+2,R18
    00A8 8333      STD	Z+3,R19
    00A9 94A3      INC	R10
    00AA 14AC      CP	R10,R12
    00AB F408      BCC	0x00AD
    00AC CFB7      RJMP	0x0064
(0124)     }
(0125) }
    00AD 9628      ADIW	R28,0x8
    00AE 940E01A4  CALL	pop_gset4
    00B0 9624      ADIW	R28,4
    00B1 9508      RET
_delay50us:
  j                    --> R20
  t                    --> R16
    00B2 940E01A7  CALL	push_gset1
FILE: E:\ICC_H\HardExt.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 HardExt_H
(0041) #define HardExt_H
(0042) 
(0043) #include <math.h>
(0044) #include <string.h>
(0045) #include <stdio.h>
(0046) #include <macros.h>
(0047) #include <eeprom.h>
(0048) //#include <wdt.h>
(0049) #include "E:\ICC_H\I2C.H"	//i2c即AVR的"twi"
(0050) 
(0051) /* hard configs */
(0052) #ifndef flash
(0053) 	#define flash	const
(0054) #endif
(0055) 
(0056) #ifndef code
(0057) 	#define code	const
(0058) #endif
(0059) 
(0060) #ifndef NOP
(0061) 	#define NOP()	asm("nop")
(0062) #endif
(0063) 
(0064) /* io configs */
(0065) #define sbi(io,bit)		(  io |=  (1<<bit) )	//example: sbi(PORTA,0);sbi(DDRA,0);
(0066) #define cbi(io,bit)		(  io &= ~(1<<bit) )	//example: cbi(PORTA,0);cbi(DDRA,0);
(0067) #define gbi(pin ,bit)	( pin &   (1<<bit) )	//example: gbi(PINA,0);
(0068) 
(0069) /* interrupt configs */
(0070) #define DIS_INT  asm("sei")
(0071) #define EN_INT   asm("cli")
(0072) 
(0073) /* wdt configs */
(0074) #define WDT()    asm("wdr")
(0075) 
(0076) /* bit operation */
(0077) //#ifndef BIT
(0078) //#define BIT(x)	( 1<<(x) )
(0079) //#endif
(0080) 
(0081) /* USART configs for 4 Mhz crystal */
(0082) //#define BAUD9600			25
(0083) //#define BAUD19000			12
(0084) //#define UART_TRAN_ON()	UCR |=  0x08
(0085) //#define UART_TRAN_OFF()	UCR &= ~0x08
(0086) //#define UART_RCV_ON()		UCR |=  0x10
(0087) //#define UART_RCV_OFF()	UCR &= ~0x10
(0088) 
(0089) /*--------------------------------------------------------------------
(0090) 函数全称:50us 延时
(0091) 函数功能:当然是 50us延时 啦
(0092) 注意事项:基于7.3728M晶振,稍微有点误差
(0093) 提示说明:调用Delay50us(20),得到1ms延时
(0094) 输    入:	
(0095) 返    回:无 
(0096) --------------------------------------------------------------------*/
(0097) void delay50us(sint16 t)
(0098) {
(0099)     uint8 j;		
(0100)     for(;t>0;t--)			
    00B4 C007      RJMP	0x00BC
(0101)         for(j=0;j<70;j++)	
    00B5 2744      CLR	R20
    00B6 C001      RJMP	0x00B8
    00B7 9543      INC	R20
    00B8 3446      CPI	R20,0x46
    00B9 F3E8      BCS	0x00B7
    00BA 5001      SUBI	R16,1
    00BB 4010      SBCI	R17,0
    00BC 2422      CLR	R2
    00BD 2433      CLR	R3
    00BE 1620      CP	R2,R16
    00BF 0631      CPC	R3,R17
    00C0 F3A4      BLT	0x00B5
(0102)             ;
(0103) }
    00C1 940E01AA  CALL	pop_gset1
    00C3 9508      RET
_delay50ms:
  i                    --> R20
  t                    --> R16
    00C4 940E01A7  CALL	push_gset1
(0104) /*--------------------------------------------------------------------
(0105) 函数全称:50ms 延时
(0106) 函数功能:当然是 50ms延时 啦
(0107) 注意事项:基于7.3728M晶振,稍微有点误差
(0108) 提示说明:调用delay50ms(20),得到1s延时 
(0109) 输    入:
(0110) 返    回:无
(0111) --------------------------------------------------------------------*/
(0112) void delay50ms(sint16 t)
(0113) {
(0114) 	uint16 i; 
(0115) 	for(;t>0;t--)
    00C6 C00B      RJMP	0x00D2
(0116) 		for(i=0;i<52642;i++)
    00C7 2744      CLR	R20
    00C8 2755      CLR	R21
    00C9 C002      RJMP	0x00CC
    00CA 5F4F      SUBI	R20,0xFF
    00CB 4F5F      SBCI	R21,0xFF
    00CC 3A42      CPI	R20,0xA2
    00CD ECED      LDI	R30,0xCD
    00CE 075E      CPC	R21,R30
    00CF F3D0      BCS	0x00CA
    00D0 5001      SUBI	R16,1
    00D1 4010      SBCI	R17,0
    00D2 2422      CLR	R2

⌨️ 快捷键说明

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