51 单片机一般很少专门带有可以方便输出信息的屏幕。有时候拿到一块最小系统的单片机,甚至连指示灯都没有,这时候如果想知道其输出是否符合预期,串口是一个非常不错的选择。
在 stm32 单片机上开发时,使用过 c 语言标准库里的
printf
函数,很方便就可以把想要展示的包括字符串、数字等信息输出到串口,这样,在电脑上就可以判断输出是否符合预期。今天突发奇想,想试试 51单片机
是否可以使用 printf
函数,结果还真实现了,只不过数字需要小小的转换。以下是小 demo
\#include "reg51.h"
#include "stdio.h"
#define FOSC 11059200L
#define BAUD 9600
void InitUart()
{
SCON = 0x5a;
TMOD = 0x20;
TH1 = TL1 = -(FOSC/12/32/BAUD);
TR1 = 1;
ES = 1;
EA = 1;
}
void main()
{
InitUart();
printf("hello world, num: %d\n", (int)98);
while(1);
}
代码很简单,把串口配置一下,包含一下
"stdio.h"
就可以使用printf
函数了。不过,貌似我使用的这款单片机会把 printf
函数参数里的%d
识别为字符,所以使用 (int)
强制类型转换了一下。编译,下载到单片机里,在电脑端打开串口调试助手,发现成功了,输出符合预期。