打印

这个串口程序有点古怪

[复制链接]
699|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本人写了一个串口程序,输出结果一直是00,对照各种书籍实在找不出问题,求大牛指点。波特率,初始化,中断各种原因都找过。最后还按照老师的方法自发自收做了一遍,都正常。可就是输出结果不对。。。
#include <STC89C5xRC.H>
#include <stdio.h>
sbit staus=P3^5;
void systerm_init(void);
void Delay20ms(void);
void send(unsigned char x);
unsigned char buf[12]="hello world";
void main()
{
  unsigned char flag=0x01;
  //unsigned char  i;
  systerm_init();
   while(1)
   {
      if(staus==0){
                   Delay20ms();
                   if(staus==0)
                   {                  
                  /* for(i=0;i<12;i++)
                    send(buf[i]);
                        */
                        send(0x8e); //test
                   }
          }
         
   }
}

void systerm_init(void)
{
        P0=0xFF;P1=0xFF;
        P2=0xFF;P3=0xFF;
        PCON=0x00;      //smod=0
    TCON=0x20;      //T1工作方式2
           TL1=0xFD;                //波特率为9600bps
        TH1=0xFD;
        TR1=1;
        SCON=0x50;                //方式1
        EA=1;
        ES=1;


}
   
void Delay20ms(void)                //@11.0592MHz
{
         unsigned char i, j;

        i = 36;
        j = 217;
        do
        {
                while (--j);
        } while (--i);
}

void send(unsigned char x)
{         
    ES=0;
        SBUF=x;
        P2=x;
        while(!TI);
        TI=0;//软件清零
        ES=1;
}

void UART_R(void) interrupt 4
{
   RI=0;
   P1=SBUF;   
}

捕获.PNG (222.49 KB )

捕获.PNG

相关帖子

沙发
NE5532| | 2016-5-16 16:46 | 只看该作者
1.别完全依赖仿真,这东西害人;用实物来写,用电脑串口和示波器来调试。
2.直接发AA,或者55,这种数据最好检测。

使用特权

评论回复
板凳
15698208161|  楼主 | 2016-5-19 23:14 | 只看该作者
NE5532 发表于 2016-5-16 16:46
1.别完全依赖仿真,这东西害人;用实物来写,用电脑串口和示波器来调试。
2.直接发AA,或者55,这种数据最 ...

已经找到问题了,第34行TMOD写成了TCON。。。

使用特权

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

本版积分规则

4

主题

14

帖子

0

粉丝