MCS-51单片机串行接口(5)
发布时间:2021-06-07
发布时间:2021-06-07
MCS-51单片机串行接口
在串行通信中,收发双方对发送或接收的数据速率(即波特率)要有一定的约定。可通过对串行口编程设定。各种工作方式下其波特率的设置均有所不同,其中方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,由定时器T1的溢出率确定。
(1) 方式0的波特率 方式0时,其波特率固定为振荡频率的1/12,并不受PCON中SMOD位的影响。因而,方式0的波特率=fosc/12。
(2) 方式2的波特率 方式2的波特率由系统的振荡频率fosc和PCON的最高位SMOD确定,即为2SMOD×fosc/64。在SMOD=0时,波特率=fosc/64;在SMOD=1时,波特率=fosc/32。
(3) 方式1、3的波特率 MCS-51串行口方式1、3的波特率由定时器T1的溢出率和SMOD的值共同确定,即
方式1、3的波特率=(2SMOD/32)×定时器T1的溢出率。
其中定时器溢出率取决于计数速率和定时器的预置值。计数速率与TMOD寄存器中C/的设置有关。当C/=0时,为定时方式,计数速率= fosc/12;当C/=1时,为计数方式,计数速率取决于外部输入时钟的频率,但不能超过fosc/24。
定时器的预置值等于M-X,X为计数初值,M为定时器的最大计数,与操作模式有关。(可取213、216、28)。如果为了到达很低的波特率,则可以选择16位的操作模式,即模式1,或模式0,可以利用T1中断来实现重装计数值。
为能实现定时器计数初值重装,则通常选择操作模式2。在模式2中,TL1作计数用,TH1用于保存计数初值,当TL1计满溢出时,TH1的值自动装到TL1中。因此一般选用T1工作于模式2作波特率发生器。设T1的计数初值为X,设置C/T=0时,那么每过256-X个机器周期,定时器T1就会产生一次溢出。
则T1的溢出周期为:
溢出周期=12/fosc×(256-X)
溢出率为溢出周期之倒数,所以 fosc2SMOD fosc2SMOD
波特率= 3212 (256 X)384 (256 X)
定时器T1模式2的计数初值由上式可得:
2SMOD f X 256 384 波特率
(4)在8032/8052单片机中,工作方式1、工作方式3的波特率取决于定时器/计数器1、定时器/计数器2决定。由T2CON中的TCLK、RCLK选择。发送器的波特率由TCLK选择,TCLK=1时,由定时器/计数器2决定,TCLK=0时,由定时器/计数器1决定。接收器的波特率由RCLK选择,RCLK=1时,由定时器/计数器2决定,RCLK=0时,由定时器/计数器1决定。
定时器/计数器1构成波特率发生器的波特率计算与8031/8051/8751相同。
定时器/计数器2构成波特率发生器的波特率与SMOD无关。由于定时器状态时(C/T2=0),加法计数器对时钟脉冲(fosc/2)计数,所以波特率计算公式为:
波特率=fosc/2×16×[65536-(RCAP2H、RCAP2L)]
式中,(RCAP2H、RCAP2L)是定时器/计数器2的初值。
计数器状态(C/T2=1)的波特率为:
波特率=外部时钟频率/16×[65536-(RCAP2H、RCAP2L)]
外部时钟的最高频率fosc/2中。
(三)习题与思考题
上一篇:《物流采购管理》教学大纲