这个串口程序有点古怪

[复制链接]
911|2
 楼主| 15698208161 发表于 2016-5-14 14:46 | 显示全部楼层 |阅读模式
本人写了一个串口程序,输出结果一直是00,对照各种书籍实在找不出问题,求大牛指点。波特率,初始化,中断各种原因都找过。最后还按照老师的方法自发自收做了一遍,都正常。可就是输出结果不对。。。
  1. #include <STC89C5xRC.H>
  2. #include <stdio.h>
  3. sbit staus=P3^5;
  4. void systerm_init(void);
  5. void Delay20ms(void);
  6. void send(unsigned char x);
  7. unsigned char buf[12]="hello world";
  8. void main()
  9. {
  10.   unsigned char flag=0x01;
  11.   //unsigned char  i;
  12.   systerm_init();
  13.    while(1)
  14.    {
  15.       if(staus==0){
  16.                    Delay20ms();
  17.                    if(staus==0)
  18.                    {                  
  19.                   /* for(i=0;i<12;i++)
  20.                     send(buf[i]);
  21.                         */
  22.                         send(0x8e); //test
  23.                    }
  24.           }
  25.          
  26.    }
  27. }

  28. void systerm_init(void)
  29. {
  30.         P0=0xFF;P1=0xFF;
  31.         P2=0xFF;P3=0xFF;
  32.         PCON=0x00;      //smod=0
  33.     TCON=0x20;      //T1工作方式2
  34.            TL1=0xFD;                //波特率为9600bps
  35.         TH1=0xFD;
  36.         TR1=1;
  37.         SCON=0x50;                //方式1
  38.         EA=1;
  39.         ES=1;


  40. }
  41.    
  42. void Delay20ms(void)                //@11.0592MHz
  43. {
  44.          unsigned char i, j;

  45.         i = 36;
  46.         j = 217;
  47.         do
  48.         {
  49.                 while (--j);
  50.         } while (--i);
  51. }

  52. void send(unsigned char x)
  53. {         
  54.     ES=0;
  55.         SBUF=x;
  56.         P2=x;
  57.         while(!TI);
  58.         TI=0;//软件清零
  59.         ES=1;
  60. }

  61. void UART_R(void) interrupt 4
  62. {
  63.    RI=0;
  64.    P1=SBUF;   
  65. }

本帖子中包含更多资源

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

×
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

粉丝
快速回复 在线客服 返回列表 返回顶部