1、intrins.h在 C51 单 片 机 编 程 中 , 头 文 件 INTRINS.H 的 函 数 使 用 起 来 , 就 会 让 你 像在 用 汇 编 时 一 样 简 便 . 内 部 函 数 描 述_crol_ 字 符 循 环 左 移 _cror_ 字 符 循 环 右 移 _irol_ 整 数 循 环 左 移 _iror_ 整 数 循 环 右 移 _lrol_ 长 整 数 循 环 左 移 _lror_ 长 整 数 循 环 右 移 _nop_ 空 操 作 8051 NOP 指 令 _testbit_ 测 试 并 清 零 位 8051 JBC 指 令 函 数 名 : _crol_, _irol
2、_, _lrol_ 原 型 : unsigned char _crol_(unsigned char val,unsigned char n); unsigned int _irol_(unsigned int val,unsigned char n); unsigned int _lrol_(unsigned int val,unsigned char n); 举 例 : _crol_,_cror_: 将 char 型 变 量 循 环 向 左 (右 )移 动 指 定 位 数 后 返 回 _testbit_: 相 当 于 JBC bitvar 测 试 该 位 变 量 并 跳 转 同 时 清 除
3、 。 _chkfloat_: 测 试 并 返 回 源 点 数 状 态 。 就 是 汇 编 中 的 子 函 数 。 _crol_,_cror_: 如 果 二 进 制 数 为 01010101 那 么 _crol_(1) 左 移 1 位后 将 高 位 补 低 位 。 结 果 10101010。 功 能 : _crol_, _irol_, _lrol_以 位 形 式 将 val 左 移 n 位 , 该 函 数 与8051“RLA”指 令 相 关 , 上 面 几 个 函 数 不 同 于 参 数 类 型 。 例 : #include main() unsigned int y; y=0x00ff; y=
4、_irol_(y,4); 函 数 名 : _cror_, _iror_, _lror_ 原 型 : unsigned char _cror_(unsigned char val,unsigned char n); unsigned int _iror_(unsigned int val,unsigned char n); unsigned int _lror_(unsigned int val,unsigned char n); 功 能 : _cror_, _iror_, _lror_以 位 形 式 将 val 右 移 n 位 , 该 函 数 与8051“RRA”指 令 相 关 , 上 面 几
5、 个 函 数 不 同 于 参 数 类 型 。 例 : #include main() unsigned int y; y=0x0ff00; y=_iror_(y,4); 函 数 名 : _nop_ 原 型 : void _nop_(void); 功 能 : _nop_产 生 一 个 NOP 指 令 ,该 函 数 可 用 作 C 程 序 的 时 间 比 较 。C51 编 译 器 在 _nop_函 数 工 作 期 间 不 产 生 函 数 调 用 , 即 在 程 序 中 直 接 执 行 了NOP 指 令 。 例 : P()=1; _nop_(); P()=0; 函 数 名 : _testbit_ 原 型 : bit _testbit_(bit x); 功 能 : _testbit_产 生 一 个 JBC 指 令 , 该 函 数 测 试 一 个 位 , 当 置 位 时 返回 1, 否 则 返 回 0。 如 果 该 位 置 为 1, 则 将 该 位 复 位 为 0。 8051 的 JBC 指 令即 用 作 此 目 的 。 _testbit_只 能 用 于 可 直 接 寻 址 的 位 ; 在 表 达 式 中 使 用 是 不允 许 的 。