计算在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。方式0的波特率fosc12方式2的波特率(2SMOD64)fosc方式1的波特率(2SMOD32)(T1溢出率)方式3的波特率(2SMOD32)(T1溢出率)
f当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR11,以启动定时器)。这时溢出率取决于TH1中的计数值。T1溢出率fosc12×256-(-(TH1)×)在单片机的应用中,常用的晶振频率为:12MHz和110592MHz。所以,选用的波特率也相对固定。常用的串行口波特率以及各参数的关系如表所示。
f串行口工作之前,应对其进行初始化,串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:、串行口控制和中断控制。具体步骤如下:1、、2、、3、、4、、的工作方式(寄存器)确定T1的工作方式(编程TMOD寄存器);的初值,计算T1的初值,装载TH1、TL1;、;启动T1(编程TCON中的TR1位)(;确定串行口控制(寄存器)确定串行口控制(编程SCON寄存器);
串行口在中断方式工作时,要进行中断设置(串行口在中断方式工作时,要进行中断设置(编程IE、IP、寄存器)。寄存器)TMOD0X20T1方式2TH1FDH9600TL1FDH9600TR11开定时器1MOM101串口工作方式1REN1允许串口接收EA1开全局中断ES1开串口中断
例1:外部中断0响应条件:EA1开全中断允许位
fEX01开外部中断0中断(允许位)IT01触发方式(0:低电平触发,1:边沿触发)voidexter0i
terrupt0。。。。。例2:外部中断1响应条件:EA1开全中断允许位EX11开外部中断1中断(允许位)IT11触发方式(0:低电平触发,1:边沿触发)voidexter1i
terrupt2。。。。。
例3:定时器0中断响应条件:TMOD0x01H;选择定时器0为工作方式1TH0TL0初始化初始化
EA1开全中断允许位ET01开定时器计数器0中断中断(允许位)TR01开定时器0
fvoidtimer0i
terrupt1。。。。。例4:定时器1中断响应条件:TMOD0x10H;选择定时器1为工作方式1TH1TL1初始化初始化
EA1开全r