定义了一个数组
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......
不知道怎么回事啊?这是什么原因造成的?
一个文件一个文件的加,看看是谁的问题,然后一句话,一句话的加,就找到为什么了
我说的定时器特指串口使用的定时器...
你加入的文件有没有偷偷使用了这个定时器.
板子上的干扰,先把串行口周围用到的线的功能先停了,只用串口,然后功能一一加上,就能找出来是哪的问题...
很可能是堆栈溢出,请问你的串口波特率是通过公式计算出来的吗?如果是这样的话,有可能因为3个文件的引入影响了相关变量的地址分配,从而导致计算波特率计算错误,最终出来的数据有误。
板子是用了一个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; //有这句之后就出错了,去掉就没事
希望大侠能给出答案和解决办法,分不是问题,我可以另外开贴给你加分!
xdata struct netcard T1; //有这句之后就出错了,去掉就没事
T1和默认的一个SFR重名...
楼上的不是这个问题,程序中我用的是TCPCard1,也会出错