51单片机自定义函数实现任意串口的printf()

    在嵌入式开发过程中,往往需要多个串口进行通讯,使用printf函数是个不错的选择,格式化输出后方便实用;
不论什么型号的单片机,只要支持标准C的编译器,都可以实现此功能,

    添加如下头文件;

#include "stdio.h"
#include "string.h"
#include "stdarg.h"	 

    下面是函数定义,可以移植到任意的串口;

bit S1_busy;
unsigned char idata Put_buf[100];		//最大数量
void my_printf(char* fmt,...)
{
	unsigned char i,len;
	va_list ap;
	va_start(ap,fmt);
	len=vsprintf((char*)Put_buf,fmt,ap);
	va_end(ap);
	
	for(i=0;i<len;i++)			//把缓存内的字符发送出去
	{	
		while(S1_busy);             	//等待前面的数据发送完成
		S1_busy=1;	
		SBUF=Put_buf[i];		//发送一个字节
	}
	memset(Put_buf,0,sizeof(Put_buf));	//清空缓存
}

    下面是主函数测试;

void main()			
{
	unsigned int i;
	UartInit();							//串口初始化
	EA=1;								//开总中断
	
	while(1)
	{
	
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值