(完整版)Keilc51常用库函数汇总参考

(完整版)Keilc51常用库函数汇总参考
(完整版)Keilc51常用库函数汇总参考

Keil c51函数参考

一、数学函数

(1)cabs

原型:char cabs(char val);

功能:cabs函数取val的绝对值。

参数:一字节数val。

返回:cabs返回val的绝对值。

(2)abs

原型:Int abs(int val);

功能:求绝对值

参数:val整型数

返回:val的绝对值

(3)labs

原型:long labs(long val);

功能:labs函数确定长整数val的绝对值。

返回:val的绝对值。

(4)fabs

原型:float fabs(float val);

功能:fabs函数确定浮点数val的绝对值。

参数:

返回:fabs返回val的绝对值。

(5)sqrt

原型:float sprt(float x);

功能:sqrt函数计算x的平方根。

返回:sqrt函数返回x的正平方根。

(6)exp

原型:float exp(float x);

功能:exp函数计算自然对数中e的x次幂。e≈2.71828182845953581496,是无限循环小数。返回:e x的值。

(7)log

原型:float log(float val);

功能:log函数计算浮点数val的自然对数。自然对数基数为e。

返回:val的浮点自然对数。

(8)log10

原型:float log10(float val);

功能:logl0函数计算浮点数val的常用对数。常用对数为基数10。

返回:val的浮点常用对数。

(9)sin

原型:float sin(float x);

功能:sin函数计算浮点数x的正弦值。

参数:x必须在-65535~65535之间,或产生一个NaN错误。

返回:sin函数返回x的正弦。

(10)cos

原型:float cos(float x);

功能:COS函数计算浮点数X的余弦。

参数:X的值必须在-65535~65535之间,或产生一个NaN错误。返回:COS函数返回X的余弦。

(11)tan

原型:float tan(float x);

功能:tan函数计算浮点数x的正切值。

参数:x必须在-65535~65535之间,或错误值NaN。

返回:tan函数返回x的正切。

(12)asin

原型:float asin(float x);

功能:求反正弦

参数:浮点数x,取值必须在-1~1之间。

返回:X的反正弦,值在-π/2~π/2之间。

(13)acos

原型:float acos(float x);

功能:求反余弦

参数:浮点数x,取值必须在-1~1之间。

返回:x的反余弦,值在0~π之间。

(14)atan

原型:float atan(float x);

功能:求反正切

参数:浮点数x,取值必须在-1~1之间。

返回:X的反正切,值在-π/2~π/2之间。

(15)sinh

原型:float sinh(float x);

功能:sinh函数计算浮点数X的双曲正弦。

参数:x必须在-65535~65535之间,或产生一个NaN错误。

返回:sinh函数返回x的双曲正弦。

(16)cosh

原型:float cosh(float x);

功能:cosh函数计算浮点数X的双曲余弦。

参数:

返回:cosh函数返回X的双曲余弦。

(17)tanh

原型:float tanh(float x);

功能:tanh函数计算浮点数x的双曲正切。

返回:tanh函数返回x的双曲正切。

(18)atan2

原型:float atan2(float y,float x);

功能:计算浮点数y/x的反正切。

参数:浮点数y,浮点数x。

返回:反正切值,值在-π~π之间。x和y的符号确定返回值的象限。

(19)ceil

原型:float ceil(float val)

功能:ceil函数计算大于或等于val的最小整数值(收尾取整)。

参数:要化为整数的数。

返回:ceil函数返回不小于val的最小float整数值。

(20)floor

原型:float floor(float val);

功能:取整。

返回:floor函数返回不大于val的最大整数值。

(21)fmod

原型:float fmod(float x,float y);

功能:取模。

返回:x/y的浮点余数。

(22)modf

原型:float modf(float val,float *ip);

功能:modf函数把浮点数val分成整数和小数部分。

返回:modf函数返回带符号小数部分val。整数部分保存在浮点数ip中。

(23)pow

原型:float pow(float x,float y);

功能:pow函数计算x的y次幂。

返回:pow函数返回值x y。如果x≠0和y=O,pow返回值1;如果x=0和y≤0,pow返回NaN。如果x

二、空操作,左右位移等内嵌代码

(1)_nop_

原型:void _nop_(void);

功能:_nop_插入一个8051NOP空操作指令到程序,用来停顿1个CPU周期。本程序是固有函数,代码要求内嵌而不是调用。

返回:无。

(2)_testbit_

原型:bit _testbit_(bit b);

功能:_testbit_程序在生成的代码中用JBC指令来测试位b,并清零。

参数:本程序只能用在直接寻址位变量,对任何类型的表达式无效。固有函数,代码要求内嵌,而非调用。

返回:_testbit_程序返回值b

(3)_cror_

原型:unsigned char _cror_(unsigned char c, unsigned char b);

功能:_cror_程序字符c循环右移b位。固有函数,代码要求内嵌,而不是调用。参数:返回:右移的结果

(4)_iror_

原型:unsigned int _iror_(unsigned int i, unsigned char b);

功能:_iror_程序将整数i循环右移b位。固有函数,代码要求内嵌而不是被调用。

参数:i右移的整数,b右移的次数。

返回:_iror_程序返回右移后的值。

(5)_lror_

原型:unsigned long _lror_(unsigned long l,unsigned char b);

功能:_lror_程序将长整数l循环右移b位。固有函数代码,要求内嵌而不是被调用。

参数:l要右移的数,b要右移的位数。

返回:返回右移后的值。摘要:#include

(6)_crol_

原型:unsigned char _crol_(unsigned char c, unsigned char b);

功能:_crol_程序字符c循环左移b位。固有函数,代码要求内嵌,而不是调用。

参数:

返回:左移的结果

(7)_irol_

原型:unsigned int _irol_(unsigned int i, unsigned char b);

功能:_irol_程序将整数i循环左移b位。固有函数,代码要求内嵌而不是被调用。

参数:i左移的整数,b左移的次数。

返回:_irol_程序返回左移后的值。

(8)_lrol_

原型:unsigned long _lrol_(unsigned long l,unsigned char b);

功能:_lrol_程序将长整数l循环左移b位。固有函数,代码要求内嵌而不是被调用。

参数:l要左移的数,b要左移的位数。

返回:返回左移后的值。

(9)_chkfloat_

原型:unsigned char _chkfloat_(float val);

功能:检查浮点数的状态。

参数:浮点型变量。

返回:0,标准浮点数;1,浮点数0;2,正溢出;3,负溢出;4,NaN(不是一个数)错误状态。

(10)_push_

原型:void _push_(unsigned char _sfr);

功能:将特殊功能寄存器_sfr压入堆栈。

(11)_pop_

原型:void _pop_(unsigned char _sfr);

功能:将堆栈中的数据弹出到特殊功能寄存器_sfr。

三、字串转数字,随机数,存储池管理

(1)atof

原型:float atof(void *string);

功能:将浮点数格式的字符串转换为浮点数。如果string的第一个字符不能转换成数字,就停止处理。

参数:格式为,[{+|-}]数字[.数字][{e|E}[{+|-}]数字]。如,-12.345e+67

返回:atof函数返回string的浮点值。

(2)atoi

原型:int atoi(void *string);

功能:atoi函数转换string为一个整数值。string是一个字符序列,可以解释为一个整数。如果string的第一个字符不能转换成数字,就停止处理。

参数:atoi函数要求string有这样的格式:[空格][{+|-}]数字,如”123456”。

返回:atoi函数返回string的整数值。

(3)atol

原型:long atol(void *string);

功能:atol函数转换string为一个长整数值。string是一个字符序列,可以解释为一个长整数。如果string的第一个字符不能转换成数字,就停止处理。

参数:atol函数要求string有这样的格式:[空格][{+|-}]数字,如”1234567890”。

返回:atol函数返回string的长整数值。

(4)rand

原型:int rand(void);

功能:rand函数产生一个0~32767之间的虚拟随机数。

返回:rand函数返回一个虚拟随机数。

(5)srand

原型:void srand(int seed);

功能:srand函数设置rand函数所用的虚拟随机数发生器的起始值seed,随机数发生器对任何确定值seed产生相同的虚拟随机数序列。

返回:无。

(6)strtod

原型:unsigned long strtod(const char *string, char **ptr);

功能:strtod函数将一个浮点数格式的字符串string转换为一个浮点数。字符串开头的空白字符被忽略。

