您现在所在的是:

单片机论坛

回帖:12个,阅读:1031 [上一页] [1] [2] [下一页]
6493
sqhuang
文章数:1047
年度积分:50
历史总积分:6493
注册时间:2007/9/2
发站内信
发表于:2011/12/24 19:09:49
#10楼
可以做个中断程序,当PC没有发送数据的时候这边就处理别的,有数据过来就中断别的来处理发送来的数据
1000
sunsoncheng
文章数:109
年度积分:50
历史总积分:1000
注册时间:2010/5/25
发站内信
发表于:2011/12/24 20:49:39
#11楼
这又是一个新问题了,中断?如何判断PC的数据送完了

以前我只是用上位机接收别人的东东,还算可行

曾遇到不断发送数据过来的情况(按道理是不会的,用串口测试工具测试时)

所以总是觉得什么是开始什么是结束总是搞不明白

请大佬再讲下,如何判断没有PC机没有数据送过来的情形?

891
515324809
文章数:51
年度积分:50
历史总积分:891
注册时间:2011/1/14
发站内信
发表于:2011/12/27 10:10:56
#12楼
你好!我也碰到和你一样的问题,
我用C语言写得接受上位机发送的数据,按照MODbusRTU格式写得帧头帧尾,如果接受到数据P2的指示灯会亮,可是我从上位机发送数据时,P2的指示灯并没有亮,也就是没有执行到这不!郁闷中!
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar tx_count,rx_temp,tx_number;
uchar rx_count;
uchar rxbuf[];
uchar txbuf[];
bit rx_ok;

void inittimer()
{
TMOD= 0x21;
TL1 = 0xfd;
TH1 = 0xfd;
TH0 = 0xf2;
TL0 = 0xdf;
TR0 = 1;
TR1 = 1;
ET0 = 1;
}

void uartcomm()
{
SCON =0x50;
ES = 1;
}


/***************************************************************************
定时器中断
***************************************************************************/
void timer1() interrupt 3
{
   TH0=0xf2;     //3.646ms interrupt
   TL0=0xdf;
   if(rx_count>=5)     //超时后,若接收缓冲区有数则判断为收到一帧
   {
       rx_ok=1;
   }
}

/***************************************************************************
modbus RTU模式
***************************************************************************/
void scomm() interrupt 4
{
   if(TI)
   {
       TI = 0;
       if(tx_count < tx_number)     //是否发送结束
       {
           SBUF = txbuf[tx_count];
       }
       tx_count++;
   }
   if(RI)
   {
       rx_temp=SBUF;
       if(rx_ok==0)     //已接收到一帧数据,在未处理之前收到的数舍弃
       {
           //if(rx_count)
               rxbuf[rx_count]=rx_temp;
            rx_count++;
       }
       TH0=0xf2;         //timer1 reset,count again
       TL0=0xdf;
       RI=0;
   }
}
void main ()
{
inittimer();
uartcomm();
if (rx_ok)
{
P2=0x00;
}
}
不懂可以问,但更重要的是自己去学,问之前应该自己多想想

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004