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

📄 matrixkey.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
_speaData:
  y                    --> Y+4
  j                    --> Y+0
  i                    --> R10
  len                  --> R12
  dat                  --> Y+16
    004F 940E013F  CALL	push_arg4
    0051 940E0207  CALL	push_gset4
    0053 9728      SBIW	R28,0x8
    0054 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++)
    0055 24AA      CLR	R10
    0056 E041      LDI	R20,1
    0057 E050      LDI	R21,0
    0058 E060      LDI	R22,0
    0059 E070      LDI	R23,0
    005A 01FE      MOVW	R30,R28
    005B 8340      STD	Z+0,R20
    005C 8351      STD	Z+1,R21
    005D 8362      STD	Z+2,R22
    005E 8373      STD	Z+3,R23
    005F C046      RJMP	0x00A6
(0120)     {
(0121)         y=dat/j;
    0060 01FE      MOVW	R30,R28
    0061 8020      LDD	R2,Z+0
    0062 8031      LDD	R3,Z+1
    0063 8042      LDD	R4,Z+2
    0064 8053      LDD	R5,Z+3
    0065 01FE      MOVW	R30,R28
    0066 8860      LDD	R6,Z+16
    0067 8871      LDD	R7,Z+17
    0068 8882      LDD	R8,Z+18
    0069 8893      LDD	R9,Z+19
    006A 925A      ST	R5,-Y
    006B 924A      ST	R4,-Y
    006C 923A      ST	R3,-Y
    006D 922A      ST	R2,-Y
    006E 0183      MOVW	R16,R6
    006F 0194      MOVW	R18,R8
    0070 940E0144  CALL	div32u
    0072 01FE      MOVW	R30,R28
    0073 8304      STD	Z+4,R16
    0074 8315      STD	Z+5,R17
    0075 8326      STD	Z+6,R18
    0076 8337      STD	Z+7,R19
(0122)         dataElem[i]=y%10;
    0077 E04A      LDI	R20,0xA
    0078 E050      LDI	R21,0
    0079 E060      LDI	R22,0
    007A E070      LDI	R23,0
    007B 01FE      MOVW	R30,R28
    007C 8024      LDD	R2,Z+4
    007D 8035      LDD	R3,Z+5
    007E 8046      LDD	R4,Z+6
    007F 8057      LDD	R5,Z+7
    0080 937A      ST	R23,-Y
    0081 936A      ST	R22,-Y
    0082 935A      ST	R21,-Y
    0083 934A      ST	R20,-Y
    0084 0181      MOVW	R16,R2
    0085 0192      MOVW	R18,R4
    0086 940E0146  CALL	mod32u
    0088 E680      LDI	R24,0x60
    0089 E090      LDI	R25,0
    008A 2DEA      MOV	R30,R10
    008B 27FF      CLR	R31
    008C 0FE8      ADD	R30,R24
    008D 1FF9      ADC	R31,R25
    008E 8300      STD	Z+0,R16
(0123)         j*=10;
    008F 01FE      MOVW	R30,R28
    0090 8020      LDD	R2,Z+0
    0091 8031      LDD	R3,Z+1
    0092 8042      LDD	R4,Z+2
    0093 8053      LDD	R5,Z+3
    0094 E04A      LDI	R20,0xA
    0095 E050      LDI	R21,0
    0096 E060      LDI	R22,0
    0097 E070      LDI	R23,0
    0098 925A      ST	R5,-Y
    0099 924A      ST	R4,-Y
    009A 923A      ST	R3,-Y
    009B 922A      ST	R2,-Y
    009C 018A      MOVW	R16,R20
    009D 019B      MOVW	R18,R22
    009E 940E01B5  CALL	empy32s
    00A0 01FE      MOVW	R30,R28
    00A1 8300      STD	Z+0,R16
    00A2 8311      STD	Z+1,R17
    00A3 8322      STD	Z+2,R18
    00A4 8333      STD	Z+3,R19
    00A5 94A3      INC	R10
    00A6 14AC      CP	R10,R12
    00A7 F408      BCC	0x00A9
    00A8 CFB7      RJMP	0x0060
(0124)     }
(0125) }
    00A9 9628      ADIW	R28,0x8
    00AA 940E01E5  CALL	pop_gset4
    00AC 9624      ADIW	R28,4
    00AD 9508      RET
_delay50us:
  j                    --> R20
  t                    --> R16
    00AE 940E01E8  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")

⌨️ 快捷键说明

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