参数:要求string有下面的格式:[{+|-}]digits[.digits][{e|E}[{+|-}]digits]digits可能是一个或多个十进制数。ptr的值设置指针到string中转换部分的第一个字符。如果ptr是NULL,没有值和ptr关联。如果不能转换,则prt就设为string的值,strtod返回0。

返回:strtod函数返回由string生成的浮点数。

(7)strtol

原型:long strtol(const char *string, char **ptr, unsigned char base);

功能:strtol函数将一个数字字串string转换为一个long值。

参数:输入string是一个字符序列,可以解释为一个整数。字符串开头的空白字符被忽略,符号可选。要求string有下面的格式:[whitespace][{+|-}]digitsdigits可能是一个或多个十进制数。如果base是零,数值应该有一个十进制常数、八进制常数或十六进制常数的格式。数值的基数从格式推出。如果base在2~36之间,数值必须是一个字母或数字的非零序列,表示指定基数的一个整数。字母a~z(或A~Z)分别表示值10~36。只有小于base的字母表示的值是允许的。如果base是16,数值可能以0x或0X开头,0x或0x被忽略。prt的值设置指针指向string中转换部分的第一个字符。如果prt是NULL,没有值和ptr关联。如果不能转换,prt设置为string的值,strtol返回0。

返回:strtol函数返回string生成的整数值。如溢出则返回LONG_MIN或LONG_MAX。

(8)strtoul

原型:unsigned long strtoul(const char *string, char **ptr, unsigned char base);

功能:strtoul函数转换string为一个unsigned long值。

参数:与strtol函数类似。

返回:strtoul函数返回string生成的整数值。如溢出则返回ULONG_MAX。

(9)init_mempool

原型:void inti_mempool(void xdata *p, unsigned int size);

功能:init_mempool 函数初始化存储管理程序,提供存储池的开始地址和大小。本函数必

须在任何其他的存储管理函数(calloc,free,malloc,realloc)被调用前设置存储池,只在程序的开头调用一次。可以修改源程序以适合硬件环境。

参数:p参数指向一个xdata的存储区,用calloc,free,malloc和realloc库函数管理。size 参数指定存储池所用的字节数。

返回:无。

(10)malloc

原型:void xdata *malloc(unsigned int size);

功能:malloc函数从存储池分配size字节的存储块。

返回:malloc返回一个指向所分配的存储块的指针,如果没有足够的空间,则返回一个NULL 指针。

(11)free

原型:void free(void xdata *p);

功能:free函数返回一个存储块到存储池。p参数指向用calloc、malloc或realloc函数分配的存储块。一旦块返回到存储就可被再分配。如果p是一个NULL指针,被忽略。本程序的源代码在\KEIL\C51\LIB目录中,可以修改源程序,根据硬件来定制本程序。

参数:

返回:无。

(12)realloc

原型:void xdata *realloc(void xdata *p,unsigned int size);

功能:realloc函数改变已分配的存储块的大小。本程序的源代码在目录KEIL\C5I\LIB中,可以根据硬件环境定制本函数。

参数:P参数指向己分配块,size参数指定新块的大小。原块的内容复制到新块,新块中的任何其他区,如果是一个更大的块不初始化。

返回:realloc返回一个指向新块的指针。如果存储池没有足够的存储区,返回一个NULL指针,存储块不受影响。

(13)calloc

原型:void xdata *calloc(unsigned int num,unsigned int len);

功能:calloc函数从一个数组分配num个元素的存储区。每个元素占用len字节,并清0。字节总数为num*len。在LIB目录提供程序的源代码。可以修改源程序,为硬件定制本函数。参数:num为元素数目,len为每个元素的长度。

返回:calloc函数返回一个指针,指向分配的存储区,如果不能分配,则返回一个NULL指针。

四、流输入输出

(1)_getkey

原型:char _getkey(void);

功能:_getkey函数等待从串口接收字符。_getkey和putchar函数的源代码可以修改,提供针对硬件的字符级的I/O。

返回:接收到的字符

(2)getchar

原型:char getchar(void);

功能:getchar函数用_getkey函数从输入流读一个字符。所读的字符用putchar函数显示。本函数基于_getkey或putchar函数的操作。这些函数,在标准库中提供,用8051的串口读和写字符。定制函数可以用别的I/O设备。

返回:所读的字符。

(3)ungetchar

原型:char ungetchar(char c);

功能:ungetchar函数把字符c放回到输入流。子程序被getchar和别的返回c的流输入函数调用。getchar在调用时只能传递一个字符给ungetehar。

参数:

返回:如果成功,ungetchar函数返回字符c。如果调用者在读输入流时调用ungetchar多次,返回EOF表示一个错误条件。

(4)putchar

原型:char putchr(char c);

功能:putchar函数用8051的串口输出字符c。本程序指定执行,功能可能有变。因提供了_getkey和putchar函数的源程序,可以根据任何硬件环境修改以提供字符级的I/O。

参数:

返回:putchar函数返回输出的字符c。

(5)printf

原型:int printf(const char *fmtstr [,arguments]…);

功能:printf函数格式化一系列的字符串和数值,生成一个字符串用putchar写到输出流。参数:fmtstr参数是一个格式化字符串,可能是字符、转义系列和格式标识符。普通的字符和转义系列按说明的顺序复制到流。格式标识符通常以百分号(%)开头,要求在函数调用中包含附加的参数Arguments。格式字符串从左向右读。第一个格式标识符使用fmtstr后的第一个参数,用格式标识符转换和输出。第二个格式标识符访问fmtstr后的第二个参数。如果参数比格式标识符多,多出的参数被忽略。如果参数不够,结果是不可预料的。格式标识符用下面的格式:%[flags][width][.precision][{b|B|l|L}]type格式标识符中的每个域可以是一个字符或数字type域是一个字符,指定参数是否解释为一个字符、字符串、数字或指针。如下表所示:可选的字符b或B和l和L可直接放在类型字符前,分别指定整数类型d、i、u、o、x和X的char或long版本。flags 域是单个字符,用来对齐、输出和打印+/-号、空白、小数点、八进制和十六进制的前缀。如下表所示:width 域是一个非负数字,指定显示的最小字符数。如果输出值的字符数小于width,空白会加到左边或右边(当指定了一个标记)以达到最小的宽度。如果width用一个’0’作前缀,则填充的是零而不是空白。width域不会截短一个域。如果输出值的长度超过指定宽度,则输出所有的字符。width域可能是星号(*),在这种情况下,参数列表的一个int参数提供宽度值。如果参数使用的是unsigned char,在星号标识符前指定一个’b’。precision域是非负数字,指定显示的字符数、小数位数或有效位。precison域可能使输出值切断或舍入。precision域可能是星号(*),在这种情况,参数列表的一个int参数提供宽度值。如果参数使用的是unsigned char,在星号标识符前指定一个’

b’。本函数指定执行基于putchar函数的操作。本函数作为标准库提供,用805l的串口写字符,用别的I/O设备可以定制函数。必须确保参数类型和指定的格式匹配。可用类型映射确保正确的类型传递到printf。可传递给printf 的总的字节数受到8051 的存储区的限制。SMALL 模式和COMPACT模式最多15字节,LARGE模式最多40字节。

返回:printf函数返回实际写到输出流的字符数。

(6)sprintf

原型:int sprintf(char *buffer,const char *fmtstr [,arguments]…);

功能:sprintf函数格式化一系列的字符串和数值,并保存结果字符串在buffer fintstr。参数:参数是一个格式字符串,和printf函数指定的要求相同。

返回:sprintf函数返回实际写到buffer的字符数。

(7)vprintf

原型:void vprintf(const char *fmtstr, char *argptr);

功能:vprintf函数格式化一系列字符串和数字值,并建立一个用puschar函数写到输出流的字符串,函数类似于printf的副本,但使用参数列表的指针,而不是一个参数列表。本函数是指定执行的,基于putchar函数的操作。本函数作为标准库提供,用8051的串口写字符。别的I/O设备可以定制函数。

参数:fmtstr参数是一个指向一个格式字符串的指针,和printf函数的fmtstr参数有相同的形式和功能。argptr参数指向一系列参数,根据格式中指定的对应格式转换和输出。

返回:vprintf函数返回实际写到输出流的字符数。

(8)vsprimf

原型:void vsprintf(char *buffer, const char *fmtstr, char *argptr);

