找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1296|回复: 0
打印 上一主题 下一主题
收起左侧

串口发送数据给单片机,单片机接收后在返回,但结果没有显示,请问哪里有问题呢?

[复制链接]
跳转到指定楼层
楼主
求教:我用串口助手发送数据给单片机,但再让单片机把接收到的数据发送给串口助手,但却没有结果,请问是怎么回事呢?

请问这是出了什么问题呢?
以下为源程序:
  1. #include <stc12c5a.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #include <math.h>
  6. #include <intrins.h>
  7. #define uchar unsigned char
  8. #define uint  unsigned int

  9. uchar rec[7]={0x00,0x00,0x00,0x00,0x00,0x00,0x00};
  10. uchar table[2]={0x00,0x00};//接收

  11. uchar num=0;
  12. void UART_1Interrupt();//串口1接收字符串
  13. void UART_1send();//串口发送
  14. int flag2=0;//接收标志位

  15. void delay(uint z)//延时函数1ms
  16. {
  17.         uint x,y;
  18.         for(x=z;x>0;x--);
  19.                 for(y=110;y>0;y--);
  20. }


  21. void init()  //系统初始化
  22. {
  23. TMOD |=0X20;//定时器T1,方式2,波特率由PCON寄存器的SMOD决定
  24. SCON=0x50; //REN RI TI,RI为0,TI为0
  25. //串行口1方式1 SCON是串行口1的串行控制寄存器,REN为1,允许接收
  26. PCON=0x00;//各工作方式波特率加倍
  27. TH1=0xfD;//9600bps@11.0592
  28. TL1=0xfD;
  29. TR1=1; //定时器1中断打开
  30. EA=1;//cpu总中断允许位,1为开放中断
  31. ES=1;// 1允许串行口中断
  32. }

  33. void main()
  34. {
  35.         init();
  36.         while(1)
  37.         {
  38.         if(flag2==1)
  39.           {
  40.            UART_1send();
  41.           }
  42.         }
  43. }

  44. void UART_1send()  //串口发送函数
  45. {
  46.    SBUF=table[0];//发送table[0],串口助手应显示
  47.          while(TI==0);
  48.        {
  49.                                          }                        //数据发送结束时TI自动置1
  50.                          TI=0;//清除数据传送标志
  51.                         delay(500);
  52. }

  53. void UART_1interrupt() interrupt 4  //串口1接收函数
  54. {
  55.         if(RI)
  56.         {
  57.                 if(flag2==0)//如果flag2=0,
  58.                 {
  59.                   if(num==0)
  60.                         {        
  61.              if(SBUF==0x01)//如果SUBF=0x01
  62.                          {
  63.                          rec[num++]=SBUF;
  64.                                  RI=0;
  65.                          }
  66.                      else
  67.                            {
  68.           rec[num++]=SBUF;
  69.                              if(num>=6)7个为一组,发送完一组数据
  70.                               {
  71.                               flag2=1;//接收完一组数据置1
  72.                                     num=0;
  73.                                                 table[0]=rec[4];//rec[4]给table[0]
  74.                                }
  75.                                                 RI=0;
  76.                      }
  77.             }
  78.      }
  79.   }
  80. }
复制代码

捕获1.PNG (13.67 KB, 下载次数: 47)

捕获1.PNG
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表