用C语言基于51单片机不使用printf写一个打印整数的函数;
下面是基于51单片机的C语言代码,实现打印整数功能:
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;
}
}
该函数使用了串口通讯,将整数转换为字符串后逐位发送给串口进行打印输出。具体实现方法如下:
-
定义一个长度为16的字符数组buf,用于存储整数的每一位。
-
如果num为0,则直接发送字符'0'并返回。
-
对于非零的整数num,先将其每一位存入buf数组中。
-
从buf数组的最高位开始,逐位发送给串口输出,注意要将数字转换为对应的字符。
-
在每一次发送字符之后,等待串口传输完成(TI标志置位),然后清除TI标志,以便进行下一次发送。
该函数的使用方法如下:
unsigned int num = 12345;
printInt(num);
执行该代码后,串口将依次输出字符'1'、'2'、'3'、'4'、'5',完成整数的打印输出
原文地址: https://www.cveoy.top/t/topic/dan7 著作权归作者所有。请勿转载和采集!