在KEIL 中,对于单片机所使用的头文件,除了reg51 reg52以外,还有一些从各芯片制商的官网下载与reg51,reg52功能类似的头文件,需了解透外,还要对各类型单片机均可通用且相当有用的的头文件,做相应的了解。因为,内部所包含的函数与宏定义,可以及大的方便我们编写应用程序1字符函数 ctype.h 1 extern bit isalpha(char); 功能:检查参数字符是否为英文字母,是则返回1 2 extern bit isalnum(char) 功能:检查字符是否为英文字母或数字字符,是则返回1 3 extern bit iscntrl(char) 功能:检查参数值是否在0x00~0x1f 之间或等于0x7f,是则返回1 4 extern bit isdigit(char) 功能: 检查参数是否为数字字符,是则返回1 5 extern bit isgraph(char) 功能: 检查参数值是否为可打印字符,是则返回1,可打印字符为0x21~0x7e 6 extern bit isprint(char) 功能:除了与isgraph相同之外,还接受空格符0x20 7 extern bit ispunct(char) 功能:不做介绍。 8 extern bit islower(char) 功能:检查参数字符的值是否为小写英文字母,是则返回1 9 extern bit isupper(char) 功能:检查参数字符的值是否为大写英文字母,是则返回1 10 extern bit isspace(char) 功能:检查字符是否为下列之一,空格,制表符,回车,换行,垂直制表符和送纸。如果为真则返回1 11 extern bit isxdigit(char) 功能:检查参数字符是否为16进制数字字符,是则返回1 12 extern char toint(char) 功能:将ASCII字符0~9 a~f(大小写无关)转换成对应的16进制数字, 返回值00H~0FH 13 extern char tolower(char) 功能:将大写字符转换成小写形式,如字符变量不在A~Z之间,则不作转换而直接返回该字符 14 extern char toupper(char) 功能:将小写字符转换成大写形式,如字符变量不在a~z之间,则不作转换而直接返回该字符 15 define toascii(c) ((c)&0x7f) 功能:该宏将任何整形数值缩小到有效的ASCII范围之内,它将变量和0x7f相与从而去掉第7位以上的所有数位 16 #define tolower(c) (c-‘A’+’a’) 功能:该宏将字符与常数0x20 逐位相或 17 #define toupper(c) ((c)-‘a’+’A’) 功能:该宏将字符与常数0xdf 逐位相与 2数学函数 math.h extern int abs (int val); extern char cabs (char val); extern long labs (long val); extern float fabs (float val); 功能:返回绝对值。上面四个函数,除了形参和返回值不一样之外, 其它功能完全相同。 extern float exp (float val); extern float log (float val); extern float log10 (float val); 功能: exp 返回eval log 返回 val 的自然对数 log10 返回 以10为底,val的对数 extern float sqrt (float val); 功能: 返回val的正平方根 extern int rand(); extern void srand(int n); 功能: rand返回一个0到32767之间的伪随机数,srand用来将随机数发生器初始化成一个已知的(期望)值。 Keil uVision3中的math.h库中,不包含此函数。 extern float sin (float val); extern float cos (float val); extern float tan (float val); 功能: 返回val的正弦,余弦,正切值。val为弧度 fabs(var) <=65535 extern float asin (float val); extern float acos (float val); extern float atan (float val); extern float atan2 (float y, float x); 功能: asin 返回val的反正弦值。acos 返回val的反余弦值。 atan 返回val的反正切值。 asin atan acos的值域均为 -π/2~+π/2 atan2返回x/y,的反正切值,其值域为-π~+π extern float sinh (float val); extern float cosh (float val); extern float tanh (float val); 功能:cosh返回var的双曲余弦值,sinh返回var的双曲正弦值, tanh返回var的双曲正切值。 extern float ceil (float val); 功能: 向上取整,返回一个大于val的最小整数。 extern float floor (float val); 功能: 向下取整,返回一个小于val的最大整数。 extern float pow (float x, float y); 功能: 计算计算xy的值。当(x=0,y<=0)或(x<0.y不是整数)时会发生错误。 extern void fpsave(struct FPBUF *p) extern void fprestore(struct FPBUF *p) 功能:fpsave 保存浮点了程序的状态,fprestore恢复浮点子程序的原始状态,当中断程序中需要执行浮点运算时,这两个函数是很有用的。 注: Keil uVision3中的math.h库中,不包含此函数。 3绝对地址访问 absacc.h #define CBYTE ((unsigned char volatile code *) 0) #define DBYTE ((unsigned char volatile data *) 0) #define PBYTE ((unsigned char volatile pdata *) 0) #define XBYTE ((unsigned char volatile xdata *) 0) 功能:CBYTE 寻址 CODE区 DBYTE 寻址 DATA区 PBYTE 寻址 XDATA(低256)区 XBYTE 寻址 XDATA区 例: 如下指令在对外部存储器区域访问地址0x1000 xvar=XBYTE[0x1000]; XBYTE[0x1000]=20; #define CWORD ((unsigned int volatile code *) 0) #define DWORD ((unsigned int volatile data *) 0) #define PWORD ((unsigned int volatile pdata *) 0) #define XWORD ((unsigned int volatile xdata *) 0) 功能:与前面的一个宏相似,只是它们指定的数据类型为unsigned int .。 通过灵活运用不同的数据类型,所有的8051地址空间都是可以进行访问。 如 DWORD[0x0004]=0x12F8; 即内部数据存储器中(0x08)=0x12; (0x09)=0xF8 4 内部函数 intrins.h extern unsigned char _cror_ (unsigned char var, unsigned char n); extern unsigned int _iror_ (unsigned int var, unsigned char n); extern unsigned long _lror_ (unsigned long var, unsigned char n); 功能:将变量var 循环右移 n 位。 上三个函数的区别在于,参数及返回值的类型不同 extern unsigned char _crol_ (unsigned char var, unsigned char n); extern unsigned int _irol_ (unsigned int var, unsigned char n); extern unsigned long _lrol_ (unsigned long var, unsigned char n); 功能:将变量var 循环左移 n 位。 上三个函数的区别在于,参数及返回值的类型不同 例如: #include<intrins.h> void main() { unsigned int y; y=0x0ff0; y=_irol_(y,4); //y=0xff00 y=_iror_(y,4); //y=0x0ff0 } void _nop_(void); |
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |