PICC库函数 下载本文

QQ172082520

main (void) {

char buf[80]; int i;

gets(buf); i = atoi(buf);

printf(\,buf,i); }

4. 参 阅 xtoi( ),atof( ),atol( ) 5. 返回值 返回一个有符号的整数。如果在字符串中没有发现任何数字,则返回0。

3.9 ATOL函数

1.提 要 #include long atol (const char * s) 2.描 述 atol( )函数扫描传递过来的字符串,并跳过字符串开头的空格;然后将十进制数的ASCII

表达式转换成长整型。 3.例 程 #include #include void

main (void) {

char buf[80]; long i; gets(buf); i = atol(buf);

printf(\,buf,i); }

4.参 阅 atoi( ),atof( ) 5.返回值 返回一个长整型数。如果字符串中没有发现任何数字,返回值为0。

3.10 CEIL函数

1. 提 要

45

QQ172082520

#include double ceil (double f) 2. 描 述 本函数对函数参数 f 取整,取整后的返回值为大于或等于 f 的最小整数。 3. 例 程 #include #include void

main (void) {

double j;

scanf(\,&j);

printf(\,j,ceil(j)); }

3.11 COS函数

1. 提 要 #include double cos (double f) 2. 描 述 本函数将计算函数参数的余弦值。其中,函数参数用弧度表示。余弦值通过多项式级数近似值展开式算得。 3. 例 程 #include #include

#define C 3.141592/180.0 void

main (void) {

double i;

for(i = 0;i <= 180.0;i += 10)

printf(\,cos = %f\\n\,i,sin(i*C),cos(i*C)); }

4. 参 阅 sin( ),tan( ),asin( ),acos( ),atan( ),atan2( ) 5. 返回值 返回一个双精度数,区间为[-1,1]。

3.12 COSH、SINH、TANH函数

1. 提 要

46

QQ172082520

#include double cosh (double f) double sinh (double f) double tanh (double f) 2. 描 述 这些函数都是cos( ),sin( )和tan( )的双曲函数。 3. 例 程 #include #include void

main (void) {

printf(\,cosh(1.5)); printf(\,sinh(1.5)); printf(\,tanh(1.5)); }

4. 返回值 cosh( )函数返回双曲余弦值,sinh( )函数返回双曲正弦值,tanh( )函数返回双曲正切值。

3.13 CTIME函数

1. 提 要

#include

char * ctime (time_t * t) 2. 描 述 ctime( )函数将函数参数所指的时间转换成字符串,其结构与asctime( )函数所描述的相同,并且精确到秒。以下例程将打印出当前的时间和日期。 3. 例 程 #include #include void

main (void) {

time_t clock; time(&clock);

printf(\,ctime(&clock)); }

4. 参 阅 gmtime( ),localtime( ),asctime( ),time( ) 5. 返回值

47

QQ172082520

本函数返回一个指向该字符串的指针。

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

6. 数据类型 typedef long time_t

3.14 DI、EI函数

1. 提 要 #include void ei(void) void di(void) 2. 描 述 ei( )和di( )函数分别实现全局中断使能和中断屏蔽,其定义在pic.h头文件中。它们将被扩展为一条内嵌的汇编指令,分别对中断使能位进行置位和清零。 以下例程将说明ei( )函数和di( )函数在访问一个长整型变量时的应用。由于中断服务程序将修改该变量,所以如果访问该变量不按照本例程的结构编程,一旦在访问变量值的连续字期间出现中断,则函数getticks( ) 将返回错误的值。 3. 例 程

#include long count;

void interrupt tick(void) {

count++; }

long getticks(void) {

long val; /*在访问count变量前禁止中断,保证访问的连续性*/ di( );

val = count; ei( );

return val; }

3.15 DIV函数

1. 提 要 #include

div_t div (int numer,int demon) 2. 描 述 div( )函数实现分子除以分母,得到商和余数。 3. 例 程 #include

48

QQ172082520

#include void

main (void) {

div_t x;

x = div(12345,66);

printf(\,remainder = %d\\n\,x.quot,x.rem); }

4. 返回值 返回一个包括商和余数的结构体div_t。. 5. 数据类型 typedef struct {

int quot; int rem; } div_t;

3.16 EEPROM_READ、EEPROM_WRITE函数

1. 提 要 #include

unsigned char eeprom_read (unsigned char addr);

void eeprom_write (unsigned char addr,unsigned char value); 2. 描 述 这些函数允许访问片内EEPROM(如果片内有EEPROM)。EEPROM不是可直接寻址的寄存器空间,当需要访问EEPROM时,就需要将一些特定的字节序列加载到EEPROM控制寄存器中。写EEPROM是一个缓慢的过程。故eeprom_write( )函数在写入下一个数据前,会通过查询恰当的寄存器来确保前一个数据已经写入完毕。另外,读EEPROM可以在一个指令周期内完成,所以没有必要查询读操作是否完成。 3. 例 程 #include void

main (void) {

unsigned char data; unsigned char address; address = 0x10;

data = eeprom_read(address); }

注意:如果调用eeprom_write( )函数后需即刻调用eeprom_read( )函数,则必须查询EEPROM寄存器

49