模式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)
{
}