PICC库函数 下载本文

内容发布更新时间 : 2024/5/6 19:58:30星期一 下面是文章的全部内容请认真阅读。

QQ172082520

以确保写入完毕。全局中断使能位(GIE)在eeprom_write( )程序中重新恢复(写EEPROM时需要关闭总中断)。而且,本函数不会清EEIF标志位。

3.17 EVAL_POLY函数

1. 提 要 #include

double eval_poly (double x,const double * d,int n) 2. 描 述 eval_poly( )函数将求解一个多项式的值。这个多项式的系数分别包含在x和数组d中,例如:

y = x*x*d2 + x*d1 + d0

该多项式的阶数由参数n传递过来。 3. 例 程

#include #include void

main (void) {

double x,y;

double d[3] = {1.1,3.5,2.7}; x = 2.2;

y = eval_poly(x,d,2);

printf(\,x,y); }

4. 返回值 本函数返回一个双精度数,该数是自变量x对应的多项式值。

3.18 EXP函数

1. 提 要 #include double exp (double f) 2. 描 述 exp( )函数返回参数的指数函数值,即ef(f为函数参数)。 3. 例 程 #include #include void

main (void) {

double f;

50

QQ172082520

for(f = 0.0;f <= 5;f += 1.0)

printf(\,f,exp(f)); }

4. 参 阅 log( ),log10( ),pow( )

3.19 FABS函数

1. 提 要 #include double fabs (double f) 2. 描 述 本函数返回双精度函数参数的绝对值。 3. 例 程

#include #include void

main (void) {

printf(\,fabs(1.5),fabs(-1.5)); }

4. 参 阅 abs( )

3.20 FLOOR函数

1. 提 要 #include double floor (double f) 2. 描 述 本函数对函数参数取整,取整后的返回值不大于函数参数f。3. 例 程 #include #include void

main (void) {

printf(\,floor( 1.5 )); printf(\,floor( -1.5)); }

3.21 FREXP函数

51

QQ172082520

1. 提 要

#include

double frexp (double f,int * p) 2. 描 述 frexp( )函数将一个浮点数分解成规格化小数和2的整数次幂两部分,整数幂部分存于指针 p 所指的 int 单元中。本函数的返回值x或在区间(0.5,1.0)内,或为 0;而且有

pf=x×2。如果f为0,则分解出来的两部分均为0。 3. 例 程 #include #include void

main (void) {

double f; int i;

f = frexp(23456.34,&i);

printf(\,f,i); }

4. 参 阅 ldexp( )

3.22 GET_CAL_DATA函数

1. 提 要 #include

double get_cal_data (const unsigned char * code_ptr) 2. 描 述 本函数从PIC 14000标定空间返回一个32位的浮点标定数据。只有利用这个函数才能访问KREF、KBG、BHTHERM和KTC单元(32位浮点参数)。由于FOSC和TWDT均是一个字节长度,故可以直接访问它们。 3. 例 程 #include void

main (void) {

double x;

unsigned char y;

x = get_cal_data(KREF);/*获得参考斜率(slope reference ratio)*/ y =TWDT;/*获得WDT溢出时间*/ }

4. 返回值

52

QQ172082520

返回定标参数值。

注意:本函数仅用于PIC 14000

3.23 GMTIME函数

1. 提 要 #include

struct tm * gmtime (time_t * t) 2. 描 述 本函数把指针 t 所指的时间分解,并且存于结构体中,精确度为秒。其中,t 所指的时间必须自1970年1月1日0时0分0秒起。本函数所用的结构体被定义在time.h文件中,可参照本节“数据类型”部分。 3. 例 程 #include #include void

main (void) {

time_t clock; struct tm * tp; time(&clock);

tp = gmtime(&clock);

printf(\\\n\,tp->tm_year+1900); }

4. 参 阅 ctime( ),asctime( ),time( ),localtime( ) 5. 返回值 返回tm类型的结构体。

注意:由于编译器不会提供time( )程序,故它需要由用户给定。详情请参阅time( )函数。

6. 数据类型 typedef long time_t; struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst;

53

QQ172082520

};

3.24 ISALNUM,ISALPHA,ISDIGIT,ISLOWER 等函数

1. 提 要

#include int isalnum (char c) int isalpha (char c) int isascii (char c) int iscntrl (char c) int isdigit (char c) int islower (char c) int isprint (char c) int isgraph (char c) int ispunct (char c) int isspace (char c) int isupper (char c) int isxdigit(char c) 2. 描 述 以上函数都被定义在ctype.h文件中。它们将测试给定的字符,看该字符是否为已知的几组字符中的成员。 isalnum (c) c在0~9、a~z或者A~Z范围内; isalpha (c) c在A~Z或a~z范围内; isascii (c) c为7位ASCII字符; iscntrl (c) c为控制字符; isdigit (c) c为十进制阿拉伯数字; islower (c) c在a~z范围内; isprint (c) c为打印字符; isgraph (c) c为非空格可打印字符; ispunct (c) c不是字母数字混合的; isspace (c) c是空格键、TAB键或换行符; isupper (c) c在A~Z范围内; isxdigit (c) c在0~9、a~f或A~F范围内。 3.例 程

#include #include void

main (void) {

char buf[80]; int i;

54