51单片机具有收发串口,可以可PC进行串口通信。但是如果要实现类似printf(“data = %d\naddr data = %x\n”,a,&a),就需要写一个printf函数,里面封装串口发送功能。//printf打印函数
int Printf(const char*fmt, ...)
{
int ulLen;
va_list ap;
char *pBuf = (char*)malloc(200); // 开辟缓冲区
va_start(ap, fmt);
ulLen = vsprintf(pBuf, fmt, ap); // 用虚拟打印函数实现
va_end(ap);
Uart_write((uint8*)pBuf, ulLen); // 从串口0输出
free(pBuf); // 释放内存空间
PBuf = NULL;
return ulLen;
};
//串口发送ullen个字节的数据函数
void Uart_write((uint8*)pBuf, ulLen)
{
uint8 i;
for(i = 0; i < ullen ; i++)
{
SBUF=*pBuf; //数据加载到发送缓冲区
while(!TI); //等待发送完成
pBuf++; //指针指向下一组数据
TI=0;
}
}
|