打印
[疑难问答]

单片机与RS232进行通信 一直接收不到数据

[复制链接]
1112|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
litengg|  楼主 | 2017-6-16 21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大神请看下这个程序哪里出问题了,一直接收不到数据,需要实现下面这个功能


  • #include <AT89X51.h>
  • #define uchar unsigned  char
  • #define uint unsigned int
  • uchar trdata[]={0xaa,0x01,0x03,0x0f,0x00,0x05};
  • uchar rece;
  • uchar j;
  • //uchar  code trdata1[]={'R','I','C','H','M','C','U',0x0d,0x0a,0x00};
  • uchar flag=1;
  • void delay1ms(uint i)
  • {
  • uchar j;
  •          while(i--)
  •          {
  •                  for(j=0;j<115;j++)          //1ms基准延时程序
  •                  {
  •                   ;
  •                  }
  •          }
  • }
  • main()
  • {
  • uchar i;
  • SCON= 0x50;                //串口方式允许接收
  • //SM0=0;
  • //SM1=1;
  • //REN=0;
  • PCON= 0x00;                     //SMOD=0
  • TMOD= 0x20;                //定时器1定时方式2
  • TH1= 0xfd;                //11.0592M 9600波特率
  • TL1= 0xfd;
  • TR1= 1;                  //启动定时器
  • EA=1;
  •   while(1)
  •         {
  •           if(flag==1){
  •             ES=0;
  •             i=0;
  •         while(trdata!=0x05)
  •                     {
  •                                 P0=trdata;
  •                             SBUF=trdata;
  •                           while(!TI);
  •                           TI=0;
  •                           i++;
  •                                 delay1ms(1000);
  •                 }
  •                   if(i>4)
  •                     {
  •                         flag=0;
  •                         ES=1;
  •                      }
  •                         }
  •         }
  • }
  • void INT_UartRcv(void) interrupt 4
  • {
  •     if(RI==1){
  •     RI=0;
  •         rece=SBUF;
  •         P0=0xff;
  •         j++;
  •         delay1ms(100);
  • //        bulb=1;
  • //        bulb1=1;
  •         if(j>12){
  •           flag=1;
  •           j=0;
  •           ES=0;
  •           }
  •          }
  • }



沙发
feiqi1| | 2017-6-16 21:56 | 只看该作者
把你的程序画成流程框图,你就知道问题在哪里了

使用特权

评论回复
板凳
androidbus| | 2017-6-16 21:57 | 只看该作者
是仿真实现的吗?发一下原理图看看,帮你改一下

使用特权

评论回复
地板
qiangweii| | 2017-6-16 22:06 | 只看该作者
这个传感器的端口为RS232端口,通信协议是ASC2码

使用特权

评论回复
5
shashaa| | 2017-6-16 22:07 | 只看该作者
传感器和电脑相连通过串口调试助手可以看到返回的数据,但是希望通过程序发送指令并接收返回的值。

使用特权

评论回复
6
xia00| | 2017-6-16 22:14 | 只看该作者
不知道程序出现什么问题了,这个程序的中断进不去,应该就是没有返回数据。

使用特权

评论回复
7
hfdy01| | 2017-6-16 22:15 | 只看该作者
如果有串口调试助手可以采集到数据

使用特权

评论回复
8
CallReceiver| | 2017-6-16 23:48 | 只看该作者
不是很清楚传感器内部是怎么进行收发的。

使用特权

评论回复
9
boy1990| | 2017-6-16 23:50 | 只看该作者
仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。

使用特权

评论回复
10
sourceInsight| | 2017-6-16 23:58 | 只看该作者
在中断函数里加一些打印信息,看看进没进中断函数。

使用特权

评论回复
11
shifeng88| | 2017-8-23 22:17 | 只看该作者
中断中加断点仿真中断就更能清楚查问题了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

1597

帖子

4

粉丝