5) RB8:接收的第9位数据或停止位
6) TI:发送中断标志,发送一帧结束,TI=1,必须软件清零 7) RI:接收中断标志,接收一帧结束,RI=1,必须软件清零
2、电源控制寄存器PCON(87H)
SMOD - - - GF1 GF0 PD IDL 在串行通信中,用到了电源控制寄存器PCON中最高位SMOD,是波特率系数控制位,当SMOD=1是,波特率增大一倍。
五、四种工作方式
1、方式0:同步移位寄存器方式。用于扩展并行I/O接口。 1)数据格式: 一帧8位,无起始位和停止位。
2)RXD:数据输入/输出端。TXD:同步脉冲输出端,每个脉冲对应一个数据位。(唯一不同的作用)
3) 波特率:B = fosc/12,每个机器周期发送一位数据。
如: fosc=12MHz, B=1MHz,每位数据占1?s。 4)发送是低位在前,8位发送完毕,停止发送,并置TI=1。
(74LS164在上升沿采集数据)
该方式主要用于扩展 I/O口。
2、方式1,8位数据异步通讯方式。(见前面图)
1) 一帧10位:8位数据位,1个起始位(0),1个停止位(1)。 2) RXD:接收数据端。 TXD:发送数据端。
3)波特率:用T1作为波特率发生器,B=(2SMOD/32)×T1溢出率。
用定时器T1的方式2(自动重装载)作波特率发生器。(注意这是规定)
定时器初值的计算:
foscT1溢出率=12?(256-x)SMOD2foscB=?3212?(256-x)fosc?(SMOD?1) x=256-384?B初值计算可以这样理解:(对方式1、3)
SMOD=0时,定时器T1溢出32次传送1位;n=32 SMOD=1时,定时器T1溢出16次传送1位;n=16
串行口发送1位需要的时间t2=1000000μs/B(波特率定义) 波特率确定,则传送1位的时间确定,定时器的溢出周期t就确定了,t=t2/n。
计数器初值为:X=256-t/机器周期 X=256-t2/(n×机器周期)
例:波特率为9600B/s,单片机晶振为24MHz,求T1的初值。 解:串行口发送1位需要的时间为:1000000/9600=104.167μs 当SMOD=0时,n×机器周期=0.5×32=16μs