2363|3

28

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

串口通信接收与发送字符串问题 麻烦大神看一下 [复制链接]

我的目的是通过电脑给单片机发送一个字符串k+25,单片机接收到该字符串后,发送给电脑25这两个字符;单片机虽然接受到了该字符串,但是显示的是全部字符k+25,并不是25这两个字符,无论我把主函数中的SBUF=table[2],SBUF=table[3]这两个语句删除哪一个,串口助手上显示的仍然都是k+25这4个字符,不知道为什么,麻烦大神看一下,谢谢了
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. unsigned char flag,a,i,j;
  5. uchar table[];
  6. void init()
  7. {
  8.    TMOD=0x20;
  9.    TH1=0xFD;
  10.    TL1=0xFD;
  11.    TR1=1;
  12.    REN=1;
  13.    SM0=0;
  14.    SM1=1;
  15.    EA=1;
  16.    ES=1;
  17.    
  18.   }

  19. void main()
  20. {
  21.    init();
  22.    while(1)
  23.    {

  24.           if(flag==1)
  25.        {   
  26.                         ES=0;
  27. //              SBUF=table[2];
  28.                           SBUF=table[3];
  29.                            while(!TI);          
  30.                   TI=0;
  31.                           flag=0;
  32.                       ES=1;
  33.                           }
  34.                           
  35.                

  36.                   }

  37. }
  38. void ser()interrupt 4
  39. {  
  40.    RI=0;
  41.    table[0]=SBUF;
  42.    table[1]=SBUF;          
  43.    table[2]=SBUF;
  44.    table[3]=SBUF;
  45.    flag=1;

  46.    
  47.   
  48. }
复制代码

下面是串口助手调试情况:
此帖出自51单片机论坛

最新回复

中断函数里判断起始标识,k,收到了就存到table[0],存数变量count开始加。后面三个数,存到table[1]  table[3]  发送就发table   2  和3  详情 回复 发表于 2017-4-10 21:29
点赞 关注
 

回复
举报

25

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
串口接收是:完成一个字符接收就会产生中断,所以中断里放入缓存应该是:先定义个全局变量  cout  然后是 table[i++]=SBUF,这样 table[0]就是“k”  table[1]就是“+”........
此帖出自51单片机论坛
 
 
 

回复

6

帖子

2

TA的资源

一粒金砂(中级)

板凳
 
检查下串口的收发数据线吧,
此帖出自51单片机论坛
 
 
 

回复

3471

帖子

11

TA的资源

五彩晶圆(高级)

4
 
中断函数里判断起始标识,k,收到了就存到table[0],存数变量count开始加。后面三个数,存到table[1]  table[3]  发送就发table   2  和3
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表