串口发送的数据全部变成0了,好奇怪!!顶也有分啊

shenzao   2007-1-15 15:10 楼主
定义了一个数组
xdata unsigned char ComInit[17]=0x02,0x00,0x11,0x03,0xAA,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0xB9,0x03};
每秒发送一次给PC机
sendString(ComInit, 17);  //发送函数
本来一切都正常,后来工程中加入了3个.c文件,没有涉及任何的串口操作,每秒发送的数据全变成了0x00 0x00......
不知道怎么回事啊?这是什么原因造成的?

回复评论 (12)

有定时器操作没?
板子上有没有相互干扰?
点赞  2007-1-15 21:57
一个文件一个文件的加,看看是谁的问题,然后一句话,一句话的加,就找到为什么了
点赞  2007-1-15 21:58
有定时器操作啊,板子上的干扰怎么检查啊?
点赞  2007-1-16 08:36
我说的定时器特指串口使用的定时器...

你加入的文件有没有偷偷使用了这个定时器.

板子上的干扰,先把串行口周围用到的线的功能先停了,只用串口,然后功能一一加上,就能找出来是哪的问题...
点赞  2007-1-16 08:42
数据覆盖了
查看数据区的分配使用情况
是否重叠
点赞  2007-1-16 10:13
很可能是堆栈溢出,请问你的串口波特率是通过公式计算出来的吗?如果是这样的话,有可能因为3个文件的引入影响了相关变量的地址分配,从而导致计算波特率计算错误,最终出来的数据有误。
点赞  2007-1-16 11:22
板子是用了一个74HC573和62256,定时器0用来定时,定时器1用来做串口波特率发生器
现在发现这句有问题:
struct netcard
{
    struct {unsigned char  bytebuf[1518];}bytes;       
    struct {unsigned int wordbuf[759];}words;
    struct Ethernet etherframe;
    struct arp arpframe;
    struct icmp icmpframe;
    struct tcp tcpframe;
    struct ip ipframe;
    struct udp udpframe;
    struct ippacket ippacket;
};   //定义结构
//////在程序中只要这样定义变量就出错了
xdata struct netcard T1;    //有这句之后就出错了,去掉就没事
点赞  2007-1-16 14:32
希望大侠能给出答案和解决办法,分不是问题,我可以另外开贴给你加分!
点赞  2007-1-16 14:33
救救人哪!!
点赞  2007-1-17 10:47
看不太明白
点赞  2007-1-19 11:17
xdata struct netcard T1;    //有这句之后就出错了,去掉就没事

T1和默认的一个SFR重名...
点赞  2007-1-19 11:42
楼上的不是这个问题,程序中我用的是TCPCard1,也会出错
点赞  2007-1-20 09:19
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复