功能:vsprintf函数格式化一系列字符串和数字值,并保存字符串在Buffer中。函数类似于sprintf的副本,但使用参数列表的指针,而不是一个参数列表。

参数:fmtstr参数是一个指向一个格式字符串的指针,和printf函数的fmtstr参数有相同的形式和功能。argptr参数指向一系列参数,根据格式中指定的对应格式转换和输出。

返回:vsprintf函数返回实际写到输出流的字符数。

(9)gets

原型:char *gets(char *string, int len);

功能:gets函数调用getchar函数读一行字符到string。这行包括所有的字符和换行符('\n')。在string中换行符被一个NULL字符('\n')替代。len参数指定可读的最多字符数。如果长度超过len,gets函数用NULL字符终止string并返回。本函数指定执行基于_getkey或putchar 函数的操作。这些函数,在标准库中提供,用8051的串口读写。对别的I/O设备可以定制。参数:string要读的字符串,len最多字符数。

返回:gets函数返回string

(10)scanf

原型:int scanf(sonst char *fmtstr [,argument]…);

功能:scanf函数用getchar程序读数据。输入的数据保存在由argument根据格式字符串fmtstr 指定的位置。

参数:每个argument必须是一个指针,指向一个变量,对应fmtstr定义的类型,fmtstr控制解释输入的数据,fmtstr参数由一个或单个空白字符、非空白字符和下面定义的格式标识符组成。

·空白字符,空白(' '),制表('\t')或换行('\n'),使scanf跳过输入流中的空白字符。格式字符串中的单个的空白字符匹配输入流的0或多个空白字符。

·非空白字符,除了百分号('%'),使scanf从输入流读但不保存一个匹配字符。如果输入流的下一个字符和指定的非空白字符不匹配,scanf函数终止。

·格式标识符以百分号('%')开头,使scanf从输入流读字符,并转换字符到指定的类型值。转换后的值保存在参数列表的argument中。百分号后面的字符不被认为是一个格式标识符,只作为一个普通字符。例如%%匹配输入流的一个百分号。格式字符串从左向右读,不是格式标识符的字符必须和输入流的字符匹配。这些字符从输入流读入,但不保存,如果输入流的一个字符和格式字符串冲突,scanf终止。任何冲突的字符仍保留在输入流中。在格式字符串中的第一个格式标识符引用fmtstr后面的第一个参数,并转化输入字符,用格式标识符保存值。第二个格式标识符访问fmtstr后面的第二个参数,等等。如果参数比格式标识符多,多出的参数被忽略。如果没有足够的参数匹配格式标识符,结果是不可预料的。输入流中的值被输入域调用,用空白字符隔开。在转换输入域时,scanf遇到一个空白字符就结束一个参数的转换,而且任何当前格式标识符不认识的字符会结束一个域转换。格式标识符的格式:%[*][width][{b|h|l}]type格式标识符中的每个域可以是单个字符或数字,用来指定一个特殊的格式选项。type域是单个字符,指定输入字符是否解释为一个字符、字符串或数字。本域可以是下表中的任何值。以星号(*)作为格式标识符的第一个字符,会使输入域被扫描但不保存。星号禁止和格式标识符关联。width域是一个非负数,指定从输入流读入的最多字符数。从输入流读入的字符不超过width,并根据相应的argument转换。然而,如果一个空白字符或一个不认识字符先遇到,则读入的字符数小于width。可选字符b,h 和l直接放在类型字符前面,分别指定整数类型d,i,u,o和x的char,short或long版本。本函数指定执行基于_getkey或putchar函数的操作。这些函数,作为标准库提供,用805l 的串口读写。可对别的I/O设备定制函数。可以传递给scanf的字节数受8051存储区的限制。SMALL模式或COMPACT模式最多为15字节。LARGE模式最多为40字节。

返回:scanf函数返回成功转换的输入域的数目。如果有错误则返回EOF。

(11)sscanf

原型:int sscanf(char *buffer,const char *fmtstr [,argument]…);

功能:sscanf函数从buffer读字符串。

参数:输入的数据保存在由argument根据格式字符串fmtstr指定的位置。每个argument 必须是指向变量的指针,对应定义在fmtstr 的类型,控制输入数据的解释。fmtstr参数由一个或多个空白字符、非空白字符和格式标识符组成,如同scanf函数所定义。

返回:sscanf函数返回成功转换的输入域的数目,如果出现错误则返回EOF。

(12)puts

原型:int puts(const char *string);

功能:puts函数用putchar函数写string和换行符\n到输出流。本函数指定执行基于putchar 函数的操作。本函数作为标准库提供,写字符到8051的串口。用别的I/O口可以定制函数。

参数:输出的字符串。

返回:如果出现错误,puts函数返回EOF,如果没有则返回0。

五、字符测试

(1)isalpha

原型:bit isalpha(char c);

功能:isalpha函数测试参数c,确定是否是一个字母(‘A’~’Z’,’a’~’z’)。

返回:如果c是一个字母,isalpha函数返回1(真),否则返回0(假)。

(2)isalnum

原型:bit isalnum(char c);

功能:isalnum函数测试参数c,确定是否是一个字母或数字字符(‘A’~’Z’,’a’~’z’,’0’~’9’)。

返回:如果c是一个字母或数字字符,isalnum函数返回1(真),否则返回0(假)。

(3)iscntrl

原型:bit iscntrl (char c);

功能:iscntrl函数测试参数c,确定是否是一个控制字符(0x00~0x1F或0x7F)。

返回:如果c是一个控制字符,iscntrl函数返回1(真),否则返回0(假)。

(4)isdigit

原型:bit isdigit(char c);

功能:isdigit函数测试参数c,确定是否是一个十进制数(’0’~’9’)。

返回:如果c是一个十进制数,isdigit函数返回1(真),否则返回0(假)。

(5)isgraph

原型:bit isgraph(char c);

功能:isgraph函数测试参数c,确定是否是一个可打印字符(0x21~0x7E,不包括空格)。

返回:如果c是一个可打印字符,isgraph函数返回1(真),否则返回0(假)。

(6)isprint

原型:bit isprint(char c);

功能:isprint函数测试参数c,确定是否是一个可打印字符(0x20~0x7E)。

返回:如果c是一个可打印字符,isprint函数返回1(真),否则返回0(假)。

(7)ispunct

原型:bit ispunct(char c);

