PIC单片机的C语言应用下的函数库Word下载.docx
- 文档编号:8299934
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:52
- 大小:31.85KB
PIC单片机的C语言应用下的函数库Word下载.docx
《PIC单片机的C语言应用下的函数库Word下载.docx》由会员分享,可在线阅读,更多相关《PIC单片机的C语言应用下的函数库Word下载.docx(52页珍藏版)》请在冰点文库上搜索。
4.返回值
j的绝对值。
2ACOS函数1.提要
math.h>
doubleacos(doublef)
acos()函数是cos()的反函数。
函数参数在[-1,1]区间内,返回值是一个用弧
度表示的角度,而且该返回值的余弦值等于函数参数。
3.例程
1
/*以度为单位,打印[-1,1]区间内的反余弦值*/
floati,a;
for(i=-1.0,i<
1.0;
i+=0.1){
a=acos(i)*180.0/3.141592;
acos(%f)=%fdegrees\n"
,i,a);
4(参阅
sin(),cos(),tan(),asin(),atan(),atan2()5(返回值
返回值是一个用弧度表示的角度,区间是[0,π]。
如果函数参数超出区间[-1,1],则返回值将为0。
3ASCTIME函数
1.提要
time.h>
char*asctime(structtm*t)
asctime()函数通过指针t从上structtm结构体中获得时间,返回描述当前日期和时间的26个字符串,其格式如下:
SunSep1601:
03:
521973\n\0
值得注意的是,在字符串的末尾有换行符。
字符串中的每个字长是固定的。
以下例程得到当前时间,通过localtime()函数将其转换成一个structtm指针,最后转换成ASCII码并打印出来。
其中,time()函数需要用户提供(详情请参阅time()
函数)。
time_tclock;
structtm*tp;
time(&
clock);
tp=localtime(&
%s"
,asctime(tp));
4.参阅
2
ctime(),gmtime(),localtime(),time()5.返回值
指向字符串的指针。
注意:
由于编译器不提供time()例行程序,故在本例程中它需要由用户提供。
详情请参照
time()函数。
6.数据类型
structtm{
inttm_sec;
inttm_min;
inttm_hour;
inttm_mday;
inttm_mon;
inttm_year;
inttm_wday;
inttm_yday;
inttm_isdst;
};
4ASIN函数1.提要
doubleasin(doublef)
asin()函数是sin()的反函数。
它的函数参数在[-1,1]区间内,返回一个用弧
度表示的角度值,而且这个返回值的正弦等于函数参数。
程3.例
for(i=-1.0;
i<
1.0;
a=asin(i)*180.0/3.141592;
asin(%f)=%fdegrees\n"
sin(),cos(),tan(),acos(),atan(),atan2()5.返回值
本函数返回一个用弧度表示的角度值,其区间为[-π/2,π/2]。
如果函数参数的
3
值超出区间[-1,1],则函数返回值将为0。
5ATAN函数1.提要
doubleatan(doublex)
函数返回参数的反正切值。
也就是说,本函数将返回一个在区间[-π/2,π/2]的
角度e,而且有tan(e)=x(x为函数参数)。
%f\n"
,atan(1.5));
sin(),cos(),tan(),asin(),acos(),atan2()5.返回值
返回函数参数的反正切值。
6ATAN2函数1.提要
doubleatan2(doubley,doublex)
本函数返回y/x的反正切值,并由两个函数参数的符号来决定返回值的
象限。
,atan2(1.5,1));
sin(),cos(),tan(),asin(),acos(),atan()5.返回值
返回y/x的反正切值(用弧度表示),区间为[-π,π]。
如果y和x均为0,将出现定
4
义域错误,并返回0。
7ATOF函数1.提要
doubleatof(constchar*s)2.描述
atof()函数将扫描由函数参数传递过来的字符串,并跳过字符串开头的空
格。
然后将一个数的ASCII表达式转换成双精度数。
这个数可以用十进制数、
浮点数或者科学记数法表示。
charbuf[80];
doublei;
gets(buf);
i=atof(buf);
Read%s:
convertedto%f\n"
,buf,i);
atoi(),atol()
5.返回值
本函数返回一个双精度浮点数。
如果字符串中没有发现任何数字,则返回
0.0。
8ATOI函数1.提要
intatoi(constchar*s)2.描述
atoi()函数扫描传递过来的字符串,跳过开头的空格并读取其符号;
然后将
一个十进制数的ASCII表达式转换成整数。
5
inti;
i=atoi(buf);
convertedto%d\n"
xtoi(),atof(),atol()
返回一个有符号的整数。
如果在字符串中没有发现任何数字,则返回0。
9ATOL函数1(提要
longatol(constchar*s)2(描述
atol()函数扫描传递过来的字符串,并跳过字符串开头的空格;
然后将十进
制数的ASCII
表达式转换成长整型。
3(例程
longi;
i=atol(buf);
convertedto%ld\n"
atoi(),atof()
5(返回值
返回一个长整型数。
如果字符串中没有发现任何数字,返回值为0。
10CEIL函数1.提要
doubleceil(doublef)
6
本函数对函数参数f取整,取整后的返回值为大于或等于f的最小整数。
doublej;
scanf("
%lf"
,&
j);
Theceilingof%lfis%lf\n"
,j,ceil(j));
11COS函数1.提要
doublecos(doublef)
本函数将计算函数参数的余弦值。
其中,函数参数用弧度表示。
余弦值通过
多项式级数近似值展开式算得。
defineC3.141592/180.0#
for(i=0;
=180.0;
i+=10)
sin(%3.0f)=%f,cos=%f\n"
,i,sin(i*C),cos(i*C));
sin(),tan(),asin(),acos(),atan(),atan2()5.返回值
返回一个双精度数,区间为[-1,1]。
12COSH、SINH、TANH函数
doublecosh(doublef)
doublesinh(doublef)
doubletanh(doublef)
7
这些函数都是cos(),sin()和tan()的双曲函数。
,cosh(1.5));
,sinh(1.5));
,tanh(1.5));
cosh()函数返回双曲余弦值,sinh()函数返回双曲正弦值,tanh()函数返回双曲
正切值。
13CTIME函数1.提要
char*ctime(time_t*t)
ctime()函数将函数参数所指的时间转换成字符串,其结构与asctime()函数
所描述的相同,并且精确到秒。
以下例程将打印出当前的时间和日期。
,ctime(&
clock));
gmtime(),localtime(),asctime(),time()5.返回值
本函数返回一个指向该字符串的指针。
由于编译器不会提供time()程序,故它需要由用户给定。
详情请参阅time()函数。
typedeflongtime_t
8
14DI、EI函数
pic.h>
voidei(void)
voiddi(void)
ei()和di()函数分别实现全局中断使能和中断屏蔽,其定义在pic.h头文件中。
它们将被扩展为一条内嵌的汇编指令,分别对中断使能位进行置位和清零。
以下例程将说明ei()函数和di()函数在访问一个长整型变量时的应用。
由于
中断服务程序将修改该变量,所以如果访问该变量不按照本例程的结构编
程,一旦在访问变量值的连续字期间出现中断,则函数getticks()将返回错误的
值。
3.例程
longcount;
voidinterrupttick(void)
count++;
longgetticks(void)
longval;
/*在访问count变量前禁止中断,保证访问的连续性*/
di();
val=count;
ei();
returnval;
15DIV函数
div_tdiv(intnumer,intdemon)
div()函数实现分子除以分母,得到商和余数。
div_tx;
9
x=div(12345,66);
quotient=%d,remainder=%d\n"
,x.quot,x.rem);
返回一个包括商和余数的结构体div_t。
.
5.数据类型
typedefstruct
intquot;
intrem;
}div_t;
16EEPROM_READ、EEPROM_WRITE函数1.提要
unsignedchareeprom_read(unsignedcharaddr);
voideeprom_write(unsignedcharaddr,unsignedcharvalue);
2.描述
这些函数允许访问片内EEPROM(如果片内有EEPROM)。
EEPROM不是可直接寻址的寄存器空间,当需要访问EEPROM时,就需要将一些特定的字节序列加载到EEPROM控制寄存器中。
写EEPROM是一个缓慢的过程。
故eeprom_write()函数在写入下一个数据前,会通过查询恰当的寄存器来确保前一个数据已经写入完毕。
另外,读EEPROM可以在一个指令周期内完成,所以没有必要查询读操作是否完成。
unsignedchardata;
unsignedcharaddress;
address=0x10;
data=eeprom_read(address);
如果调用eeprom_write()函数后需即刻调用eeprom_read()函数,则必须查询EEPROM寄存器以确保写入完毕。
全局中断使能位(GIE)在eeprom_write()程序中重新恢复(写EEPROM时需要关闭总中断)。
而且,本函数不会清EEIF标志位。
17EVAL_POLY函数
10
doubleeval_poly(doublex,constdouble*d,intn)2.描述
eval_poly()函数将求解一个多项式的值。
这个多项式的系数分别包含在
x和数组d中,例如:
y=x*x*d2+x*d1+d0
该多项式的阶数由参数n传递过来。
doublex,y;
doubled[3]={1.1,3.5,2.7};
x=2.2;
y=eval_poly(x,d,2);
Thepolynomialevaluatedat%fis%f\n"
,x,y);
本函数返回一个双精度数,该数是自变量x对应的多项式值。
18EXP函数1.提要
doubleexp(doublef)
fexp()函数返回参数的指数函数值,即e(f为函数参数)。
doublef;
for(f=0.0;
f<
=5;
f+=1.0)
eto%1.0f=%f\n"
,f,exp(f));
log(),log10(),pow()
11
19FABS函数1.提要
doublefabs(doublef)
本函数返回双精度函数参数的绝对值。
%f%f\n"
,fabs(1.5),fabs(-1.5));
abs()
20FLOOR函数1.提要
doublefloor(doublef)
本函数对函数参数取整,取整后的返回值不大于函数参数f。
,floor(1.5));
,floor(-1.5));
21FREXP函数1.提要
doublefrexp(doublef,int*p)2.描述
frexp()函数将一个浮点数分解成规格化小数和2的整数次幂两部分,整数
幂部分存于指针p所指的int单元中。
本函数的返回值x或在区间(0.5,1.0)内,
p或为0;
而且有f=x×
2。
如果f为0,则分解出来的两部分均为0。
12
f=frexp(23456.34,&
i);
23456.34=%f*2^%d\n"
,f,i);
ldexp()
22GET_CAL_DATA函数1.提要
doubleget_cal_data(constunsignedchar*code_ptr)2.描述
本函数从PIC14000标定空间返回一个32位的浮点标定数据。
只有利用这
个函数才能访问KREF、KBG、BHTHERM和KTC单元(32位浮点参数)。
由
于FOSC和TWDT均是一个字节长度,故可以直接访问它们。
doublex;
unsignedchary;
x=get_cal_data(KREF);
/*获得参考斜率(slopereferenceratio)*/
y=TWDT;
/*获得WDT溢出时间*/
返回定标参数值。
本函数仅用于PIC14000
23GMTIME函数1.提要
structtm*gmtime(time_t*t)2.描述
13
本函数把指针t所指的时间分解,并且存于结构体中,精确度为秒。
其中,t所
指的时间必须自1970年1月1日0时0分0秒起。
本函数所用的结构体被定义
在time.h文件中,可参照本节“数据类型”部分。
tp=gmtime(&
It’s%dinLondon\n"
,tp->
tm_year+1900);
ctime(),asctime(),time(),localtime()5.返回值
返回tm类型的结构体。
typedeflongtime_t;
intt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PIC 单片机 语言 应用 函数库