打印

请教关于89c2051单片机的串口接发问题?

[复制链接]
1990|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
7120223|  楼主 | 2009-1-1 18:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>
#include <intrins.h>
#define     uchar unsigned char 
#define  uint  unsigned int
idata uchar    buf[4]={0};
uchar      Num=0;
uchar   RX_flag=0;


/***************************************************
功能:发送一帧数据
***************************************************/
void TX_data(uchar *TX,uchar send_num)
{
   uchar i;
   ES=0;
   for(i=0;i<send_num;i++)
   {
         TI=0;
      SBUF=*(TX+i);
      while(!TI);
      TI=0;
   }
  // RI=0;
   ES=1;

}
 
/***************************************************
功能:延时一段时间
***************************************************/ 
/*void delay()
{
    uchar i,j;
    for(i=0;i<250;i++)
        for(j=0;j<200;j++) ;
            
} */


/***************************************************
main()主函数
***************************************************/
void main()
{  
    TMOD=0X20;           //T1定时工作方式2,
    TL1=0XFD;
    TH1=0XFD;           //波特率为9600 bit/s
    PCON=0X00;           //波特率不倍增
    SCON=0X50;           //串中为工作方式1,允许接收
    TR1=1;               //启动定时器T1
    ES=1;               //开串行中断
    EA=1;             //开启总中断

    while(1)
    {
        if(RX_flag)
        {     
            RX_flag=0;
            TX_data(buf,Num);
            Num=0;
            //delay();
        }
    }

}

/***************************************************
功能:串口中断接受服务程序
***************************************************/ 
void serial() interrupt 4
{
    if(RI)
    {
        RI=0;
        buf[Num]=SBUF;
        Num++;
    }
    if(buf[0]!='A')
        Num=0;
    if(Num==4)
        RX_flag=1;
    if(TI) 
        TI=0;

}
这是我的程序  ,硬件没有问题,软件就是pc机发的和收的有时是对的,有时是错的,程序在只设置发送数据给pc机时接受正常,但是 要是通过串口调试发数据给单片机时,无法接到一直时对的数据,数据很不稳定,没有规律。

相关帖子

沙发
dsz| | 2009-1-1 19:11 | 只看该作者

好像应该是这样吧

   if(RI)
    {
        RI=0;
        buf[Num]=SBUF;
        Num++;
   if(buf[0]!='A')
        Num=0;
    if(Num==4)
        RX_flag=1;
    }

使用特权

评论回复
板凳
7120223|  楼主 | 2009-1-1 20:19 | 只看该作者

???

好像没有说明区别吧 以前我用别的单片机写就是这样的格式啊
那个就没有错误的

使用特权

评论回复
地板
耕在此行| | 2009-1-1 20:37 | 只看该作者

楼主的硬件有问题吧

使用特权

评论回复
5
7120223|  楼主 | 2009-1-4 08:08 | 只看该作者

??

没有啊 !!!很郁闷啊,请大家在看看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

105

主题

389

帖子

0

粉丝