功能:ispunct函数测试参数c,确定是否是一个标点符号字符( ! , . : ; ? ”# $ % & ’` ( ) < > [ ] { }* + - = / | \ @ ^ _ ~ )。

返回:如果c是一个标点符号字符,ispunct函数返回1(真),否则返回0(假)。

(8)islower

原型:bit islower(char c);

功能:islower函数测试参数c,确定是否是一个小写字母字符(‘a’~’z’)。

返回:如果c是一个小写字母字符,islower函数返回1(真),否则返回0(假)。

(9)isupper

原型:bit isupper(char c);

功能:isupper函数测试参数c,确定是否是一个大写字母字符(‘A’~’Z’)。

返回:如果c是一个大写字母字符,isupper函数返回1(真),否则返回0(假)。

(10)isspace

原型:bit isspace(char c);

功能:isspace函数测试参数c,确定是否是一个空白字符(0x09~0x0D或0x20)。

返回:如果c是一个空白字符,isspace函数返回1(真),否则返回0(假)。

(11)isxdigit

原型:bit isalnum(char c);

功能:isalnum函数测试参数c,确定是否是一个十六进制数(‘A’~’F’,’a’~’f’,’0’~’9’)。

返回:如果c是一个十六进制数,isalnum函数返回1(真),否则返回0(假)。

(12)tolower

原型:char tolower(char c);

功能:tolower函数转换c为一个小写字符。如果c不是一个字母,tolower函数无效。

(13)toupper

原型:char toupper(char c);

功能:toupper函数转换c为一个大写字符。如果c表示一个字母,toupper函数无效。

参数:

返回:toupper宏返回c的大写。

(14)toint

原型:char toint(char c);

功能:toint函数解释c为十六进制值。ASCII字符’0’~’9’生成值0~9。ASCII字符’A’~’F’和’a’~’f’生成值10~15。如果c表示一个十六进制数,函数返回-1。

返回:toint宏返回c的十六进制ASCII值。

(15)_tolower

原型:#define _tolower(c) ( (c)-'A'+'a' )

功能:_tolower宏是在已知c是一个大写字符的情况下可用的lower的一个版本。

返回:_tolower宏返回c的小写。

(16)_toupper

原型:#define _toupper(c) ( (c)-'a'+'A' )

功能:_toupper宏是在已知c是一个小写字符的情况下可用的toupper的一个版本。

返回:_toupper宏返回c的大写。

(17)toascii

原型:#define toascii(c) ( (c) & 0x7F )

功能:toascii宏转换c为一个7位ASCII字符。宏只转换变量c的低7位。

返回:toascii宏返回c的7位ASCII字符。

六、跳转

(1)setjmp

原型:volatile int setjmp(jmp_buf env);

功能:setjmp函数保存当前CPU的状态在env,该状态可以调用longjmp函数来恢复。参数:当同时使用时,setjmp和longjmp函数提供一种方法实行非局部跳转。setjmp函数保存当前指令地址和别的CPU寄存器。一个longjmp的并发调用恢复指令指针和寄存器,在setjmp 调用后面恢复运行。只有声明了volatile属性的局部变量和函数参数被恢复。

返回:当CPU的当前状态被复制到env,setjmp函数返回一个0。一个非零值表示执行了longjmp函数来返回setjmp函数调用。在这种情况下,返回值是传递给longjmp函数的值。

(2)longjmp

原型:volatile void longjmp(jmp_bufenv,int retval);

功能:longjmp函数恢复用setjmp函数保存在env的状态。retval参数指定从setjmp函数调用返回值。longjmp和setjmp函数可以用来执行非局部跳转,通常用来控制一个错误恢复程序。只有用volatile属性声明的局部变量和函数参数被恢复。

七、字符串操作

(1)strcat

原型:char *strcat(char *s1,char *s2);

功能:strcat函数连接或添加s2到s1,并用NULL字符终止s1。

参数:s1目标字符串,s2源字符串。

返回:s1。

(2)strncat

原型:char *strncat(char *s1,char *s2,int len);

功能:strncat函数从s2添加最多len个字符到s1,并用NULL结束。如果s2的长度小于len,s2连带NULL全部复制。

参数:s1目标字符串,s2源字符串,len连接的最多字符数。

返回:strncat函数返回s1。

(3)strcmp

原型:char strcmp(char *s1,char *s2);

功能:strcmp函数比较字串s1和s2的内容,并返回一个值表示它们的关系。

返回:若s1s2返回正数。

(4)strncmp

原型:char *strncmp(char *s1,char *s2,int len);

功能:strncmp函数比较s1的前len字节和s2,返回一个值表示它们的关系。

参数:s1,s2为字串,len为比较的长度。

返回:若s1s2返回正数。

(5)strcpy

原型:char *strcpy(char *s1, char *s2);

功能:strcpy函数复制字符串s2到字符串s1,并用NULL字符结束s1。

参数:s1目标字符串,s2源字符串。

返回:字符串s1。

(6)strncpy

原型:char *strncpy(char *dest, char *s2, int len);

功能:strncpy函数从字符串s2复制最多len个字符到字符串s1。

返回:字符串s1。

(7)strlen

原型:int strlen(char *s);

功能:strlen函数计算字符串s的字节数,不包括NULL结束符。

参数:s要测试长度的字串。

返回:字符串s的长度。

(8)strchr

原型:char *strchr(const char *s, char c);

功能:strchr函数搜索字符串s中第一个出现的c。s中的NULL字符终止搜索。

参数:s被搜索的字符串,c要查找的字符。

返回:字符串s中指向c的指针,如没有发现则返回一个NULL指针。

(9)strops

原型:int strpos(const char *s, char c);

功能:strpos函数查找字符串s中c的第一次出现,包括s的NULL结束符。

参数:s被搜索的字符串,c要查找的字符。

返回:s中和c匹配的字符的索引。如没匹配则返回-1。s中第一个字符的索引是0。

(10)strrchr

原型:char *strrchr(const char *s, char c);

功能:strrchr函数查找字符串s中c的最后一次出现,包括s的NULL结束符。

参数:s被搜索的字符串,c要查找的字符。

返回:strrchr函数返回s中和c匹配的字符的指针,如没匹配则返回NULL。

(11)strrpos

原型:int strrpos(const char *s, char c);

功能:strrpos函数查找字符串s中c的最后一次出现,包括s的NULL结束符。

参数:s被搜索的字符串,c要查找的字符。

返回:s中和c匹配的最后字符的索引。如没匹配则返回-1,s中第一个字符的索引是0。

(12)strcspn

原型:int strcspn(char *s, char *set);

功能:在字符串s中查找字符串set中的任何字符。

参数:s源字串,set查找的字串。

返回:strcspn函数返回s中和set匹配的第一个字符的索引。如果s的第一个字符和set中的一个字符匹配,返回0。如果s中没有字符匹配,返回字符串的长度。

(13)strpbrk

原型:char *strpbrk(char *s, char *set);

功能:查找字符串s中第一个出现的set中的任何字符,不包括NULL结束符。

参数:s源字串,set查找的字串。

返回:s匹配的字符的指针。如果s没有字符和set匹配,返回一个NULL指针。

(14)strrpbrk

原型:char *strrpbrk(char *s, char *set);

功能:查找字符串s中最后一个出现的set中的任何字符,不包括NULL结束符。

返回:s最后匹配的字符的指针。如果s没有字符和set匹配,返回一个NULL指针。

(15)strspn

原型:int strspn(char *s, char *set);

功能:查找字符串s中set没有的字符。

返回:strspn函数返回s第一个和set不匹配的字符的索引。如果s中的第一个字符和set 中的字符不匹配,返回0。如果s中的所有字符set中都有,返回string的长度。

(16)strstr

原型:char *strstr(const char *s, char *sub);

功能:在字符串s中搜索子串sub。

返回:strstr函数返回子字符串sub在字符串s中第一次出现的位置的指针。指针指向第一次出现的开头。如果s中不存在sub,则返回一个NULL指针。

(17)memcmp

原型:char memcmp(void *buf1,void *buf2,int len);

功能:memcmp函数比较两个缓冲区buf1和bur2长度为len的字节,并返回一个值。

返回:若返回0,则bufl=buf2;若返回负数,则buf1bul2。

(18)memcpy

原型:void *memcpy(void *s1,void *s2,int len);

功能:memcpy函数从字符串s2复制len字节到字符串s1。如果存储缓冲区重叠,memcpy 函数不能保证s2中的那个字节在被覆盖前复制到s1。如果缓冲区重叠用memmove函数。参数:s1目标缓冲区,s2源缓冲区,len拷贝的字节数。

返回:s1。

(19)memchr

原型:void *memchr(void *buf,char c,int len);

功能:memchr函数在buf中的前len个字节中查找字符c。

返回:memchr函数返回字符c在buf中的指针,如没有则返回一个NULL指针。

(20)memccpy

原型:void *memccpy(void *dest,void *src,char c,int len);

功能:memccpy函数从src到dest复制0或更多的字符,直到字符c被复制或len字节被复制,哪个条件先遇到就执行哪个条件。

返回:memccpy函数返回一个指针,指向dest最后一个复制的字符的后一个字节。如果最后一个字符是c,则返回一个NULL指针。

(21)memmove

原型:void *memmove(void *dest,void *src,int len);

功能:memmove函数从src复制len字节到dest。如果存储缓冲区重叠,memmove函数保证src中的那个字节在被覆盖前复制到dest。

参数:dest目标缓冲区,src源缓冲区,len移动的字节数。

返回:memmove函数返回dest

(22)memset

原型:void *memset(void *buf,char c,int len);

功能:memset函数设置buf的前len字节为c。

参数:buf要初始化的缓冲区,c要设值的值,len缓冲区长度。

返回:memset函数返回dest。

八、可变参数

(1)va_arg

原型:type va_arg(argptr, type);

功能:va_arg宏用来从一个可变长度参数列表索引argptr提取并列参数。type参数指定提取参数的数据类型。本宏对每个参数只能调用一次,且必须根据参数列表中的参数顺序调用。第一次调用va_arg返回va_start宏中指定的prevparm参数后的第一个参数。后来对va_arg 的调用依次返回余下的参数。

参数:

返回:va_arg宏返回指定参数类型的值。

(2)va_end

原型:void va_end(argptr);

功能:va_end宏用来终止可变长度参数列表指针argptr的使用,argptr用va_start宏初始化。参数:

返回:无。

(3)va_start

原型:void va_start(argptr, prevparm);

功能:va_start 宏用在一个可变长度参数列表的函数中时,用va_arg 和va_end 宏初始化argptr。prevparm 参数必须是用三点号(…)指定的可选参数前紧挨的函数参数。此函数必须在用va_arg宏访问前初始化可变长度参数列表指针。

参数:

返回:无。

如何使用KEIl编写程序

Keil C软件使用 Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C 语言的程序设计,界面友好,易学易用。 下面介绍Keil C51软件的使用方法 进入Keil C51 后,屏幕如下图所示。几秒钟后出现编辑界 启动Keil C51时的屏幕 进入Keil C51后的编辑界面

简单程序的调试 学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。 1)建立一个新工程 单击Project菜单,在弹出的下拉菜单中选中New Project选项 2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51 如下图所示,然后点击保存. 3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点

