原标题:
[51单片机]keil
C51中的本征函数库及使用说明
为方便自己查找,已将标题改名
原文来源:/hooyang@126/blog/static/11894545282611383998/
本征函数(intrinsicroutines)是指编译时直接将固定代码插入当前行,而不用ACALL和LCALL
来实现(无需堆栈操作?),可大大提高函数的访问效率.
函数原型
extern
void_nop_(void);
extern
bit_testbit_ (bit);
extern unsigned char
_cror_(unsigned char, unsigned char);
extern unsigned int_iror_(unsigned int,unsigned char);
extern unsigned long
_lror_(unsigned long, unsigned char);
extern unsigned char
_crol_(unsigned char, unsigned char);
extern unsigned int_irol_(unsigned int,unsigned char);
extern unsigned long
_lrol_(unsigned long, unsigned char);
extern unsigned char _chkfloat_(float);
头文件
#include
说明
extern
void_nop_(void);
产生一个nop指令
extern bit_testbit_ (bit);
产生一个JBC指令,若该位置位,返回1,否则为0;只能作用于直接寻址的位变量,不能用于表达式
之中
extern unsigned char
_cror_(unsigned char val, unsigned char n);
(unsigned char)val右移n位
extern unsigned int_iror_(unsigned int val, unsigned char n));
(unsigned int)val右移n位
extern unsigned long
_lror_(unsigned long val, unsigned char n));
(unsigned long)val右移n位
extern unsigned char
_crol_(unsigned char val, unsigned char n));
(unsigned char)val左移n位
extern unsigned int_irol_(unsigned int val, unsigned char n));
(unsigned int)val左移n位
extern unsigned long
_lrol_(unsigned long val, unsigned char n));
(unsigned long)val左移n位
extern unsigned char _chkfloat_(float);
测试并返回float的状态
一下摘自keil C51的帮助文档
0 Standard floating-point numbers 标准浮点数
1 Floating-point value 0 浮点数0
2 +INF (positive overflow) 正溢出
3 -INF (negative overflow) 负溢出
4 NaN (Not a Number) error status出错
参考文献
李军等编著.51系列单片机高级实例开发指南.北京-北京航空航天大学出版社
keil software,inc.C51 user's guide