历史上的今天
今天是:2025年02月28日(星期五)
2020年02月28日 | 单片机C51串口printf的使用方法
2020-02-28 来源:eefocus
串口printf的使用
函数原型如下:
void USART0_Printf(char *fmt,...)//这个是我们的printf函数
{
char* ap; //typedef char *va_list; va_list是char型的指针
charxdata string[128]; //访问外部RAM 两字节对齐
va_start(ap,fmt); //这个函数的功能是,找到第一个可变形参的地址,并把地址赋给ap
vsprintf(string,fmt,ap);
USART0_SendString(string); //这个函数就是发送字符串函数,通过上一个函数,就把该提取的东西都提取了
va_end(ap); //结束函数
}
这个函数在51调试的时候还是非常好用的,特别是又用串口ISP下载的用户。接下来简述下函数的用法:
1、在编写函数之前,首先需要添加stdarg.h头文件,其中va_start和va_end函数就是这个里面的库。
2、其次就是需要分配一个空间,例如上面的char xdata string[128]; 因为空间有限,我这里给的是外部128字节。打印的长度超出了可能就会出问题了,根据情况,在空间充足的情况下可以分配大一点。
3、编写底层的串口打印字符串函数,在51的程序里我一般写成如下:
//串口0发送一个字节
void USART0_SendByte(u8 value)
{
SBUF= value; //发送一个字节
while(!TI); //等待TI置1
TI=0;
}
//串口0发送字符串
void USART0_SendString(u8 *dat)
{
while(*dat!='