击确定. 4)完成上一步骤后,屏幕如下图所示 到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。 5)在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项

新建文件后屏幕如下图所示 此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,

Excel中常用函数应用举例

Excel中常用函数应用举例 1.求和函数SUM 求和 SUM(number1,number2,...)。 使用求和函数SUM,操作步骤如下: (1)打开“员工业绩表”工作簿,选择D10单元格,如图所示。 (2)单击“插入函数”按钮,在弹出的“插入函数”对话框中选择SUM函数,单击“确定”按钮,如图所示。

(3)在打开的“函数参数”对话框中,“Number1”文本框中默认引用D3:D9单元格区域,单击“确定”按钮,如图所示。 (4)求出的和值即可显示在D10单元格中,如图所示。

2.平均值函数A VERAGE 平均值函数的原理是将所选单元格区域中的数据相加,然后除以单元格个数,返回作为结果的算术平均值,其语法结构为:A VERAGE(number1,number2,...)。 使用平均值函数A VERAGE,操作步骤如下: (1)打开“员工业绩表”工作簿,选择D11单元格,如图所示。

(2)单击“插入函数”按钮,在弹出的“插入函数”对话框中选择A VERAGE函数,单击“确定”按钮,如图所示。 (3)在打开的“函数参数”对话框中,在“Number1”文本框中输入D3:D9,设定计算平均值的单元格区域,单击“确定”按钮,如图所示。

(4)求出的平均值即显示在D11单元格中,如图所示。 3.条件函数IF 条件函数可以实现真假值的判断,它根据逻辑计算的真假值返回两种结果。该函数的语法结构为:IF(logical_test,value_if_true,value_if_false)。其中,logical_test表示计算结果为true或false的任意值或表达式;value_if_true表示当logical_test为true时返回的值;value_if_false表示当logical_test为false时返回的值。

C语言标准库函数2012

常用C语言标准库函数2012 C语言编译系统提供了众多的预定义库函数和宏。用户在编写程序时,可以直接调用这些库函数和宏。这里选择了初学者常用的一些库函数,简单介绍了各函数的用法和所在的头文件。 1.测试函数 Isalnum 原型:int isalnum(int c) 功能:测试参数c是否为字母或数字:是则返回非零;否则返回零 头文件:ctype.h Isapha 原型:int isapha(int c) 功能:测试参数c是否为字母:是则返回非零;否则返回零 头文件:ctype.h Isascii 原型:int isascii(int c) 功能:测试参数c是否为ASCII码(0x00~0x7F):是则返回非零;否则返回零 头文件:ctype.h Iscntrl 原型:int iscntrl(int c) 功能:测试参数c是否为控制字符(0x00~0x1F、0x7F):是则返回非零;否则返回零 头文件:ctype.h Isdigit 原型:int isdigit(int c) 功能:测试参数c是否为数字:是则返回非零;否则返回零。 头文件:ctype.h Isgraph 原型:int isgraph(int c) 功能:测试参数c是否为可打印字符(0x21~0x7E):是则返回非零;否则返回零头文件:ctype.h Islower 原型:int islower(int c) 功能:测试参数c是否为小写字母:是则返回非零;否则返回零 头文件:ctype.h

Isprint 原型:int isprint(int c) 功能:测试参数c是否为可打印字符(含空格符0x20~0x7E):是则返回非零;否则返回零 头文件:ctype.h Ispunct 原型:int ispunct(int c) 功能:测试参数c是否为标点符号:是则返回非零;否则返回零 头文件:ctype.h Isupper 原型:int isupper(inr c) 功能:测试参数c是否为大写字母:是则返回非零;否则返回零 Isxdigit 原型:int isxdigit(int c) 功能:测试参数c是否为十六进制数:是则返回非零;否则返回零 2.数学函数 abs 原型:int abs(int i) 功能:返回整数型参数i的绝对值 头文件:stdlib.h,math.h acos 原型:double acos(double x) 功能:返回双精度参数x的反余弦三角函数值 头文件:math.h asin 原型:double asin(double x) 功能:返回双精度参数x的反正弦三角函数值 头文件:math.h atan 原型:double atan(double x) 功能:返回双精度参数的反正切三角函数值 头文件:math.h atan2 原型:double atan2(double y,double x) 功能:返回双精度参数y和x由式y/x所计算的反正切三角函数值 头文件:math.h cabs

keil c51 详细中文手册

Keil C51使用详解 V1.0 第一章 Keil C51开发系统基本知识 (6) 第一节系统概述 (6) 第二节Keil C51单片机软件开发系统的整体结构 (6)

1. C51 for Dos 7 2. C51 for Windows的安装及注意事项: (7) 第四节Keil C51工具包各部分功能及使用简介 (7) 1. C51与A51. 7 2. L51和BL51. 8 3. DScope51,Tscope51及Monitor51. 8 4. Ishell及uVision. 9 第二章 Keil C51软件使用详解 (10) 第一节Keil C51编译器的控制指令 (10) 1. 源文件控制类 (10) 2. 目标文件(Object)控制类: (10) 3. 列表文件(listing)控制类: (10) 第二节dScope51的使用 (11) 1. dScope51 for Dos 11 2. dScope for Windows 12 第三节Monitor51及其使用 (13) 1. Monitor51对硬件的要求 (13) 2. Mon51的使用 (13) 3. MON51的配置 (13) 4. 串口连接图: (13) 5. MON51命令及使用 (14) 第四节集成开发环境(IDE)的使用 (14) 1. Ishell for Dos的使用 (14) 2. uVision for windows的使用 (15) 第三章 Keil C51 vs 标准C.. 15

第二节内存区域(Memory Areas): (16) 1. Pragram Area: (16) 2. Internal Data Memory: 16 3. External Data Memory. 16 4. Speciac Function Register Memory. 16 第三节存储模式 (16) 1. Small模式 (16) 2. Compact模式 (17) 3. large模式 (17) 第四节存储类型声明 (17) 第五节变量或数据类型 (17) 第六节位变量与声明 (17) 1. bit型变量 (17) 2. 可位寻址区说明20H-2FH.. 18 第七节Keil C51指针 (18) 1. 一般指针 (18) 2. 存储器指针 (18) 3. 指针转换 (18) 第八节Keil C51函数 (19) 1. 中断函数声明: (19) 2. 通用存储工作区 (19) 3. 选通用存储工作区由using x声明,见上例。 (19) 4. 指定存储模式 (19) 5. #pragma disable. 19 6. 递归或可重入函数指定 (19)

keil软件使用方法简介

Keil软件使用方法简介: Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,汇编语言和 C 语言的程序设计,界面友好,易学易用。 下面介绍Keil C51软件的使用方法 进入 Keil C51 后,屏幕如下图所示。几秒钟后出现编辑界 进入Keil C51后的编辑界面 简单程序的调试 学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。

(1)新建工程 单击Project菜单,在弹出的下拉菜单中选中New Project选项 然后选择你要保存的路径,输入工程文件的名字,比如保存到D盘的CMJ51文件夹里,工程文件的名字为CMJ1 如下图所示,然后点击保存. 这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定.

完成上一步骤后,屏幕如下图所示 到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。(2)新建文件 在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项

新建文件后屏幕如下图所示 此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了。 键入程序后界面如下: 单击file菜单下的save,出现一个对话框,键入文件名,后缀名为.asm,进行保存到D盘CMJ51文件夹下。界面如下:

