独闷闷网

 找回密码
 立即注册
搜索
查看: 3496|回复: 0
打印 上一主题 下一主题
收起左侧

[原创] c51中printf函数如何当串口用,有哪3个地方必须注意的?已解答。

[复制链接]
跳转到指定楼层
楼主
发表于 2014-11-19 20:21:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
问:
c51中printf函数怎么用,有哪3个地方必须注意的?

鸿哥-深圳:
必须在程序里初始化配置串口,硬件与电脑连接好,然后利用串口助手软件就可以显示单片机中程序里的printf等函数发送过来的内容了,注意串口助手的波特率,数据位,校验位要与单片机程序的初始化配置保持一致。
在软件上有3个地方要特别注意:
第一:必须包含此<STDIO.H>头文件,因为printf函数在此头文件中。
第二:每次调用printf函数之前必须确保TI为1.因为printf函数内部有一条循环判断TI的语句,如果TI为0会相当于进入死循环。
第三:每次调用printf函数之前必须确保关闭串口中断ES=0。因为TI为串口中断标志位,如果不关闭串口中断,在串口发送每一个字节的时候会不断调用串口中断函数,而退出中断函数的时候有可能使这个标志位变0,就会违背以上第二条要求了。


比如以下示范代码:

  1. #include "REG52.H"
  2. #include  <STDIO.H>  //必须包含此<STDIO.H>头文件

  3. void main()
  4. {

  5.    //配置串口
  6.    SCON=0x50;
  7.    TMOD=0X21;
  8.    TH1=TL1=-(11059200L/12/32/9600);  //串口波特率9600。
  9.    TR1=1;

  10.    EA=1;     //开总中断

  11.    ES = 0;           //每次调用printf函数之前必须关闭串口中断
  12.    TI = 1;     //每次调用printf函数之前必须确保TI为1
  13.    printf("Hello World");

  14.    while(1)  
  15.    {
  16.       ;
  17.    }

  18. }

复制代码


乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2024-11-29 20:46 , Processed in 0.150605 second(s), 17 queries .

快速回复 返回顶部 返回列表