原代码
void com485(void) interrupt 4 using 1
{
RI=0;
TR2=0;
TH2=0xfa; /*ÖØ×°ÔؼÆÊýÆ÷¸³³õÖµ*/
TL2=0xc8;
receibuf[countRXD]=SBUF;
countRXD++;
if(countRXD>12) countRXD=0;
TR2=1;
}
当有多台设备时,其它设备发出数据时,
countRXD会不会一直增加,导出receibuf数组溢出?
需要进行测试,看<pre name="code" class="html">countRXD最大值会是多少
如果溢出修改为:
void com485(void) interrupt 4 using 1
{
RI=0;
TR2=0;
TH2=0xfa; /*ÖØ×°ÔؼÆÊýÆ÷¸³³õÖµ*/
TL2=0xc8;
receibuf[countRXD]=SBUF;
if((countRXD>0)&&(receibuf[0]==address))
countRXD++;
if(countRXD>12) countRXD=0;
TR2=1;
}
验证:上位机与其它设备通讯时,该设备是发生接收中断的,但是有
if(countRXD>12) countRXD=0;
所以数组不会越界