51单片机学习中的问题

串口通信波特率问题:

学习使用普中科技51开发板,在串口通信实验教程中,应特别注意波特率适用问题

TMOD工作方式寄存器

TMOD T1定时/计数器 T0定时/计数器
(89H) D7 D6 D5 D4 D3 D2 D1 D0
位定义 GATE C/
T
M1 M0 GATE C/
T
M1 M0

T1/T2定时器有4种工作模式:                                                

模式0:13位定时计数模式                                                      
模式1: 16位定时计数模式
模式2:8位自动重装载模式
模式3:两个独立8位定时计数模式(只T0) 

定时器定时时间计算方法:

Td=(2^n-Count)×fosc/12    ,.......................................................................(公式1)                                

其中Td为计时时间,n为位数,fosc为晶振频率,

除以12因为:单指令周期  = 一个机器周期 = 6状态周期 = 12个时钟周期  (参见时钟电路与时序内容)

计数:2^n-Count

其中,

模式0不常用的;
模式1常用于定时;
模式2常用,例如串口波特率发生器
模式3不常用;                                        

串行口控制寄存器

位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H
位定义 SM0 SM1 SM2 REN TB8 RB8 TI RI
功能 方式选择 多机控制 串行接收允许/禁止 发送的第9位 接收的第9位 发送中断有/无 接收中断有/无

 串行口分四种工作方式,由SM0、SM1二位决定,其定义如下:
SM0   SM1   工作方式     功能描述                                                           波特率

 0   0   方式0   8位移位寄存器                                                  Fosc/12
 0   1   方式1   10位UART(包括一个起始位和停止位)             可变
 1   0   方式2   11位UART (包括一个起始位和停止位)      Fosc/64或fosc/32
 1   1   方式3   11位UART (包括一个起始位和停止位)            可变


 

各种方式的波特率计算公式也不相同。

方式0的波特率 =  fosc/12

方式2的波特率 =(2^SMOD/64)· fosc 

方式1的波特率 =(2^SMOD/32)·(Td溢出率) .......................................................................(公式2)      

方式3的波特率 =(2^SMOD/32)·(Td溢出率) .......................................................................(公式3)      

猜你喜欢

转载自www.cnblogs.com/mryu119/p/11031354.html