C语言中KeilC51库函数大全Word格式.docx
- 文档编号:3757440
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:33
- 大小:34.09KB
C语言中KeilC51库函数大全Word格式.docx
《C语言中KeilC51库函数大全Word格式.docx》由会员分享,可在线阅读,更多相关《C语言中KeilC51库函数大全Word格式.docx(33页珍藏版)》请在冰点文库上搜索。
bitisgraph(charc);
bitislower(charc);
bitisprint(charc);
bitispunct(charc);
bitisspace(charc);
bitisupper(charc);
bitisxdigit(charc);
bittoascii(charc);
bittoint(charc);
chartolower(charc);
char__tolower(charc);
chartoupper(charc);
char__toupper(charc);
2.INTRINS.H
unsignedchar_crol_(unsignedcharc,unsignedcharb);
unsignedchar_cror_(unsignedcharc,unsignedcharb);
unsignedchar_chkfloat_(floatual);
unsignedint_irol_(unsignedinti,unsignedcharb);
unsignedint_iror_(unsignedinti,unsignedcharb);
unsignedlong_irol_(unsignedlongl,unsignedcharb);
unsignedlong_iror_(unsignedlongL,unsignedcharb);
void_nop_(void);
bit_testbit_(bitb);
3.STDIO.H
chargetchar(void);
char_getkey(void);
char*gets(char*string,intlen);
intprintf(constchar*fmtstr[,argument]…);
charputchar(charc);
intputs(constchar*string);
intscanf(constchar*fmtstr.[,argument]…);
intsprintf(char*buffer,constchar*fmtstr[;
argument]);
intsscanf(char*buffer,constchar*fmtstr[,argument]);
charungetchar(charc);
voidvprintf(constchar*fmtstr,char*argptr);
voidvsprintf(char*buffer,constchar*fmtstr,char*argptr);
4.STDLIB.H
floatatof(void*string);
intatoi(void*string);
longatol(void*string);
void*calloc(unsignedintnum,unsignedintlen);
voidfree(voidxdata*p);
voidinit_mempool(void*data*p,unsignedintsize);
void*malloc(unsignedintsize);
intrand(void);
void*realloc(voidxdata*p,unsignedintsize);
voidsrand(intseed);
5.STRING.H
void*memccpy(void*dest,void*src,charc,intlen);
void*memchr(void*buf,charc,intlen);
charmemcmp(void*buf1,void*buf2,intlen);
void*memcopy(void*dest,void*SRC,intlen);
void*memmove(void*dest,void*src,intlen);
void*memset(void*buf,charc,intlen);
char*strcat(char*dest,char*src);
char*strchr(constchar*string,charc);
charstrcmp(char*string1,char*string2);
char*strcpy(char*dest,char*src);
intstrcspn(char*src,char*set);
intstrlen(char*src);
char*strncat(char8dest,char*src,intlen);
charstrncmp(char*string1,char*string2,intlen);
charstrncpy(char*dest,char*src,intlen);
char*strpbrk(char*string,char*set);
intstrpos(constchar*string,charc);
char*strrchr(constchar*string,charc);
char*strrpbrk(char*string,char*set);
intstrrpos(constchar*string,charc);
intstrspn(char*string,char*set);
系统分类:
编辑博客
用户分类:
MCS-51单片机
标签:
无标签
来源:
整理
发表评论阅读全文(121)|回复(0)
0
KeilC51例子:
Hello.c
发表于2009/6/2313:
41:
24
Hello位于\C51\excmples\Hello\目录,其功能是向串口输出“Hello,world”整个程序如下:
#pragmaDBOECD
#indule<
reg51.h>
#include<
stdio.h>
voidmain(void)
{
SCOn=0x50;
TMOD=0x20
TH1=0xf3;
Tri=1;
TI=1;
printf(“Hello,world\n”);
while
(1){}
}
第一节uVisionforWindows的使用步骤
(1)file_new新建一个hello.c文件,输入如上内容或直接用目录下源文件。
(2)file_save或工具栏将文件存盘。
(3)project_newproject创建一个project名为hello,并在其中加入hello.c。
这时该project已是打开状态,或用openproject打开已存在的project。
(4)option_C51compiler中选出至少包括两项DBOE。
(5)option_dscopeDebugger选中hello\DS51.INI
查看DS51.INI看其是否为:
“load…\…\BIN\8051.DLL
map0,0xffff”
否则修改。
(6)在option_make选make文件顺序。
(7)project选Buildproject,看是否有语法错误,若无则生成HEX文件,若有则修改源文件后重复以上部分步骤。
(8)run_dScopedebugger进入dScope51后装入hello则可用go直接运行看serial窗口有无输出,正常每系统运行一次,serial窗口均出现一个“Hello,world”表明运行无误。
第二节IshellforDos使用步骤
(1)进入Ishell用Setupediter选择编辑器。
然后单击Edit或用Edit命令编辑hello.c源文件,存盘,也可以在files窗口中直接选中hello.c。
(2)用cd改换project目录至hello目录。
(3)在setup_target一项目选8051。
(4)在setup_C51中输出DBOE。
(5)在setup_project输入project名hello。
(6)在setup_save保存Ishell.CFG文件。
(7)编辑一个Link文件hello.lin中有“hell.obj”一行。
(8)由光标落在files菜单中的Hello.c上,单击“translate”,如无语法错,再击“link”,则Hex文件生成。
(9)单击Simulate如在8051.CDF中选Simulate为dScope则进入dScope调试直接“Go”,看serial窗口输出为“Hello.world”。
(10)如程序有误修改源代码后不必再translate或link了,只要一步Amake即可。
若project中包括不止一个文件,在DOS的Ishell中不能用Translate编译,而应建立bat文件,直接在命令窗编译,然后link连接。
如还需用Translate则只能多个文件分别编译,然后连接
发表评论阅读全文(88)|回复(0)
KeilC51的代码效率
39:
19
C51程序编译生成汇编代码的效率,是由许多因素共同决定的,对于KeilC51,主要受以下两种因素影响:
第一节存储模式的影响
存储模式决定了缺省变量的存储空间,而访问各空间变量的汇编代码的繁简程度决定了代码率的高低。
例如:
一个整形变量i,如放于内存18H、19H空间,则++i的操作编译成四条语句:
INC0x19
MOVA,0x19
JNZ0x272D
INC0x18
0x272D:
而如果放于外存空间0000H、0001H则++i的操作编译成九条语句:
MOVDPTR,0001
MOVXA,@DPTR
INCA
MOVX@DPTR,A
JNz#5
MOVOPTR,#0000
MOVXA,@DPTR
就汇编之后的语句而言,对外部存储器的操作较内部存储器操作代码率要低得多,生成的语句为内存的两倍以上,而程序中有大量的这种操作,可见存储模式对代码率的响了。
因此程序设计的原则是
1、存储模式从small-Compact-large依次选择,实在是变量太多,才选large模式。
2、即使选择了large模式,对一些常用的局部的或者可放于内存中的变量,最好放于内存中,以尽量提高程序的代码率。
第二节程序结构的影响
程序的结构单元包括模块、函数等等。
同样的功能,如果结构越复杂,其所涉及的操作、变量、功能模块函数等就越多,较之结构性好,代码简单的程序其代码率自然就低得多。
此外程序的运行控制语句,也是影响代码率的关键因素,例如:
switch-case语句,许多编译器都把它们译得非常复杂,KeilC51也不例外,相对较为简易的Switch-case语句,编译成跳转指令形式,代码率较高,但对较为复杂的Switch-Case,则要调用一个系统库函数?
C?
ICASE进行处理,非常复杂。
再如if(),while(),等语句也是代码相对较低的语句,但编译以后比switch-case要高得多。
因此建议设计者尽量少用switch-case之类语句来控制程序结构,以提高代码率。
除以上两点外,其它因素也会对代码率产生影响,例如:
是否用寄存器传递参数即NOAREGS选项是否有
是否包括调试信息:
即DEBUG选项
是否包括扩展的调试信息:
即BJECTEXTEND
发表评论阅读全文(65)|回复(0)
dScopeforWindows使用详解
38:
15
第一节概述
1.主窗口(MainframeWindow)
可设置其它各种调试窗口,设置断点、观察点,修改地址空间,加载文件等等;
2.调试窗口(DEBUGWindow)
支持用户程序的各种显示方式,可连续运行,单步运行用户程序,并可在线汇编;
3.命令窗口(CommandWindow)
支持命令行的输入;
4.观察窗口(WatchWindow)
可设置所要观察的变量、表达式等;
5.寄存器窗口(RegisteWindow)
显示内部寄存器的内容,程序运行次数等;
6.串口窗口(SericalWindows)
显示串口接收和发送的数据;
7.性能分析窗口
显示所要观察的各程序段占用CPU的空间;
8.内存窗口(MemoryWindow)
显示所选择的内存中的数据;
9.符号浏览窗口(SymbolBrowserWindow)
显示各种符号名称,包括专有符号,用户自定义符号(函数名、变量、标号)等;
10.调用线窗口(Call-StackWindow)
动态显示当前执行的程序段的函数调用关系;
11.代码覆盖窗口
提供当前模块内各程序段中被执行代码的比率;
。
12.外围设备窗口(peripherals)
可显示I/O口,定时器,中断,串口等外围设备状态;
第二节dScopeforWindows基本操作
1.指定初始化文件
在uVision的Option菜单dScopeDebugger中指定dScope的初始化文件,用uVision的RUN启动dScope将自动加载此初始化文件,自动执行其中命令;
下面是一个例子,可以看出调入一个调试代码的过程。
Ds51.ini:
load8051.dll
loadtest
slog>
>
test.log
xtal=11.0592
definebutton"
gotomain"
"
g,main"
wsRevCounter
wsrm.r
g,main
PARESET
PAserial
PAtimer0
2.观察变量
方法1:
命令行
WSexpression[,numberbase][LINE]
其中numberbase为显示数制,10对应10进制,16对应16进制,缺省为16进制。
LINE为单行显示,缺省为多行显示。
方法2:
setup->
Watchpoints,在对话框中输入变量
3.显示RAM的值
di(x,d):
起始地址,终止地址
d变量名
4.观察堆栈
View->
Call-stack->
Showinvocation,可以跟踪调用过程;
5.中断处理程序调试
在装入8051.dll后,在dScope的主菜单中将增加Peripherial,其有4个字菜单:
I/0port:
Pi端口状态
Interrupt:
中断设置
Timer:
定时器中断状态
Serial:
串口中断状态
设置相应的中断请求标志位即可产生中断。
6.性能分析(PerformanceAnalyzer:
PA)
PA用来分析一段代码执行占用CPU的百分比。
定义:
命令行PAfunc_name
第三节dScopeforWindows命令文件的编制
dScope除了用命令行的方式进行调试以外,还可将各种调试命令汇集于一个调试文件中,然后调用该文件,就可达到自动测试用户源代码的目的。
dScope的命令文件支持C/PL/M的格式,因而编制调试命令文件与编制C语言程序有些类似。
1.地址空间及地址空间类型
(1)地址空间分段
dScope提供的最大可用空间为16M,实际上我们只用以下三段:
①内部数据空间段(0X00段或D段)
0X00:
0X0000~0X00:
0XFFFF(对MSC51而言为0X00:
0X00FF)
②外部数据空间段(0X01段式或X段)
0X01:
0X0000~0X01~0XFFFF
③程序空间段(0XFF段或C段)
0XFF:
0X0000~0XFF:
0XFFFF
(2)地址空间类型
C:
代码空间
D:
内部直接寻址空间
I:
内部间接寻址空间
X:
外部数据空间
B:
位寻址空间
P:
I/O口
EB:
扩展的位寻址空间(MCS251专有)
ED:
扩展的数据空间(MCS251专有)
CO:
常数空间(MCS251专有)
HC:
正常数空间(MCS251专有)
2.常量
dScope支持十六进制、八进制、十进制、二进制常数,其后缀分别为H、Q(O)、T(或无)、Y;
dScope不区分常量的大、小写。
(1)整型常量
分为整型(int),无符号整型(uint,00rd),长整型(long),无符号长整型(Wlong、Word)。
(2)浮点型常量
与ANSIC相同。
(3)字符串常量
与ANSIC相同
(4)字符常量
分为字符型(Char)和无符号字符型(Uchar)一种。
(5)行号常数
指用户程序中的行号,实际上是个地址
(6)位常量(Bit):
0和1
(7)地址常数
地址常数的种类很多,地址常数不同于行号常数,行号常数就是一个地址,而地址数被引用时,实际上是取该地址中的数据。
代码地址常数,如C:
0X0012或0XFF:
0X0012
内部直接寻址地址常数,如D:
0X0068或0X00:
0X0068
内部间按寻址地址常数,如I:
0X0010或0X00:
0X0010
外部数据空间地址常数,如X:
0X0028或0X01:
0X0028
位地址常数,如B:
0X20或B:
0X24.0
扩展的位地址常数(MCS251专有),
扩展的数据空间地址常数(MCS251专有)
常数空间地址常数(MCS251专有)
正常数空间地址常数(MCS251专有)
(8)标识符常量
即用户源程序中的标号、函数名等,实际上代表某一地址。
(9)用户源程序中定义的常数
3.变量
dScope所支持的变量名或标识符最多可由31个字符组成,第一个字母为A~Z,a~z,下划线或问号,后续字符可为字母、数字、下划线和问号。
除CPU变量和系统变量外,dScope不支持全局变量,但可视“define”命令定义的变量为全局变量。
Dscope所支持的变量分为以下几种(变量名称不区分大、小写),支持类型转换:
(1)整型变量
分为整型变量(int)、无符号整型变量(uint/word),长整型(Long)、无符号长整型(Ulong/dword)。
(2)浮点型变量(float)
与ANSIC相同。
(3)字符型变量L
分为字符型(char)变量和无符号字符型(Uchar)
(4)位变量(Bit)
(5)系统变量
dScope自己定义了一系列内部变量,用户可对这些变量进行读或读/写操作,可被用户自定义数所引用。
a.
Cycles(ReadOnly)
32位变量(Ulong),指示当前程序执行已花费的指令周期(cycle)。
b.
Ramsize(R/W)
16位变量(Uint),指示内部可直接寻址的数据空间大小。
c.
Radix(R/N)
8位变量(Uchar),决定输出的数制
Radix=0X0A(10进制),Radix=0X10(16进制)
d.
-IIP-(R/W)
8位变量(Uchar),指示当前的中断嵌套数目。
e.
$(R/W)
32位变量(Ulong),指出PC值,通过对其进行写操作,可改变程序执行的流程。
f.
Itrace(R/W)
8位变量(Uchar),决定是否对程序运行情况进行记录
Itrace=1,使能记录操作
Itrace=0,根本上记录操作
g.
__Break__(R/W)
8位变量(Uchar)__Break__=1,中止程序的运行
h.
__Mode__和__Framesize__是MCS251专有的变量。
(6)CPU变量
即R0~R7、A、C(位变量)、B、DPTR及特殊功能寄存器变量,对这些变量均可进行读、写操作。
(7)用户源程序中定义的变量、数组、结构等
4.运算符
dScope支持ANSIC的运算符,包括算术
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 KeilC51 库函数 大全