文档详情

第7章串行口祥解.ppt

发布:2016-10-31约字共53页下载文档
文本预览下载声明
* * 7.3.2 方式1:10位帧,用于双机通信 起始位:1位 数据位:8位 停止位:1位 方式1波特率=(2SMOD/32)×定时器T1的溢出率 * * 串行发送:(写SBUF启动发送过程) 串行接收:(置REN=1启动接收过程) * * 当一帧数据接收完,须同时满足两个条件,接收才真正有效。 ⑴ RI=0,即上一帧数据接收完成时,RI=1发出的中断请求已被响应,SBUF中的数据已被取走,说明“接收SBUF”已空。 ⑵ SM2=0或收到的停止位=1(方式1时,停止位已进入RB8),则收到的数据装入SBUF和RB8(RB8装入停止位),且置“1”中断标志RI。 若这两个条件不同时满足,收到的数据将丢失。 * * 7.3.3 方式2和方式3:11位帧,用于多机通信 起始位:1位 数据位:9位 停止位:1位 方式2波特率= (2SMOD/64)×fosc 方式3波特率=(2SMOD/32)×定时器T1的溢出率 * * 串行发送:(写SBUF启动发送过程) 串行接收:(置REN=1启动接收过程) * * 方式2接收 SM0、SM1=10,且REN=1。 在接收器完第9位数据后,需满足两个条件,才能将接收到的数据送入SBUF。 (1)RI=0,意味着接收缓冲器为空。 (2)SM2=0或接收到的第9位数据位RB8=1时。 若不满足两个条件,接收的信息将被丢弃。 * * 7.4 串行通信波特率设置 波特率的确定 波特率的计算 固定波特率: 方式0波特率= fosc/12 方式2波特率=(2SMOD/64)* fosc 可变波特率: 方式1波特率=(2SMOD/32)*(T1溢出率) 方式3波特率=(2SMOD/32)*(T1溢出率) T1 溢出率 = fosc /{12×[256 -(TH1)]} * * 波特率的选择 波特率要选择标称值,由于TH1的初值是整数,为了减小波特率计算误差,晶振频率要选为11.0592MHz。 方式1和方式3波特率与TH1初值的对应关系: 波特率/(b/s) 19.2 k 9600 4800 2400 1200 TH1初值 FDH FDH FAH F4H E8H SMOD 1 0 0 0 0 * * 例7-1 若8031单片机的时钟振荡频率为11.0592MHz,选用T1为方式2定时作为波特率发生器,波特率为2400b/s,求初值。 * * 串行口初始化步骤 确定T1的工作方式(TMOD) 计算T1的初值,装载TH1、TL1 启动T1(置位TR1) 确定串行口工作方式(SCON) 串口中断设置(IE、IP) 7.5 串行通信应用举例 7.5.1 串行口方式0的应用 * * 【例7-2】用51单片机串行口外接164串入一并出移位寄存器扩展8位并行口,如图7.11所示。8位并行口的每位都接一个发光二极管,要求发光二极管从左到右以一定延迟轮流显示,并不断循环。设发光二极管为共阴极接法。 * * 利用单片机串口的并行I/O扩展 串口无通信需求时! * * DISPLY: MOV R0,#30H MOV R7,#4 NE: MOV A,@R0 MOV DPTR,#TAB MOVC A,@A+DPTR MOV SBUF,A INC R0 DJNZ R7,NE RET tab: db 21h,0f3h,15h,51h db 0c3h,49h,09h,0f1h db 01h,0c1h,81h,0dbh db 1fh,13h,0ch,8bh db 0ffh 7.5.2 串行口方式1的发送和接收 【例7-3】单片机串行口按双工方式收发ASCII字符,最高位用来作奇偶校验位,采用奇偶校验方式,要求传送的波特率为1200b/s。编写有关通信程序。 * * * * 例7-4 设内部RAM的50H~5FH中数据从串行接口输出,串行接口以方式2工作,TB8做奇偶校验位,要求写入TB8发送。源程序如下: * * START:MOV SCON,#80H ;串行接口工作方式2 MOV PCON,#80H ;设波特率为1/32振荡频率 MOV R0,#50H ;设地址指针 MOV R7,#10H ;设数据块长度 LOOP1: MOV A,@R0 ;取数据 MOV C,P ;奇偶校验位送TB8 MOV TB8,C MOV SBUF,A ;数据送SBUF,启动发送 WAIT: JBC TI,LOOP2 ;判断发送中断标志是否为1,直到TI=1时转移。且TI清为0 SJMP WAIT L
显示全部
相似文档