标题: 分享一个51单片机实现printf串口打印方法 附源程序 [打印本页]

作者: 没有你    时间: 2019-7-22 17:22
标题: 分享一个51单片机实现printf串口打印方法 附源程序
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;     
     }   
}

作者: xiaozhong1314    时间: 2019-7-22 21:50
有工程吗
作者: 没有你    时间: 2019-7-23 09:09
986212146 发表于 2019-7-22 21:50
有工程吗

没有工程。我这个只是提供一个串口打印的方法。就算是其他类型的单片机,也可以这样处理。也就是直接修改void Uart_write((uint8*)pBuf,ulLen)里面的串口发送驱动部分




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1