51单片机实战教程之C语言基础(十 Keil C51函数库)

48 篇文章 19 订阅

         Keil C51 自带部分基础函数库。要使用,就必须先包含其对应的头文件。格式:

 

       库函数是比较多的,要全部记住是比较困难的,也没必要全部记住它。要用记不住的库函数,可以打开库函数查看。将鼠标光标移动到包含的头文件上,点击鼠标右键,在弹出菜单中点击打开对应头文件即可。示例:

 下面分比别列出以上头文件内容,供参考。

#ifndef __MATH_H__
#define __MATH_H__

#if defined __CX2__ && (__CX2__ >= 558 || __CX2__ == 556 && __CX2_MINOR__ >= 207)
#ifndef HUGE_VAL
#define HUGE_VAL __inf__
#endif // HUGE_VAL

#ifndef NAN
#define NAN __nan__
#endif // NAN

#pragma SAVE
#pragma FUNCTIONS(STATIC)
/* intrinsic functions are reentrant, but need static attribute */
extern int    abs  (int   val); //计算并返回int val的绝对值
#pragma RESTORE
#endif

#pragma SAVE
#pragma REGPARMS
#if !defined (__CX2__)
extern char  cabs  (char  val);             //计算并返回char val的绝对值
extern int    abs  (int   val);             //计算并返回int val的绝对值
extern long  labs  (long  val);             //计算并返回long val的绝对值
#endif

extern float fabs  (float val);             //计算并返回float val的绝对值
extern float sqrt  (float val);             //计算并返回float val的正平方根
extern float exp   (float val);             //算并返回浮点数float val的指数函数
extern float log   (float val);             //计算并返回浮点数float val的自然对数
extern float log10 (float val);             //计算并返回浮点数val以10为底的对数
extern float sin   (float val);             //计算并返回float val的正弦值,x是弧度值
extern float cos   (float val);             //计算并返回float val的余弦值,x是弧度值
extern float tan   (float val);             //计算并返回float val的正切值,x是弧度值
extern float asin  (float val);             //计算并返回float val的反正弦值,返回值为弧度值
extern float acos  (float val);             //计算并返回float val的反余弦值,返回值为弧度值
extern float atan  (float val);             //计算并返回float val的反正切值,返回值为弧度值
extern float sinh  (float val);             //计算并返回float val的双曲正弦值
extern float cosh  (float val);             //计算并返回float val的双曲余弦值
extern float tanh  (float val);             //计算并返回float val的双曲正切值
extern float atan2 (float y, float x);      //计算并返回y/x的反正切值,值域为-π~+π

extern float ceil  (float val);             //计算并返回一个不小于float val的最小整数,即向上取整
extern float floor (float val);             //计算并返回一个不大于float val的最小整数
extern float modf  (float val, float *n);   //将浮点数x分成整数和小数部分,两者都含有与x相同的符号,整数部分放入*ip,小数部分作为返回值
extern float fmod  (float x, float y);      //浮点数求余,返回x/y的余数
extern float pow   (float x, float y);      //返回x的y次方的值

#if defined (__CX2__)
extern float frexp (float val, int *exp);
extern float ldexp (float val, int exp);
#endif

#pragma RESTORE

#endif
/*--------------------------------------------------------------------------
STDLIB.H

Standard functions.
Copyright (c) 1988-2008 Keil Elektronik GmbH and Keil Software, Inc.
Copyright (c) 2008-2016 ARM Germany GmbH
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __STDLIB_H__
#define __STDLIB_H__

#ifndef _SIZE_T
 #define _SIZE_T
 typedef unsigned int size_t;
#endif

#ifndef NULL
 #define NULL ((void *)0)
#endif

#ifndef _WCHAR_T_DEFINED_
#define _WCHAR_T_DEFINED_
typedef char wchar_t;
#endif

#if defined (__CX2__)
#ifndef _DIV_T_DEFINED
typedef struct _div_t {
        int quot;
        int rem;
} div_t;
typedef struct _ldiv_t {
        long quot;
        long rem;
} ldiv_t;
#define _DIV_T_DEFINED
#endif // _DIV_T_DEFINED
#endif // __CX2__

#ifndef RAND_MAX
 #define RAND_MAX  32767u
#endif

#if defined (__CX2__)
#pragma SAVE
#pragma FUNCTIONS(STATIC)
/* intrinsic functions are reentrant, but need static attribute */
extern int    abs  (int   val);
#pragma RESTORE
#endif // __CX2__

#pragma SAVE
#pragma REGPARMS

extern char   cabs (char  val);             //计算并返回char val的绝对值
#if !defined (__CX2__)
extern int    abs  (int   val);             //计算并返回int val的绝对值
#endif // __CX2__
extern long   labs (long  val);             //计算并返回long val的绝对值

extern float  atof (const char *s1);        //字符数组(字符串)转浮点数,返回浮点数
extern long   atol (const char *s1);        //字符数组(字符串)转长整型,返回长整型
extern int    atoi (const char *s1);        //字符数组(字符串)转长char型,返回char型
extern int    rand (void);                  //生成随机整数
extern void   srand (unsigned int seed);    //用来将随机数发生器初始化成一个已知(或期望)值

#ifdef _DIV_T_DEFINED
extern div_t  __div (int numer, int denom);  
#define div(numer,denom)  __div((numer),(denom));
extern ldiv_t ldiv (long numer, long denom);
#endif // _DIV_T_DEFINED

