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

📄 type.h

📁 51中的系统2
💻 H
字号:

/***************************************************************************************
****************************************************************************************
* FILE		: type.h
* Description	: The general purpose macro and function
*			  
* Copyright (c) 2003~2007 by WANG SHAOWEI. All Rights Reserved.
* 
* History:
* Version		Name       		Date			Description
   1.0		Wang Shaowei	2003/07/16	Initial Version (MCU System)
   2.0		Wang Shaowei	2005/06/01	MS2
   3.0		Wang Shaowei	2007/03/11	MS3
   
****************************************************************************************
****************************************************************************************/


/******************************************************************************
说明:
一般基本上使用Keil-51提供的类型,如以下所示:
1:端口
	P0,P1,P2,P3
2:位端口
   	P0^X
   	P1^X
   	P2^X
   	P3^X
3:常用数据类型
data type 	|   length(bit)  |  length(byte)   |data range
bit 				1			...			0,1
unsigned char		8			1			0~255
signed char		8			1			-128~127
unsigned int		16			2			0~65535
signed int			16			2			-32768~32767
unsigned long		32			4			0~4294967295
signed long		32			4			-2147483648~2147483647
float				32			4			+-1.176E-38~+-3.40E+38(6位数字)
double			64			8			+-1.176E-38~+-3.40E+38(10位数字)
一般指针	24			3			储存空间0~65535

4:常用存储类型
data				直接寻址片内数据存储区,访问速度快(128字节)
bdata			可位寻址片内数据存储区,允许位与字节混和访问(16字节)
idata			间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节)
pdata			分页寻址片外数据区(256字节)由MOVX@R0或@R1访问
xdata			片外数据存储区(64K),由MOVX@DPTR访问
code				代码存储区(64K),由MOVC@DPTR访问

5:存储模式及说明
small 			参数及局部变量放入可直接寻址的片内存储类型是DATA,
				因为访问十分方便。另外所有对象,包括栈,都必须潜
				入片内RAM。栈长很关键,因为实际栈长依赖于不同的函
				数嵌套层数
				
compact			参数及局部变量放入分页片外存储区(最大256字节,默认
				的存储类型是pdata),通过寄存器R0和R1(@R0,R1)间接寻址,栈空
				间位于8051系统内部数据存储中。
				
large			参数及局部变量直接放入片外数据存储区(最大64k,默认
				存储类型为xdata)使用数据指针DPTR来进行寻址,用此数据
				指针进行访问效率较低,尤其是对两个或多个字节的变量
				这种数据类型的访问机制直接影响代码的长度,另一不方便
				之处在于这种数据指针不能对称操作。


二:Keil51自带的头文件keil51文档中的229页
1:absacc.h			绝对存储器访问宏
	1:CBYTE,		2:CWORD,	3:DBYTE,		4:DWORD,	5:FARRAY,	6:FCARRAY,	7:FVAR,	8:FCVAR,
	9:PBYTE,		10:PWORD,	11:XBYTE,	12:XWORD
	
2:assert.h
	1:assert

3:ctype.h
	1:isalnum,	2:isalpha,	3:iscntrl,		4:isdigit,		5:isgraph,	6:islower,	7:isprint,		8:ispunct,
	9:isspace,	10:isupper,	11:isxdigit,	12:toascii,	13:toint,		14:tolower,	15:_tolower,	16:toupper,
	17:_toupper
	
4:intrins.h
	1:_chkfloat,	2:_irol_,		3:_Iror_,		4:_crol_,		5:_iror_,		6:_nop_,		7:_cror_,		8:_Irol_,
	9:_testbit_
	
5:math.h
	1:abs,		2:exp		3:modf		4:acos		5:fabs		6:pow		7:asin		8:floor
	9:sin		10:atan		11:fmod		12sinh		13:atan2		14:fprestore	15:sqrt		16:cabs
	17:fpsave	18:tan		19:ceil		20:labs		21:tanh		22:cos		23:log		24:cosh
	25:log10

6:setjmp.h
	1:jmp_buf	2:setjmp		3:longjmp
	
7:stdarg.h
	1:va_arg		2:va_end		3:va_start	4:va_list

8:stddef.h
	1:offsetof		

9:stdio.h
	1:getchar		2:putchar		3:sscanf		4:_getkey	5:puts		6:ungetchar	7:gets	8:scanf
	9:vprintf		10:printf		11:sprintf		12:vsprintf	13:EOD

10:stdlib.h
	1:atof		2:init_menpool3:strtod		4atoi		5:malloc		6:strtol		7:atol	8:rand
	9:strtoul		10:calloc		11:realloc	12:free		13:srand
	
11:string.h	
	1:memccpy,	2:memchr,	3:memcmp,	4:memcpy,	5:memmove	6:memset	7:strcat	8:strchr
	9:strcmp		10:strcpy		11:strcspn	12:strlen   	13:strncat	14:strncmp	15:strncpy16:strpbrk
	17:strrpos	18:strrchr	19:strrpbrk	20:strrpos	21:strspn

三:语法
在C语言中嵌入汇编
#pragma asm
汇编语句
...
#pragma endasm

四:下面定义的按以下来使用,如:
U1, U8, U16, U32, S8, S16, S32这些大家比较熟悉的变量类型命名法来命名。
采用匈牙利命名法。



五:变量名,函数名统一化
1 :外部函数全部采用文件名加函数名的下划线联接结构,如
extern void key_check(void);	其中参数名采用有意义的短格式命名或带类型的数据名.
2:内部函数采用短格式,内部变量多字节的也采用短格式,单字节的用普通变量
i,j,k一般用于函数内部的循环计数器.


四:寄存器说明:
1	TCON:中断标志寄存器
	TF1(8F)		T1中断标志位
	TR1(8E)		T1启停位	
	TF0(8D)		T0中断标志位
	TR0(8C)		T0启停位
	IE1(8B)		~INT1中断标志位
	IT1(8A)		~INT1触发控制位0为电平触发,1为负边缘触发
	IE0(89)		~INT0中断标志位
	IT0(88)		~INT0触发控制位0为电平触发,1为负边缘触发

2	IE:中断寄存器
	EA(AF)		全部中断控制
	ET2(AD)		T2中断控制
	ES(AC)		串行口中断控制
	ET1(AB)		T1中断控制
	EX1(AA)		~INT1中断控制
	ET0(A9)		T0中断控制
	EX0(A8)		~INT0中断控制
******************************************************************************/


#ifndef _TYPE_H_
#define _TYPE_H_


#include "reg52x2.h"


#ifndef NULL
#define NULL ((void *) 0L)		/*Stdlib.h and String.h already include NULL */
#endif


//类型定义
typedef bit 			bool;
typedef unsigned char	byte;
typedef unsigned int 	word;
typedef unsigned long 	dword;

typedef bit 			U1;
typedef unsigned char	U8;
typedef unsigned int 	U16;
typedef unsigned long 	U32;

typedef char			S8;
typedef int 			S16;
typedef long 			S32;

typedef void (*Function)(void);

#define FUNC(u16Val)	(*(Function)u16Val)()


/*定义常量*/
#define TRUE			(U1)1
#define FALSE		(U1)0

#define ERROR		0xFF

#define DP51


#endif

⌨️ 快捷键说明

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