函数库

C语言函数库

公共函数库

Keil C51 的扩展库

intrins.h

1. nop()

  • 功能: 执行一个空操作(No Operation)指令,通常用于时间延迟或指令间隙。

  • 原型: void _nop_(void);

  • 示例:

    1
    _nop_();  // 执行一个空指令

2. cror()

  • 功能: 对字节数据进行循环右移。

  • 原型: unsigned char _cror_(unsigned char data, unsigned char count);

  • 参数:

    • data: 待操作的字节。
    • count: 右移的位数。
  • 示例:

    1
    unsigned char result = _cror_(0x85, 2);  // 0x85 右移2位得到 0x61

3. crol()

  • 功能: 对字节数据进行循环左移。

  • 原型: unsigned char _crol_(unsigned char data, unsigned char count);

  • 参数:

    • data: 待操作的字节。
    • count: 左移的位数。
  • 示例:

    1
    unsigned char result = _crol_(0x85, 2);  // 0x85 左移2位得到 0x14

4. testbit()

  • 功能: 测试某个位是否为 1。

  • 原型: bit _testbit_(bit b);

  • 参数:

    • b: 指定的位变量。
  • 返回值:

    • 1: 如果该位为高。
    • 0: 如果该位为低。
  • 示例:

    1
    2
    3
    if (_testbit_(P1^0)) {
    // 如果P1.0为高电平,执行此处代码
    }

5. setbit()

  • 功能: 设置某个位为 1。

  • 原型: void _setbit_(bit b);

  • 参数*:

    • b: 指定的位变量。
  • 示例:

    1
    _setbit_(P1^0);  // 将P1.0置为高电平

6. clrbit()

  • 功能: 将某个位清零(置为0)。

  • 原型: void _clrbit_(bit b);

  • 参数:

    • b: 指定的位变量。
  • 示例:

    1
    _clrbit_(P1^0);  // 将P1.0置为低电平

7. changebit()

  • 功能: 反转某个位的状态(0变为1,1变为0)。

  • 原型: void _changebit_(bit b);

  • 参数:

    • b: 指定的位变量。
  • 示例:

    1
    _changebit_(P1^0);  // 如果P1.0为0,变为1;反之亦然

8. swap()

  • 功能: 将字节的高 4 位和低 4 位互换。

  • 原型: unsigned char _swap_(unsigned char data);

  • 参数:

    • data: 输入的字节数据。
  • 示例:

    1
    unsigned char result = _swap_(0xAB);  // 0xAB 交换后变为 0xBA

9. norm()

  • 功能: 归一化操作,将字节数据中最高位的1右移到最低有效位(MSB移到LSB)。

  • 原型: unsigned char _norm_(unsigned char data);

  • 参数:

    • data: 输入字节。
  • 示例:

    1
    unsigned char result = _norm_(0x10);  // 返回值为 0x01

10. high()

  • 功能: 获取 16 位数据的高字节。

  • 原型: unsigned char _high_(unsigned int data);

  • 参数:

    • data: 输入的 16 位数据。
  • 示例:

    1
    unsigned char high = _high_(0x1234);  // 返回值为 0x12

11. low()

  • 功能: 获取 16 位数据的低字节。

  • 原型: unsigned char _low_(unsigned int data);

  • 参数:

    • data: 输入的 16 位数据。
  • 示例:

    1
    unsigned char low = _low_(0x1234);  // 返回值为 0x34

12. bittest()

  • 功能: 测试一个字节中特定位是否为 1。

  • 原型: bit _bittest_(unsigned char data, unsigned char bit);

  • 参数:

    • data: 输入字节。
    • bit: 位的索引(0-7)。
  • 返回值:

    • 1: 如果该位为高。
    • 0: 如果该位为低。
  • 示例:

    1
    2
    3
    if (_bittest_(0x85, 2)) {
    // 如果0x85的第2位为1,执行代码
    }

13. bitset()

  • 功能: 设置一个字节中特定位为 1。

  • 原型: unsigned char _bitset_(unsigned char data, unsigned char bit);

  • 参数:

    • data: 输入字节。
    • bit: 位的索引(0-7)。
  • 返回值:

    • 设置指定位后的新字节。
  • 示例:

    1
    unsigned char result = _bitset_(0x85, 2);  // 设置第2位后,结果为 0x8D

14. bitclear()

  • 功能: 将一个字节中特定位清零。

  • 原型: unsigned char _bitclear_(unsigned char data, unsigned char bit);

  • 参数:

    • data: 输入字节。
    • bit: 位的索引(0-7)。
  • 返回值:

    • 清零指定位后的新字节。
  • 示例:

    1
    unsigned char result = _bitclear_(0x8D, 2);  // 清除第2位后,结果为 0x85