串口发字符串,串口助手收到的数据总在后面多了一个?号

2020-01-26 12:46发布


  #include<reg52.h>

  #define uchar unsigned char
  #define uint unsigned int

  int i=0;
  uchar  table[8];
  
  void serial_init()
  {         

     TMOD|=0x20; //设定T1定时器工作方式2
         TH1=0xfd; //T1定时器装初值
         TL1=0xfd;        //T1定时器装初值
         REN=1;           //允许串口接收
         SM0=0;          //设定串口工作方式1
         SM1=1;          //设定串口工作方式1
         EA=1;         //开总中断
         ES=1;          //开串口中断
         TR1=1;
  }
//////传送数据到计算机////////////          
  void send(uchar *pt)
  {         

    while(*pt != '')
        {
          SBUF = *pt;
          pt++;
          
          while(!TI);
          TI=0;
          
        }
  }
  void main()
  {

     serial_init();
         while(SBUF!=0x0d);//按下回车键,开始把接收到的数据发送给计算机
         send(table);
       
   }
     void serial()interrupt 4
        {  
       
          ES=0;
          table[i++]=SBUF;
          ES=1;       
          RI=0;               
        }
       
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
饭桶
1楼-- · 2020-01-26 15:21
自己短路Rxd和Txd,自发自收,看看有没有“?”
tony_sgt
2楼-- · 2020-01-26 17:43
 精彩回答 2  元偷偷看……
捣蛋丶电工
3楼-- · 2020-01-26 20:28
我也遇到过这种类似的情况
MATMCU
4楼-- · 2020-01-27 00:46
ballack_linux 发表于 2013-11-4 14:34
单片机要求无限循环系统,否则可能出问题,主函数这样改
void main()
{

刚才试了,还是不行,而且和以前一样的代码,收到的数据更乱了.....
MATMCU
5楼-- · 2020-01-27 02:24
捣蛋丶电工 发表于 2013-11-4 14:17
我也遇到过这种类似的情况

然后有没有解决问题呢?
MATMCU
6楼-- · 2020-01-27 05:01
本帖最后由 MATMCU 于 2013-11-9 00:31 编辑
饭桶 发表于 2013-11-3 09:34
自己短路Rxd和Txd,自发自收,看看有没有“?”


这样以后就没有问题了...不过这样就检测不了程序哪里有问题呢

一周热门 更多>