jianhong_wu 发表于 2014-11-19 20:21:59

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

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

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


比如以下示范代码:

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

void main()
{

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

   EA=1;   //开总中断

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

   while(1)
   {
      ;
   }

}



页: [1]
查看完整版本: c51中printf函数如何当串口用,有哪3个地方必须注意的?已解答。