第七章串行接口答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章串行接口答案
7·1 什么是串行异步通信?它有哪些特点?有哪几种帧格式?
答:串行通信是所传送数据的各位按顺序一位一位地发送或接收。串行通信分同步和异步两种方式。
在异步通信中数据或字符是一帧(frame)一帧地传送的。帧定义为一个字符的完整的通信格式,通常也称为帧格式。
它的主要特点:由于异步通信每传送一帧有固定格式,通信双方只需按约定的帧格式来发送和接收数据,所以硬件结构比同步通信方式简单;此外,它还能利用校验位检测错误。
帧格式的一般形式是先用一个起始位"0"表示字符的开始,然后是数据位,其后是奇偶校验位,最后是停止位,用以表示字符的结束。不同的帧格式主要表现在数据位可以不同,例如其位数为5~8位,停止位可以是1、1.5、2位;起始位和奇偶校验位可以有,也可以没有。起始位、数据位、奇偶校验位、停止位的不同组合就形成了多种形式的帧格式。不同的计算机规定适用的帧格式有所不同,例如适用于80C51的帧格式只有三种:8位数据位;一位起始位、8位数据位、一位停止位;一位起始位、8位数据位、一位奇偶校验位、一位停止位。
7·2 某异步通信接口按方式3传送,己知其每分钟传送3600个字符,计算其传送波特率。
答:设每个字符由1个起始位、8个数据位、1个可编程位和1个停止位组成,则其传送波特率为:
llb×3600/60s=660b/s
7·3 为什么定时器Tl用做串行口波特率发生器时,常采用工作方式2?若己知系统时钟频率、通信选用的波特率,姑何计算其初值?
答:在串行通信中,收发双方对发送或接收的数据速率(即波特率)要有一定的约定。我们通过软件对80C51串行口编程可约定4种工作方式。其中方式0和方式2波特率是固定的,而方式1和方式3的波特率是可变的,由定时器Tl的溢出率控制。定时器Tl用做串行口波特率发生器时,因为工作方式2是自动重装载方式,因而当定时器Tl作波特率发生器时常采用工作方式2。
在方式2中,TLl作计数用,但自动重装载的值放在THl内。假如已知系统时钟频率、通信选用的波特率,计算初值的方法如下:设计数初值为X,那么每过"256一X"个机器周期定时器1就会产生一次溢出。溢出周期是:
12
T= ×(256-X)
f ose
因溢出率为溢出周期之倒数,因此
2SMOD f ose
波特率= ×
32 l2×(256-X)
则定时器Tl在方式2 时的初值为:
f ose×2SMOD
X=256-
384×波特率
7·4 己定时器T1设置为方式2,用做波特率发生器,系统时钟频率为6 MHz ,求可能产生的最高和最低的波特率是多少?
答:最高波特率:
TH l= 0FFH TLl= 0FFH
波特率=2/32×6000 000/(12×(256- 255))b/s= 31 250 b/s 最低波特率:
TH l= OOH TLl= OOH 波特率= 1/32×6 000 000/(12×(256- 0))b/s= 61 b/s
7·5 请设计一个80C51 单片机的双机通信系统,并编写程序将甲机片外RAM 3400H ~ 3500H的教据块通过串行口传送到乙机的片外RAM 4400H ~ 4500H 单元中去。
答:设波特率为9600 b/s。当晶体频率为f= 11.0592 MHz和SMOD=1时,定时器T1按方式2工作,TH l=0FAH ,TLl=0FAH 。
甲机发送程序
SEND_SUB:
MOV TMOD,#20H ;设定时器TlI:作在方式2
MOV THl,#0FAH ;设定时器Tl的初值
MOV TLl,#0FAH
MOV PCON,#80H ;置SMOD=l
MOV SCON,#50H ;串口初始化为方式1,允许接收
SETB TR1 ;启动定时器Tl
EX5_SEND1:
MOV DPTR,#3400H ;置数据块首地址
MOV R6,#00H ;长度寄存器初始化
MOV R5,#00H ;校验和寄存器初始化
MOV SBUF,R6 ;发送长度
JNB TI,$ ;等待发送
CLR TI
EX5_SEND2:
MOVX A,@DPTR ;读取数据
MOV SBUF,A ;发送数据
ADD A,R5 ;形成累加和送R5
MOV R5,A
INC DPTR ;修改地址指针
JNB TI,$ ;等待发送
CLR TI
DJNZ R6,EX5_SEND2 ;发送末完,继续
MOV SBUF,R5 ;发校验码
JNB TI,$
CLR TI
JNB RI,$ ;等乙机回答
CLR RI
MOV A,SBUF
JZ EX5_SENDOK ;发送正确返回
LJMP EX5_SEND1 ;发送有错,重发
EX5_SENDOK:
RET
乙机接收程序
RECEIVE_SUB:.
MOV TMOD,#20H ;定时器Tl初始化
MOV THl,#0FAH
MOV TLl,#0FAH
MOV PCON,#80H
MOV SCON,#50H
SETB TR1
EX5_RCV1:
MOV DPTR,#4400H
JNB RI,$
CLR RI
MOV A,SBUF ;接收发送长度MOV R6,A
MOV R5,#00H ;累加和清0 EX5JRCV2;
JNB RI,$
CLR RI
MOV A,SBUF ;接收数据