在串口的作业形式2,3中是归于多机通讯形式,以形式3为例;
形式3,是9位数据异步通讯形式(加开始,中止11位),第9位位可编程位,(RB8,TB8).比特率可变
在形式3中多了一位SM2操控位;
原理:在通讯形式2,3中,发射端设置TB8的状况差异发送的是地址仍是数据,1(地址),0(数据)。接纳端经过RB8的承受进行辨认,当SM2=1时,若接纳到RB8=1,则承认主机发送的是地址帧,数据会进入SBUF区,并置为RI,会发生中止,若承受的是RB8=0,则为数据帧,将不予理睬,放弃。当SM2=1时,不论承受到的RB8为0或许1,都会存入SBUF中,发生中止,故利于用此原理能够多机通讯;
作业进程如下:
1、将从机SM2置为1,处于只承受地址帧的状况;
2、主机发送地址帧,将TB8设为位1,表明发送的是地址;
3、一切的从机承受的地址帧后,将承受的数据与本机的地址比照,持平,则为寻址从机,将SM2设为0,承受从机发来的数据,直到承受完主机发来的一切数据,判别是否数据发送完,完了将SM2设为1;
4、主机在发完地址之后,会发送一组数据(将TB8设为0),表明发送的是数据;
5、主机发完一组数据后,再发新的地址,重复上述过程;
程序实例:
1、主机程序
#include”reg51.h”
//初始化串口设置
void init(void)
{
}
//主机发送信息函数,,简略模仿
void send(uchar addr,uchar dat[])
{ uchar i;
{
{
init();
while(1)
{
}
}
从机部分
#define addr 0xxx;
void init(void)
{
}
void receive(void)
{
}