方式3同方式2几乎完全一样,只不过方式3的波特率是可 变的,其波特率的确定同方式1,由用户来确定。
19
例1 已知8051的串行口采用方式1进行通信,晶振频率为
11.0592MHz,选用定时器T1作为波特率发生器,T1工作于方 式2,要求通信的波特率为9600,计算T1的初值。 设Smod=0, 计算T1的初值如下:
WAIT:JBC TI, CONT ;判发送完标志 SJMP WAIT
CONT:INC R0 DJNZ R2, LOOP ;发送16个数据
22
12 (256 X ) fosc
溢出率为溢出周期的倒数。则波特率的计算公式为:
波特率= 2SMOD
fosc
32 12 (256 X)
实际使用中,波特率是已知的。因此需要根据波特率的计算 公式求定时初值X。用户只需要把定时初值设置到定时器1,就 能得到所要求的波特率。
16
串行口工作方式2
方式2为11位为一帧的异步串行通信方式。其帧格式为1个起 始位、9个数据位和1个停止位。如下图所示。
位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H
位符号 SM0 SM1 SM2 REN TB8 RB8 TI RI
6
SCON中各位说明如下:
1) SM0 、SM1——串行口工作方式选择
位 其状态组合和对应工作方式为:
SM0 SM1
工作方式
00
方式0
01
方式1
10
方式2
11
方式3
TRS: MOV SCON, #80H ;设置串行口工作方式2 MOV PCON, #80H ;波特率为fosc/32 MOV R0, #40H ;设置片内数据指针 MOV R2, #10H ;数据长度送R2