S1508函数COM1接收缓冲会不会溢出?

原代码

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;
所以数组不会越界
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值