历史上的今天
今天是:2025年03月08日(星期六)
2020年03月08日 | Keil C51 中使用Printf()进行串口输出
2020-03-08 来源:eefocus
如何使用printf在串口显示信息,有两种办法,因为在keil C51中 printf函数是调用putchar进行数据传送的,而putchar应该是先判断TI是否为1,不为1则等待为1。 如果为1则清0,然后送出一个字符。因此如果你直接使用printf函数,你的程序就会在putchar函数中等待TI为1。这时你的程序就相当于直接死掉了。你可以通过改写putchar函数实现自己的目的。TI相当于是初始化不给赋初值就不干活。
所以第一种办法就是在初始化的时候,给TI赋值为1,比如
void uart_init()
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xDC; //设定定时初值
TH1 = 0xDC;
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
TI=1; //发送中断标志位置1
}
但是有时候像在用到UART中断的时候,这个串行传输数据发送中断标志位TI是不能长置为1的,这时候我们就需要对putchar函数进行重新编写就可以对printf函数输出重定向,然后就可以使用printf显示了。具体可以参照C:Keil/C51/LIB/PUTCHAR.C,下面是一个例子:
char putchar (char c) {
while (!TI);
TI = 0;
return (SBUF = c);
}
史海拾趣
|
#include #define uchar unsigned char void delay(unsigned char t) { unsigned char y,z; for(y=110;y>0;y--) for(z=t;z>0;z--); } void Comint() //初始化串口 { TMOD=0x20; //方式 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:00 编辑 http://v.youku.com/v_show/id_XMTA3NTQ3Njky.html … 查看全部问答> |
|
刚好身边有两个号码需要充值,一个联通,一个移动。 直接登录联通网站,输入号码后,就可以直接充值,基本操作需要(算上仔细检查的时间)5分钟吧! 登录移动网站,也许是移动业务太多的缘故,一下子迷失在里面,经过几番周折,进了充值页面,跳 ...… 查看全部问答> |
|
WINCE6.0系统通过GPRS MODEM CMNET方式连接中国移动,能够连接上,而且运行ping www.google.com是能够PING通的, 但是用IE不能打开网页,用IPCONFIG查看发现连接不是PPP adpter,而是Ethernet adapter。换成WINCE5.0是可以上网的, 不知WINCE6 ...… 查看全部问答> |
|
EVC中CStatic的问题(SetbitmapCStatic * pSat = (CStatic*)GetDlgItem(IDC_STATI) VC6下的代码: CStatic* pSat = (CStatic*)GetDlgItem(IDC_STATIC111); pSat->ModifyStyle(0,SS_BITMAP|SS_CENTERIMAGE); HBITMAP hBitmap = ::LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_B ...… 查看全部问答> |
|
*((volatile unsigned *)i)=0xEA000000+0x1FFE; *((volatile unsigned *)i)=0xEA000000+0x1FFE; 上面的这段代码一直看不懂是什么意思: 在启动文件里面,将中断的地址映射到了_ISR_STARTADDRESS为起始地址处。 在C语言的主程序里面也是将中断服务程序定义到了_ISR_STARTADDRESS处。如 #define ...… 查看全部问答> |
|
我想问问大家,我用jtag烧录好bootloader后,然后串口更新应用程序,但是应用程序就是不能运行,全部用的是例程里面的程序,也不知道为什么就不是不运行。应用程序起始地址为0x00001000,网上说bl.sct 这个文件也要配置,这个我不知道,我没改过, ...… 查看全部问答> |
|
详细可联系 QQ:348075293 手机:13732189922 [local]1[/local]参考价550(包含仿真器、串口转接、串口扩展,如不需这些配件,价格可议)… 查看全部问答> |
|
新年的假期结束了,大家开始回到工作岗位或者回到学校,又要回到往常的忙碌的工作和生活中了。在春节期间,咱们都忙着吃吃喝喝玩玩,现在得振作起来了,打到节后综合症。我们版块也要活跃起来,新年新气象,咱们一起来学习430,开展新一轮的活动, ...… 查看全部问答> |