extern float         strtod  (const char *nptr, char **endptr);                       //将字符串s转换为一个浮点型数据并返回,字符串前面的空格、/、tab符被忽略
extern long          strtol  (const char *nptr, char **endptr, unsigned char base);   //将字符串s转换为一个long型数据并返回,字符串前面的空格、/、tab符被忽略
extern unsigned long strtoul (const char *nptr, char **endptr, unsigned char base);   //将字符串s转换为一个unsigned long型数据并返回,溢出时则返回ULONG_MAX。字符串前面的空格、/、tab符被忽略

#define _MALLOC_MEM_	xdata

extern void init_mempool          (void _MALLOC_MEM_ *p, size_t size);
extern void _MALLOC_MEM_ *malloc  (size_t size);
extern void free                  (void _MALLOC_MEM_ *p);
extern void _MALLOC_MEM_ *realloc (void _MALLOC_MEM_ *p, size_t size);
extern void _MALLOC_MEM_ *calloc  (size_t nmemb, size_t size);

#if defined (__CX2__)
extern void abort(void);
#endif // __CX2__

#pragma RESTORE

#endif // __STDLIB_H__

#ifndef EOF
 #define EOF -1
#endif

#ifndef NULL
 #define NULL ((void *) 0)
#endif

#ifndef _SIZE_T
 #define _SIZE_T
 typedef unsigned int size_t;
#endif

#pragma SAVE
#pragma REGPARMS
extern char _getkey (void);
extern char getchar (void);
extern char ungetchar (char);
extern char putchar (char);
extern int printf   (const char *, ...);
extern int sprintf  (char *, const char *, ...);
extern int vprintf  (const char *, char *);
extern int vsprintf (char *, const char *, char *);
extern char *gets (char *, int n);
extern int scanf (const char *, ...);
extern int sscanf (char *, const char *, ...);
extern int puts (const char *);

#pragma RESTORE

#endif
/*--------------------------------------------------------------------------
CTYPE.H

Prototypes for character functions.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __CTYPE_H__
#define __CTYPE_H__

#pragma SAVE
#pragma REGPARMS
extern bit isalpha (unsigned char);
extern bit isalnum (unsigned char);
extern bit iscntrl (unsigned char);
extern bit isdigit (unsigned char);
extern bit isgraph (unsigned char);
extern bit isprint (unsigned char);
extern bit ispunct (unsigned char);
extern bit islower (unsigned char);
extern bit isupper (unsigned char);
extern bit isspace (unsigned char);
extern bit isxdigit (unsigned char);
extern unsigned char tolower (unsigned char);
extern unsigned char toupper (unsigned char);
extern unsigned char toint (unsigned char);

#define _tolower(c) ( (c)-'A'+'a' )
#define _toupper(c) ( (c)-'a'+'A' )
#define toascii(c)  ( (c) & 0x7F )
#pragma RESTORE

/*--------------------------------------------------------------------------
STRING.H

String functions.
Copyright (c) 1988-2008 Keil Elektronik GmbH and Keil Software, Inc.
Copyright (c) 2008-2016 ARM Germany GmbH
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __STRING_H__
#define __STRING_H__

#ifndef _SIZE_T
 #define _SIZE_T
 typedef unsigned int size_t;
#endif

#ifndef NULL
 #define NULL ((void *)0)
#endif

#pragma SAVE
#pragma REGPARMS
extern char  *strcat  (char *s1, const char *s2);
extern char  *strncat (char *s1, const char *s2, size_t n);

extern char   strcmp  (const char *s1, const char *s2);
extern char   strncmp (const char *s1, const char *s2, size_t n);

extern char  *strcpy  (char *s1, const char *s2);
extern char  *strncpy (char *s1, const char *s2, size_t n);

extern size_t strlen  (const char *);

extern char  *strchr  (const char *s, char c);
extern int    strpos  (const char *s, char c);
extern char  *strrchr (const char *s, char c);
extern int    strrpos (const char *s, char c);

extern size_t strspn  (const char *s, const char *set);
extern size_t strcspn (const char *s, const char *set);
extern char  *strpbrk (const char *s, const char *set);
extern char  *strrpbrk(const char *s, const char *set);
extern char  *strstr  (const char *s, const char *sub);
extern char  *strtok  (char *str, const char *set);

extern char   memcmp  (const void *s1, const void *s2, size_t n);
extern void  *memcpy  (void *s1, const void *s2, size_t n);
extern void  *memchr  (const void *s, char val, size_t n);
extern void  *memccpy (void *s1, const void *s2, char val, size_t n);
extern void  *memmove (void *s1, const void *s2, size_t n);
extern void  *memset  (void *s, char val, size_t n);
#pragma RESTORE

#endif
/*--------------------------------------------------------------------------
INTRINS.H

Intrinsic functions for C51.
Copyright (c) 1988-2010 Keil Elektronik GmbH and ARM Germany GmbH
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __INTRINS_H__
#define __INTRINS_H__

#pragma SAVE

#if defined (__CX2__)
#pragma FUNCTIONS(STATIC)
/* intrinsic functions are reentrant, but need static attribute */
#endif

extern void          _nop_     (void);
extern bit           _testbit_ (bit);
extern unsigned char _cror_    (unsigned char, unsigned char);
extern unsigned int  _iror_    (unsigned int,  unsigned char);
extern unsigned long _lror_    (unsigned long, unsigned char);
extern unsigned char _crol_    (unsigned char, unsigned char);
extern unsigned int  _irol_    (unsigned int,  unsigned char);
extern unsigned long _lrol_    (unsigned long, unsigned char);
extern unsigned char _chkfloat_(float);
#if defined (__CX2__)
extern int           abs       (int);
extern void          _illop_   (void);
#endif
#if !defined (__CX2__)
extern void          _push_    (unsigned char _sfr);
extern void          _pop_     (unsigned char _sfr);
#endif

#pragma RESTORE

#endif

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bill66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值