完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
移植了C语言的printf()函数到51单片机上,实现了在51单片机的串口类pc端的printf()输出。
使用方法: 在项目工程中添加xxprintf.h和xxprintf.c文件 在项目中需要使用xxprintf()函数的地方引入头文件xxprintf.h,在xxprintf.h中引入单片机相关头文件 在xxprintf.h中的MaxSize 可根据需要调整最大输出字符数量,例如修改为一下: #define MaxSize 40 //确定最长的输出字符数量 意为输出最大字符数量为40 使用格式示例(注意在51系列单片机串口输出中使用’rn’ 作为换行符): xxprintf(“1234”); xxprintf(“1234rn”); xxprintf(“aaa %d bbbrn”,num); xxprintf(“aaa %c bbbrn”,ch); xxprintf.h #ifndef __XXPRINTF_H#define __XXPRINTF_H#include 《stdio.h》#include 《stdlib.h》#include 《stdarg.h》#include 《string.h》#define MaxSize 50 //确定最长的输出字符数量//向串口发送一个字符 void send_char_com( char ch);void send_string_com(char *p_str);int xxprintf(const char *fmt, 。。。);#endif xxprintf.c #include “xxprintf.h”//***************************************** 自定义模拟printf()函数实现******* void send_char_com( char ch) { SBUF=ch; while(TI==0); TI=0; } //向串口发送一个字符串 void send_string_com(char *p_str){ while((*p_str)!= ‘ ’) { send_char_com(*p_str); p_str++; } }//模拟printf()函数的输出int xxprintf(const char *fmt, 。。。){ int printed; va_list args; char send_buff[MaxSize]; memset(send_buff,‘ ’,MaxSize); va_start(args, fmt); printed = vsprintf(send_buff, fmt, args); va_end(args); send_string_com(send_buff); return printed; }//----------------------------------- |
|
|
|
只有小组成员才能发言,加入小组>>
2548 浏览 0 评论
1143浏览 2评论
744浏览 1评论
497浏览 0评论
262浏览 0评论
423浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 18:18 , Processed in 1.333020 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号