-
Keil C51
库函数及学习附录
Keil C51
库函数及学习附录
C51
强大功能及其高效率
的重要体现
之一在于其丰富的可直接调用的库函数,多使用
库函数使程序代码简单,结构清晰,易于
调试和维护,下面
介绍
C51
的库函数
系统。
第一节
本征库函数
(intrinsic routines)
和非本征证库函数
C51
提供的本征函数是指
编译时直接将固定的代码插入当
前行,
而不是用
ACALL
和
LCALL
语句
来实现,
这样就大大
提供了函数访问的效率,而非本征函数则必
须由
ACALL
及
LCALL
调用。
C51
的本征
库函数只有
9
个,数目虽少,但都非常有用,列
如下:
_crol_,_cror_
:将
char
型变量循环向左
(
右
)
移动指定位数后
返回
_iror_,_irol_
< br>:
将
int
型变量循环向左
p>
(
右
)
移动指定位
数后返回
_lrol_,_lror_
:
将
long
型变量循环向左
(
右
)
移动指定位数
后返
回
_nop_
:
相当于插入
NOP
_testbit_
:
相当于
JBCbitvar
测试该位变量并跳转同时
清除。
_chkfloat_
:
测试并返回源点数状态。
使用时,必须包含
#inclucle
一行。
如不说明,下面谈到的库函数均指非本征库函数。
第二节
几类重要库函数
1.
专用寄存器
p>
include
文件
例如
8031
、
8051
均为
REG51.h
其中包括了所有
8051
的
SFR
及其位
定义,一般系统都必须包括本文件。
2.
< br>绝对地址
include
文件
a
bsacc.h
该文件中实际只定义了几个宏,以确定各存储空间的绝对地
址。
3.
动态内存分
配函数,位于
stdlib.h
中
4.
缓冲区处理函数位于“string.h”中
其中包括拷贝比较移动等函数如:
memccpymemchr memcmp memcpy memmove
memset
这样很方便地对缓冲区进行处理。
5.
输入输出流函数,位于“stdio.h”中
流函数通
8051
的串口或用户定义的
I/O
口读写数据,缺省
为
8
051
串口,如要修改,比如改为
LCD
显示,可修改
lib
目录中的
get
key.c
及
putchar.c
源文
件,然后在库中替换它
们即可。
第三节
Keil
C51
库函数原型列表
1. CTYPE.H
bit isalnum(char
c)
;
bit
isalpha(char c)
;
bit iscntrl(char
c)
;
bit
isdigit(char c)
;
bit isgraph(char
c)
;
bit
islower(char c)
;
bit isprint(char
c)
;
bit
ispunct(char c)
;
bit isspace(char
c)
;
bit
isupper(char c)
;
bit isxdigit(char
c)
;
bit
toascii(char c)
;
bit toint(char
c)
;
char
tolower(char c)
;
char __tolower(char
c)
;
char
toupper(char c)
;
char __toupper(char
c)
;
2. INTRINS.H
unsigned char_crol_(unsigned char
c,unsigned char b)
;
unsigned char_cror_(unsigned char
c,unsigned char b)
;
unsigned char_chkfloat_(float
ual)
;
unsigned
int_irol_(unsigned int i,unsigned char
b)
;
unsigned
int_iror_(unsigned int i,unsigned char
b)
;
unsigned
long_irol_(unsigned long l,unsigned char
b)
;
unsigned
long_iror_(unsigned long L,unsigned char
b)
;
void
_nop_(void)
;
bit
_testbit_(bit b)
;
3. STDIO.H
char
getchar(void)
;
char
_getkey(void)
;
char *gets(char *string,int
len)
;
int
printf(const char *fmtstr[,argument]…);
char putchar(char c);
int
puts (const char *string);
int
scanf(const char *fmtstr.[,argument]…);
int sprintf(char *buffer,const char
*fmtstr[;argument])
;
int sscanf(char*buffer,const char *
fmtstr[,argument]);
char ungetchar(char
c);
void vprintf (const
char*fmtstr,char * argptr);
void
vsprintf(char*buffer,const char * fmtstr,char *
argptr)
;
4.
STDLIB.H
float atof(void * string);
int atoi(void * string);
long atol(void * string);
void * calloc(unsigned intnum,unsigned
int len);
void free(void xdata
*p)
;
void
init_mempool(void*data *p,unsigned int size);
void *malloc (unsigned intsize);
int rand(void);
void
*realloc (void xdata*p,unsigned int size);
void srand (int
seed)
;
5.
STRING.H
void *memccpy (void*dest,void
*src,char c,int len);
void *memchr
(void*buf,char c,int len);
char
memcmp(void*buf1,void *buf2,int len);
void *memcopy (void*dest,void *SRC,int
len);
void *memmove (void
*dest,void*src,int len);
void *memset
(void*buf,char c,int len);
char *strcat
(char*dest,char *src);
char *strchr
(const char*string,char c);
char strcmp
(char*string1,char *string2);
char
*strcpy (char*dest,char *src);
int
strcspn(char *src,char* set);
int
strlen (char *src);
char *strncat
(char8dest,char *src,int len);
char
strncmp(char*string1,char *string2,int len);
char strncpy (char*dest,char *src,int
len);
char *strpbrk (char*string,char
*set);
int strpos (const
char*string,char c);
char *strrchr
(const char*string,char c);
char
*strrpbrk (char*string,char *set);
int
strrpos (const char*string,char c);
int
strspn(char*string,char
*set)
;附录一
C51
中的关键字
关键字
用
途
说
明
auto
存储种类说明
用以说明局部变量,缺省值为此
break
程序语句
退出最内层循环
case
程序语句
switch
语句中的选择项
char
数据类型说明
单字节整型数或字符型数据
const
存储类型说明
在程序执行过程中不可更改的常量值
continue
程序语句
转向下一次循环
default
程序语句
switch
语句中的失败选择项
do
程序语句
构成
do..while
循环结构
double
数据类型说明
双精度浮点数
else
程序语句
构成
if..else
选择结构
enum
数据类型说明
枚举
extern
存储种类说明
在其他程序模块中说明了的全局变量
float
数据类型说明
单精度浮点数
for
程序语句
构成
for
循环结构
goto
程序语句
构成
goto
转移结构
if
程序语句
构成
if..else
选择结构
int
数据类型说明
基本整型数
long
数据类型说明
长整型数
register
存储种类说明
使用
CPU
内部寄存的变量
return
程序语句
函数返回
short
数据类型说明
短整型数
signed
数据类型说明
有符号数,二进制数据的最高位为符号位
sizeof
运算符
计算表达式或数据类型的字节数
static
存储种类说明
静态变量
struct
数据类型说明
结构类型数据
swicth
程序语句
构成
switch
选择结构
typedef
数据类型说明
重新进行数据类型定义
union
数据类型说明
联合类型数据
unsigned
数据类型说明
无符号数数据
void
数据类型说明
无类型数据
volatile
数据类型说明
该变量在程序执行中可被隐含地改变
while
程序语句
构成
while
和
do..while
循环结构
附表
1
-
1
ANSIC
标准关键字关键字
用
途
说
明
bit
位标量声明
声明一个位标量或位类型的函数
sbit
位标量声明
声明一个可位寻址变量
sfr
特殊功能寄存器声明
声明一个特殊功能寄存器
sfr16
特殊功能寄存器声明
声明一个
16
位的特殊功能寄存器
< br>
data
存储器类型说明
直接寻址的内部数据存储器
bdata
存储器类型说明
可位寻址的内部数据存储器
idata
存储器类型说明
-
-
-
-
-
-
-
-
-
上一篇:PC端规范代码
下一篇:非字开头的成语接龙大全游戏