单片机串口调试

用 串口调试助手 发送一字节的数据,单片机马上会回发同样的数据在串口调试助手上显示,如果回发给串口调试助手的数据不是原始数据,即很有可能是晶振问题。换个11.0592MHz的就可以了。

 

 

#include <REG52.H>

//sbit LED = P1^0;
bit Flag;
unsigned int ReData,SenData;

void main (void) {

  SCON = 0x50;      //REN=1允许串行接受状态,串口工作模式1               
  TMOD|= 0x20;      //定时器工作方式2                   
  PCON= 0x00;                                                         
  TH1  = 0xFD;     //baud reload value 9600、数据位8、停止位1。效验位无 (11.0592)
  TL1 = 0xFD;        
  TR1  = 1;                                                            
  ES   = 1;        //开串口中断                 
  EA   = 1;        // 开总中断
//  LED=1;
 
 while(1)
    {
 
   if (Flag==1)
   {
       SBUF=SenData;              //SUBF接受/发送缓冲器
       while(TI==0);
       TI=0;
       Flag=0;
   }

 }
 
}

void ser_int (void) interrupt 4 using 1
{

if(RI == 1)        //RI接受中断标志
 {
  RI = 0;      //清除RI接受中断标志
 ReData = SBUF;  //SUBF接受/发送缓冲器
 SenData=ReData;
  Flag=1;
//    LED=0;
    P1 = SBUF;
 }
}

 

 

 

 

posted on 2014-03-15 20:04  zhangajie20  阅读(571)  评论(0编辑  收藏  举报

导航