首页 理论教育 C51常用函数一览-单片机开发入门与典型设计实例

C51常用函数一览-单片机开发入门与典型设计实例

时间:2023-10-23 理论教育 版权反馈
【摘要】:C51中主函数和用户函数结构与标准C语言中的函数结构相同,标准库函数功能也与标准C语言使用类似。C51强大的功能及其高效率的重要体现之一在于其丰富的可直接调用的库函数。表3-6 intrins.h中的库函数2.非本征库函数reg51.hreg51.h中包括了所有MCS-51的专用寄存器SFR及其位定义,单片机程序在预处理时必须包括reg51.h头文件。

C51常用函数一览-单片机开发入门与典型设计实例

从C语言程序结构上看,一个程序包含一个主函数main(),主函数所在的程序为主程序。其他函数分为用户函数和库函数,可以包括在主程序中或子程序中。C51中主函数和用户函数结构与标准C语言中的函数结构相同,标准库函数功能也与标准C语言使用类似。但C51库函数除了支持所有的ANSI C的程序外,根据单片机资源还补充了一些本征库函数和非本征库函数,见附录B(C51常用头文件)。

1.本征库函数

C51的本征库函数包含在intrins.h中,共有9个函数。C51强大的功能及其高效率的重要体现之一在于其丰富的可直接调用的库函数。多使用库函数可使程序代码简单、结构清晰、易于调试和维护。9个函数功能见表3-6。使用时程序必须包含#inclucle<intrins.h>。

表3-6 intrins.h中的库函数

978-7-111-43463-4-Chapter03-7.jpg

2.非本征库函数

(1)reg51.h

reg51.h中包括了所有MCS-51的专用寄存器SFR及其位定义,单片机程序在预处理时必须包括reg51.h头文件。在reg51.h头文件中有定义的寄存器才能被系统识别。(www.xing528.com)

(2)绝对地址文件absacc.h

在程序中,用“#include<absacc.h>”可使用其中定义的宏来访问绝对地址。absace.h可对不同的存储区进行访问,该头文件的函数包括:CBYTE,访问code区,字符型;DBYTE,访问data区,字符型;BYTE,访问pdata区或I/O接口,字符型;XBYTE,访问xdata区或I/O接口,字符型。另外,还有CWORD、DWORD、PWORD、XWORD 4个函数,它们的访问区域同上,只是访问的数据类型为int型。

AT89S51片内的4个并行I/O接口(P0~P3),由寄存器P0~P3控制,故对P0~P3采用定义SFR的方法。而AT89S51在片外扩展的并行I/O接口,这些扩展的I/O接口与片外扩展的RAM是统一编址的,即把一个外部I/O接口当做外部RAM的一个单元来看待。可根据需要选择为pdata类型或xdata类型。对于片外扩展的I/O接口,根据硬件译码地址,将其看做是片外RAM的一个单元,使用语句#define进行定义。例如:

#includ<absace.h>;//可缺少

#define PORTB XBYTE[0xFFC2];//定义外部I/O接口PORTB的地址为xdata区的0xFFC2

当然也可把片外I/O接口的定义放在一个头文件中,然后在程序中通过#include语句调用。一旦在头文件或程序中通过使用#define语句对片外I/O接口进行了定义,在程序中就可以使用变量名来访问这些片外I/O接口了。

C51非本征库函数还有动态内存分配函数stdlib.h、缓冲区处理函数string.h等,在复杂的单片机项目开发中使用这些函数会在一定程度上简化程序的结构,提高编程效率。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