C语言常用函数手册

1.分类函数,所在函数库为ctype.h int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0 int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0 int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0 int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F) 返回非0值,否则返回0 int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0 int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0 int islower(int ch) 若ch是小写字母('a'-'z')返回非0值,否则返回0 int isprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0 int ispunct(int ch) 若ch是标点字符(0x00-0x1F)返回非0值,否则返回0 int isspace(int ch) 若ch是空格(' '),水平制表符('\t'),回车符('\r'), 走纸换行('\f'),垂直制表符('\v'),换行符('\n') 返回非0值,否则返回0 int isupper(int ch) 若ch是大写字母('A'-'Z')返回非0值,否则返回0 int isxdigit(int ch) 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值, 否则返回0 int tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z') int toupper(int ch) 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z') 2.数学函数,所在函数库为math.h、stdlib.h、string.h、float.h int abs(int i) 返回整型参数i的绝对值 double cabs(struct complex znum) 返回复数znum的绝对值 double fabs(double x) 返回双精度参数x的绝对值 long labs(long n) 返回长整型参数n的绝对值 double exp(double x) 返回指数函数ex的值 double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中double ldexp(double value,int exp); 返回value*2exp的值 double log(double x) 返回logex的值 double log10(double x) 返回log10x的值 double pow(double x,double y) 返回xy的值 double pow10(int p) 返回10p的值 double sqrt(double x) 返回+√x的值 double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度 double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度 double atan(double x) 返回x的反正切tan-1(x)值,x为弧度 double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度double cos(double x) 返回x的余弦cos(x)值,x为弧度 double sin(double x) 返回x的正弦sin(x)值,x为弧度 double tan(double x) 返回x的正切tan(x)值,x为弧度 double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度 double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度

Keil C51 集成开发环境的使用实验报告

Keil C51 集成开发环境的使用 姓名:专业:学号:成绩: 一、实验目的 1、熟悉Kei C51集成开发环境的基本操作; 2、掌握简单Kei C51和汇编程序的编写、调试。 二、实验内容 1、仔细阅读教材相关内容,掌握KeiC51集成开发环境的基本功能; 2、分别用汇编和C51编写清零程序,把片外RAM中的7000H-70FFH单元 中内容清零; 3、分用汇编和C51编写查找相同个数程序。统计片外RAM7000H-700FH中 “00H”的个数并保存在片内RAM30H单元中。 三、实验原理与步骤 1、清零程序 (1)汇编语言程序设计框图 (2)实验步骤 用连续或单步方式运行程序,检查7000H-70FFH单元中执行内容变化。 (3)假使把7000H-70FFH中的内容改成FFH,如何修改程序。 (4)用C51 重新编写该程序,运行并查看结果。 2、查找相同数个数 (1)汇编语言程序设计框图

(2)实验步骤 ①在7000H-700FH单元中放入随机数,其中几个单元输入0; ②用连续或单步方式运行程序; ③观察片内RAM 30H的内容,应显示“00H”的个数。 (3)用C51重新编写程序,运行并查看结果。 四、实验程序 1、清零程序 (1)汇编语言 ORG 0000H MOV R0,#0100H MOV DPTR,#7000H MOV A,#0 LOOP:MOVX @DPTR,A INC DPTR DJNZ R0,LOOP END (2) C语言 #include void main() { char xdata *p=0x7000; int t=0x7100-0x7000 ; while(t--) {*p=00; p++; } } 2、查找相同数个数

工作中最常用的excel函数公式大全

工作中最常用的e x c e l函 数公式大全 -标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

工作中最常用的excel函数公式大全,帮你整理齐了,拿来即用 一、数字处理 1、取绝对值 =ABS(数字) 2、取整 =INT(数字) 3、四舍五入 =ROUND(数字,小数位数) 二、判断公式 1、把公式产生的错误值显示为空 公式:C2 =IFERROR(A2/B2,"") 说明:如果是错误值则显示为空,否则正常显示。 2、IF多条件判断返回值 公式:C2 =IF(AND(A2<500,B2="未到期"),"补款","")

说明:两个条件同时成立用AND,任一个成立用OR函数。 三、统计公式 1、统计两个表格重复的内容 公式:B2 =COUNTIF(Sheet15!A:A,A2) 说明:如果返回值大于0说明在另一个表中存在,0则不存在。 2、统计不重复的总人数 公式:C2 =SUMPRODUCT(1/COUNTIF(A2:A8,A2:A8))

说明:用COUNTIF统计出每人的出现次数,用1除的方式把出现次数变成分母,然后相加。 四、求和公式 1、隔列求和 公式:H3 =SUMIF($A$2:$G$2,H$2,A3:G3) 或 =SUMPRODUCT((MOD(COLUMN(B3:G3),2)=0)*B3:G3) 说明:如果标题行没有规则用第2个公式 2、单条件求和 公式:F2

=SUMIF(A:A,E2,C:C) 说明:SUM IF函数的基本用法 3、单条件模糊求和 公式:详见下图 说明:如果需要进行模糊求和,就需要掌握通配符的使用,其中星号是表示任意多个字符,如"*A*"就表示a前和后有任意多个字符,即包含A。 4、多条件模糊求和 公式:C11

单片机Keil C51软件的使用方法

Keil C51软件的使用 Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一体,支持汇编和C 语言的程序设计,界面友好、易学易用。下面介绍Keil C51软件的使用方法: 1.启动Keil C51,界面如下图。 启动Keil C51时的屏幕 进入Keil C51后的编辑界面 2.建立一个新工程。

