stc52单片机 串口通信失败。请大神指点一二。

2019-07-15 10:56发布

本帖最后由 秋韶 于 2017-5-7 20:18 编辑

本人想要在串口方式1下,实现下位机对上位机命令的读取和反馈。不过不知道咋回事,信息无法反馈到上位机。请大佬指点一二。
  1. #include <reg52.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. sbit dula=P2^6;
  7. sbit wela=P2^7;
  8. uchar a,b[20]="0",i,j,flag1;
  9. void init();
  10. void delay(uint);
  11. void main()
  12. {
  13.         init();
  14.         while(1)
  15.         {
  16.                 while(b[i]!='');        
  17.                 delay(20);
  18.                 flag1=2;
  19.                 while(b[j]!='')
  20.                 {
  21.                         SBUF=b[j];
  22.                     while(ti==0);
  23.                                 TI=0;
  24.                         j++;
  25.                 }
  26.                 while(1);
  27.         }        
  28. ;        
  29. }


  30. void init()
  31. {
  32.         dula=0;
  33.         wela=0;
  34.         TMOD=0x20;
  35.         TH1=0xfd;
  36.         TL1=0xfd;
  37.         REN=1;
  38.         SM0=0;
  39.         SM1=1;
  40.         //SCON=50;
  41.         EA=1;
  42.         ES=1;
  43.         TR1=1;
  44.     a=0,i=0,j=0,flag1=0;        
  45. }

  46. void ser() interrupt 4
  47. {      
  48.         if(flag1==0)
  49.                 {
  50.                                 RI=0;
  51.                                 a=SBUF;
  52.                                 if(a!='')
  53.                                 {
  54.                                         b[i]=a;
  55.                                         i++;
  56.                                 }
  57.                                 else
  58.                                         b[i]='';
  59.                    }
  60. }

  61. void delay(uint z)
  62. {
  63.         uint x,y;
  64.         for(x=z;x>0;x--)
  65.                 for(y=110;y>0;y--);
  66. }
复制代码


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
人中狼
1楼-- · 2019-07-15 18:50
串口中断里判断flag1=0,主程序却让flag1=2,第二个while(1)不需要
将军问鼎
2楼-- · 2019-07-16 00:30
亲,串口接受 中断函数不对,建议你找一段标准的用,不要自己杜撰呦

一周热门 更多>