下面是基于 51 单片机的 C语言代码,实现打印整数功能,不使用 printf 函数:

void printInt(unsigned int num) {
    unsigned char buf[16];
    unsigned char i, j;

    if (num == 0) {
        SBUF = '0';
        while (!TI);
        TI = 0;
        return;
    }

    for (i = 0; num > 0; i++) {
        buf[i] = num % 10;
        num /= 10;
    }

    for (j = i; j > 0; j--) {
        SBUF = buf[j-1] + '0';
        while (!TI);
        TI = 0;
    }
}

该函数使用了串口通讯,将整数转换为字符串后逐位发送给串口进行打印输出。具体实现方法如下:

  1. 定义一个长度为 16 的字符数组 buf,用于存储整数的每一位。

  2. 如果 num 为 0,则直接发送字符 '0' 并返回。

  3. 对于非零的整数 num,先将其每一位存入 buf 数组中。

  4. buf 数组的最高位开始,逐位发送给串口输出,注意要将数字转换为对应的字符。

  5. 在每一次发送字符之后,等待串口传输完成(TI 标志置位),然后清除 TI 标志,以便进行下一次发送。

该函数的使用方法如下:

unsigned int num = 12345;
printInt(num);

执行该代码后,串口将依次输出字符 '1'、'2'、'3'、'4'、'5',完成整数的打印输出。


原文地址: https://www.cveoy.top/t/topic/nCB6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录