(1)单击工程菜单,在弹出的下拉菜单中选中新建工程选项。 (2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51,如下图所示,然后点击保存。 (3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,Keil C51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定。

(4)完成上一步骤后,屏幕如下图所示。 (5)单击文件菜单,再在下拉菜单中单击新建选项,屏幕如下图所示。

此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,建议首先保存该空白的文件,单击文件菜单,在下拉菜单中选中另存为选项单击,屏幕如下图所示,在文件名栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。 注意,如果用C语言编写程序,则扩展名为.c;如果用汇编语言编写程序,则扩展名必须为.asm。然后,单击保存按钮。

回到编辑界面后,单击目标1前面的+号,然后在源程序组1上单击右键,弹出如下菜单, 然后单击增加文件到组‘源程序组1’,屏幕如下图所示, 选中c51.asm,然后单击Add,屏幕如下图所示,

工作中最常用的excel函数公式大全

工作中最常用的excel函数公式大全,帮你整理齐了,拿来即用 一、数字处理 1、取绝对值 =ABS(数字) 2、取整 =INT(数字) 3、四舍五入 =ROUND(数字,小数位数) 二、判断公式 1、把公式产生的错误值显示为空 公式:C2 =IFERROR(A2/B2,"") 说明:如果是错误值则显示为空,否则正常显示。 2、IF多条件判断返回值 公式:C2 =IF(AND(A2<500,B2="未到期"),"补款","")

说明:两个条件同时成立用AND,任一个成立用OR函数。 三、统计公式 1、统计两个表格重复的内容 公式:B2 =COUNTIF(Sheet15!A:A,A2) 说明:如果返回值大于0说明在另一个表中存在,0则不存在。 2、统计不重复的总人数 公式:C2

=SUMPRODUCT(1/COUNTIF(A2:A8,A2:A8)) 说明:用COUNTIF统计出每人的出现次数,用1除的方式把出现次数变成分母,然后相加。 四、求和公式 1、隔列求和 公式:H3 =SUMIF($A$2:$G$2,H$2,A3:G3) 或 =SUMPRODUCT((MOD(COLUMN(B3:G3),2)=0)*B3:G3) 说明:如果标题行没有规则用第2个公式 2、单条件求和

公式:F2 =SUMIF(A:A,E2,C:C) 说明:SUM IF函数的基本用法 3、单条件模糊求和 公式:详见下图 说明:如果需要进行模糊求和,就需要掌握通配符的使用,其中星号是表示任意多个字符,如"*A*"就表示a前和后有任意多个字符,即包含A。

4、多条件模糊求和 公式:C11 =SUMIFS(C2:C7,A2:A7,A11&"*",B2:B7,B11) 说明:在sumifs中可以使用通配符* 5、多表相同位置求和 公式:b2 =SUM(Sheet1:Sheet19!B2) 说明:在表中间删除或添加表后,公式结果会自动更新。 6、按日期和产品求和 公式:F2

KeilC51使用详解

KeilC51使用说明 首先启动Keil μVision2程序,首次进入 Keil μVision2的编辑界面如图1所示,否则,会打开用户前一次处理的工程。 图1 首次进入Keil μVision2的编辑界面 下面通过简单的编程、调试,引导大家学习Keil μVision2软件中Keil Monitor-51 Driver 仿真器的基本使用方法和基本调试技巧。 1 工程的建立 单击“项目->新建项目…”菜单,弹出创建新工程对话框,如图2所示。选择你要保存的路径, 输入工程文件的名字, 不需要输入扩展名。比如保存到JY_E2X00目录里,工程文件的名字为 Test1,如图(2)所示,然后点击“保存”,保存后的文件扩展名为.uv2,这是KeilμVision2项 目文件扩展名。以后我们可以直接点击此文件来打开已创建的工程。 图2 创建新工程对话框

这时会弹出一个对话框,要求选择目标CPU(即用户所用单片机的型号),Keil μVision 几乎支持所有的51内核的单片机,我们以AT89S52芯片为例,如图3所示, 在左侧的Data base列表框中点击Atmel前面的“+”号,展开该层,选中AT89S52,在其右边的Description显示区域。中是对这个单片机的基本描述,然后再点击“确定”按钮. 图3 为工程选择目标CPU 窗口会出现询问是否添加startup.a51,如图4:请选择“否”。 图4 此时,在工程窗口的文件页中,出现了“Target 1”,前面有“+”号,点击“+”号展开,可以看到下一层的“Source Group1”,这时的工程还是一个空的工程,里面什么文件也没有,需要为这个工程添加文件。如图5所示。

工作中最常用的excel函数公式大全

工作中最常用的excel函数公式大全 一、数字处理 1、取绝对值=ABS(数字) 2、取整=INT(数字) 3、四舍五入=ROUND(数字,小数位数) 二、判断公式 1、把公式产生的错误值显示为空 公式:C2=IFERROR(A2/B2,"") 说明:如果是错误值则显示为空,否则正常显示。 2、IF多条件判断返回值公式: C2=IF(AND(A2<500,B2="未到期"),"补款","") 说明:两个条件同时成立用AND,任一个成立用OR函数。

1、统计两个表格重复的内容 公式:B2=COUNTIF(Sheet15!A:A,A2) 说明:如果返回值大于0说明在另一个表中存在,0则不存在。 2、统计不重复的总人数 公式:C2=SUMPRODUCT(1/COUNTIF(A2:A8,A2:A8)) 说明:用COUNTIF统计出每人的出现次数,用1除的方式把出现次数变成分母,然后相加。

1、隔列求和 公式:H3=SUMIF($A$2:$G$2,H$2,A3:G3) 或=SUMPRODUCT((MOD(COLUMN(B3:G3),2)=0)*B3:G3) 说明:如果标题行没有规则用第2个公式 2、单条件求和 公式:F2=SUMIF(A:A,E2,C:C) 说明:SUMIF函数的基本用法

3、单条件模糊求和 公式:详见下图 说明:如果需要进行模糊求和,就需要掌握通配符的使用,其中星号是表示任意多个字符,如"*A*"就表示a前和后有任意多个字符,即包含A。 4、多条件模糊求和 公式:C11=SUMIFS(C2:C7,A2:A7,A11&"*",B2:B7,B11) 说明:在sumifs中可以使用通配符*

Keil-C51-基本使用方法 (1) 。。。。2

、Keil C51工程建立与仿真 1、建立一个工程项目,选择芯片并确定选项 双击Keil uVision2快捷图标后进入Keil C51开发环境,单击“工程”菜单,在弹出的下拉菜单选中“新工程”选项,屏幕显示为图1。附录: 一 图1 建立一个工程项目在文件名中输入一个项目名“my-test”,选择保存路径(可在 “我的 文档” 中先建 立一个 同名的

文件夹),单击保存。在随后弹出的“为目标target选择设备”(Select Device for Target “Target1”)对话框中用鼠标单击Atmel前的“+”号,选择“89C51”单片机后按确定,如图2所示。 图 2 选择单片机后按确定 选择主菜单栏中的“工程”,选中下拉菜单中“Options for Target ‘Target1’”,出现图3所示的界面。单击“target”页面,在晶体Xtal(MHz)栏中选择试验板的晶振频率,默认为24MHz,我们讲座试验板的晶振频率为11.0592MHz,因此要将24.0改为11.0592。然后单击输出“Output”页面,在“建立hex格式文件”前打勾选中,如图3-4。其它采用默认设置,然后点确定。 图3 选择Target

页面 图4 选择Output页面 2、建立源程序文件 图 5 建立源程序文件

程序输入完成后,选择“文件”,在下拉菜单中选中“另存为”,将该文件以扩展名为.asm格式(如my-test.asm)保存在刚才所建立的一个文件夹中(my-test)。 3、添加文件到当前项目组中 单击工程管理器中“Target 1”前的“+”号,出现“Source Group1”后再单击,加亮后右击。在出现的下拉窗口中选择“Add Files to Group‘Source Group1’”,如图6所示。在增加文件窗口中选择刚才以asm格式编辑的文件my-test.asm,鼠标单击“ADD”按钮,这时my-test.asm文件便加入到Source Group1这个组里了,随后关闭此对话窗口。 图 6 添加文件到当前项目组中 4、编译(汇编)文件 选择主菜单栏中的“工程”,在下拉菜单中选中“重建

EXCEL中常用函数及使用方法

EXCEL中常用函数及使用方法 Excel函数一共有11类:数据库函数、日期与时间函数、工程函数、财务函数、信息函数、逻辑函数、查询和引用函数、数学和三角函数、统计函数、文本函数以及用户自定义函数。 1.数据库函数 当需要分析数据清单中的数值是否符合特定条件时,可以使用数据库工作表函数。例如,在一个包含销售信息的数据清单中,可以计算出所有销售数值大于1,000 且小于2,500 的行或记录的总数。Microsoft Excel 共有12 个工作表函数用于对存储在数据清单或数据库中的数据进行分析,这些函数的统一名称为Dfunctions,也称为D 函数,每个函数均有三个相同的参数:database、field 和criteria。这些参数指向数据库函数所使用的工作表区域。其中参数database 为工作表上包含数据清单的区域。参数field 为需要汇总的列的标志。参数criteria 为工作表上包含指定条件的区域。 2.日期与时间函数 通过日期与时间函数,可以在公式中分析和处理日期值和时间值。 3.工程函数 工程工作表函数用于工程分析。这类函数中的大多数可分为三种类型:对复数进行处理的函数、在不同的数字系统(如十进制系统、十六进制系统、八进制系统和二进制系统)间进行数值转换的函数、在不同的度量系统中进行数值转换的函数。 4.财务函数 财务函数可以进行一般的财务计算,如确定贷款的支付额、投资的未来值或净现值,以及债券或息票的价值。财务函数中常见的参数: 未来值(fv)--在所有付款发生后的投资或贷款的价值。 期间数(nper)--投资的总支付期间数。 付款(pmt)--对于一项投资或贷款的定期支付数额。 现值(pv)--在投资期初的投资或贷款的价值。例如,贷款的现值为所借入的本金数额。 利率(rate)--投资或贷款的利率或贴现率。 类型(type)--付款期间内进行支付的间隔,如在月初或月末。 5.信息函数 可以使用信息工作表函数确定存储在单元格中的数据的类型。信息函数包含一组称为IS 的工作表函数,在单元格满足条件时返回TRUE。例如,如果单元格包含一个偶数值,ISEVEN 工作表函数返回TRUE。如果需要确定某个单元格区域中是否存在空白单元格,可以使用COUNTBLANK 工作表函数对单元格区域中的空白单元格进行计数,或者使用ISBLANK 工作表函数确定区域中的某个单元格是否为空。 6.逻辑函数 使用逻辑函数可以进行真假值判断,或者进行复合检验。例如,可以使用IF 函数确定条件为真还是假,并由此返回不同的数值。

EXCEL常用函数大全

EXCEL常用函数大全(做表不求人!) 2013-12-03 00:00 我们在使用Excel制作表格整理数据的时候,常常要用到它的函数功能来自动统计处理表格中的数据。这里整理了Excel中使用频率最高的函数的功能、使用方法,以及这些函数在实际应用中的实例剖析,并配有详细的介绍。 1、ABS函数 函数名称:ABS 主要功能:求出相应数字的绝对值。 使用格式:ABS(number) 参数说明:number代表需要求绝对值的数值或引用的单元格。 应用举例:如果在B2单元格中输入公式:=ABS(A2),则在A2单元格中无论输入正数(如100)还是负数(如-100),B2中均显示出正数(如100)。 特别提醒:如果number参数不是数值,而是一些字符(如A等),则B2中返回错误值“#VALUE!”。

2、AND函数 函数名称:AND 主要功能:返回逻辑值:如果所有参数值均为逻辑“真(TRUE)”,则返回逻辑“真(TRUE)”,反之返回逻辑“假(FALSE)”。 使用格式:AND(logical1,logical2, ...) 参数说明:Logical1,Logical2,Logical3……:表示待测试的条件值或表达式,最多这30个。 应用举例:在C5单元格输入公式:=AND(A5>=60,B5>=60),确认。如果C5中返回TRUE,说明A5和B5中的数值均大于等于60,如果返回FALSE,说明A5和B5中的数值至少有一个小于60。 国美提醒:如果指定的逻辑条件参数中包含非逻辑值时,则函数返回错误值“#VALUE!”或“#NAME”。 3、AVERAGE函数 函数名称:AVERAGE 主要功能:求出所有参数的算术平均值。

C语言中常用的库函数

字符处理函数 本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换 头文件ctype.h 函数列表<> 函数类别函数用途详细说明 字符测试是否字母和数字isalnum 是否字母isalpha 是否控制字符iscntrl 是否数字isdigit 是否可显示字符(除空格外)isgraph 是否可显示字符(包括空格)isprint 是否既不是空格,又不是字母和数字的可显示字符ispunct 是否空格isspace 是否大写字母isupper 是否16进制数字(0-9,A-F)字符isxdigit 字符大小写转换函数转换为大写字母toupper 转换为小写字母tolower 地区化 本类别的函数用于处理不同国家的语言差异。 头文件local.h 函数列表 函数类别函数用途详细说明 地区控制地区设置setlocale 数字格式约定查询国家的货币、日期、时间等的格式转换localeconv 数学函数 本分类给出了各种数学计算函数,必须提醒的是ANSI C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklin C51) 头文件math.h 函数列表 函数类别函数用途详细说明 错误条件处理定义域错误(函数的输入参数值不在规定的范围内) 值域错误(函数的返回值不在规定的范围内) 三角函数反余弦acos 反正弦asin

反正切atan 反正切2 atan2 余弦cos 正弦sin 正切tan 双曲函数双曲余弦cosh 双曲正弦sinh 双曲正切tanh 指数和对数指数函数exp 指数分解函数frexp 乘积指数函数fdexp 自然对数log 以10为底的对数log10 浮点数分解函数modf 幂函数幂函数pow 平方根函数sqrt 整数截断,绝对值和求余数函数求下限接近整数ceil 绝对值fabs 求上限接近整数floor 求余数fmod 本分类函数用于实现在不同底函数之间直接跳转代码。头文件setjmp.h io.h 函数列表 函数类别函数用途详细说明 保存调用环境setjmp 恢复调用环境longjmp 信号处理 该分类函数用于处理那些在程序执行过程中发生例外的情况。 头文件signal.h 函数列表 函数类别函数用途详细说明 指定信号处理函数signal 发送信号raise 可变参数处理 本类函数用于实现诸如printf,scanf等参数数量可变底函数。

keil+c51教程

Keil uVision2的使用 Keil uVision2是目前使用广泛的单片机开发软件,它集成了源程序编辑和程序调试于一体,支持汇编、C、PL/M语言。 这里我们仅仅介绍Keil uVision2的简单使用,更详细的使用方法见本光盘单片机软件\Keil c51\Keil书籍与资料目录中的内容。 keil C51v6.12的安装: 先运行光盘中单片机软件\setup\setup.exe安装程序,选择安装“Eval Version”版进行安装。一直点击“Yes”或“Next”,直到“Finish”完成。 之后运行同目录中的Keil uv2汉化安装.exe安装汉化程序。 安装好后,在桌面上会产生快捷图标,如下图: keil C51v6.12的使用: 点击桌面快捷图标,可以直接进入主画面:

序。 在Keil系统中,每做个独立的程序,都视为工程(或者叫项目)。首先从菜但的“工程”中“新建工程...”,建立我们将要做的工程项目: 新建的工程要起个与工程项目意义一致的名字,可以是中文名;我们这里的程序是实验测试程序,所以起的名字为Test,并将Test工程“保存”到 C:\Keil下:

接下来,Keil环境要求我们为Test工程选择一个单片机型号;我们选择Atmel公司的89C51(虽然我们使用的是89S51,但由于89S51与89C51内、外部结构完全一样,所以这里依然选择“89C51”)。“确定”后工程项目就算建立了。

立了工程项目,肯定要实施这个工程,现在就为工程添加程序; 点击“文件”中的“新建”,新建一个空白文档;这个空白文档就是让我们编写单片机程序的场所。在这里你可以进行编辑、修改等操作。 根据题意,在文档中写入下列代码:(下列代码你暂时不要管什么意思,只要照抄正确就可以,今后在学习汇编时你会明白的) mov p0,#01010101B;将01010101二进制代码送P0口 ajmp$;程序在此原地踏步 end;程序结束标志 写完后再检查一下,并保存文件,保存文件时,其文件名最好与前面建立的工程名相同(当然这里为Test了),其扩展名必须为.Asm!“文件名”中一定要写全,如:Test.Asm;保存后的文档彩色语法会起作用,将关键字实行彩色显示:

Keil软件介绍及使用步骤

KEIL51软件简介 单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。 Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB 或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP 等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 1.1.1 软件功能 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 C51工具包的整体结构,其中μVision与Ishell分别是C51 for Windows 和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。 Keil51的编译环境如图5-1所示。 图中:

EXCEL电子表格中四个常用函数的用法

EXCEL电子表格中四个常用函数的用法 (2010-01-16 09:59:27) 转载▼ 分类:Excel学习 标签: 杂谈 EXCEL电子表格中四个常用函数的用 法 现在介绍四个常用函数的用法:COUNT(用于计算单元格区域中数字值的个数)、COUNTA(用于计算单元格区域中非空白单元格的个数)、COUNTBLANK(用于计算单元格区域中空白单元格的个数)、COUNTIF(用于计算符合一定条件的COUNTBLANK单元格个数)。 结合例子将具体介绍:如何利用函数COUNTA统计本班应考人数(总人数)、利用函数COUNT统计实际参加考试人数、利用函数COUNTBLANK统计各科缺考人数、利用函数COUNTIF统计各科各分数段的人数。首先,在上期最后形成的表格的最后添加一些字段名和合并一些单元格,见图1。 一、利用函数COUNTA统计本班的应考人数(总人数) 因为函数COUNTA可以计算出非空单元格的个数,所以我们在利用此函数时,选取本班学生名字所在单元格区域(B3~B12)作为统计对象,就可计算出本班的应考人数(总人数)。 1.选取存放本班总人数的单元格,此单元格是一个经过合并后的大单元格(C18~G18); 2.选取函数;单击菜单“插入/函数”或工具栏中的函数按钮f*,打开“粘贴函数”对话框,在“函数分类”列表中选择函数类别“统计”,然后在“函数名”列表中选择需要的函数“COUNTA”,按“确定”按钮退出“粘贴函数”对话框。 3.选取需要统计的单元格区域;在打开的“函数向导”对话框中,选取需要计算的单元格区域B3~B13,按下回车键以确认选取;“函数向导”对话框图再次出现在屏幕上,按下“确定”按钮,就可以看到计算出来本班的应考人数(总人数)了。

Keil c51的使用及界面翻译

Keil C51的使用方法 Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。 下面介绍Keil C51软件的使用方法 进入Keil C51 后,屏幕如下图所示。几秒钟后出现编辑界

进入Keil C51后的编辑界面 简单程序的调试 学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。 1)建立一个新工程 单击Project菜单,在弹出的下拉菜单中选中New Project选项 2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51 如下图所示,然后点击保存.

3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定. 4)完成上一步骤后,屏幕如下图所示

到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。 5)在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项 新建文件后屏幕如下图所示 此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写

相关文档
最新文档