实际上很简单,非常简单。
51单片机的SCON寄存器有个SM2位,如果该位置1,并且串行通信方式置为11位,则该单片机工作在多机通信方式下(即从机),在SM2=1的情况下,只有收到的TB8=1单片机才会产生中断,此时判断该地址是否是本机来判断是否接收接下来的数据。
如下代码段,其判断地址范围“tmp>=0xF0 && tmp<=0xF7”,这个范围都是该从机的地址:
void serial0_interrupt() interrupt 4 { UINT8 tmp;
if(_testbit_(RI)){ RI = 0;
if(RB8==1){ tmp = SBUF; if(tmp>=0xF0 && tmp<=0xF7){ g_addrByte = tmp; f_recv_vmc_msg = TRUE; //置收到数据标记
SM2 = 0; //收到自己的地址,开始接收其它数据 } else { f_recv_vmc_msg = FALSE; } } } }
|
阅读(1748) | 评论(0) | 转发(0) |