单片机原理及接口技术(第三版)李朝青编著 第七章作业答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7.5 思考题与习题

4. 89C51串行口有几种工作方式?有几种帧格式?各工作方式的波特率如何确定?

答:四种工作方式及波特率:

三种帧格式,一帧位数8/10/11三种:

5. 若异步通信接口按方式3传送,已知其每分钟传送3600个字符,其波特率是多少? 答:波特率:

3600/60×11=660 bps.

6. 89C51中SCON 的SM2、TB8和RB8有何作用? 答:SM2:多机通讯控制位,用于方式2和方式3中。

TB8:在方式2,3中,是发送机要发送的第9位数据。 RB8:在方式2,3中,接收来自发送机的第9位数据(TB8)

7. 设fosc=11.0592 MHz ,试编写一段程序,其功能为对串行口初始化,使之工作于方式1,波特率为1200 b/s ;并用查询串行口状态的方法,读出接收缓冲器的数据并回送到发送缓冲器。

D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7 停止位 起始位 D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7 D 0

D 1

D 2

D 3

D 4

D 5

D 6

D 8

停止位

起始位

D 7

SM0 SM1 工作方式 功能 波特率 0 0 方式0 8位同步移位寄存

器 f osc /12 0 1 方式1 10位UART 可变 1 0 方式2 11位UART f osc /64或f osc /32

1 1

方式3

11位UART

可变

答:SIO: MOV SCON,#01000000B ;串口方式1,且TI=RI=0 MOV TMOD,#20H ;T1作波特率发生器

MOV TH1,#0E8H ;选定波特率=1200bps

MOV TL1,#0E8H

SETB TR1

WAIT: JBC RI,NEXT ;查询等待

SJMP WAIT

NEXT:MOV A,SBUF ;读取接收数据

MOV SBUF,A ;回送到发送缓冲器

SJMP $

8.若晶振为11.0592 MHz,串行口工作于方式1,波特率为4800 b/s。写出用

T1作为波特率发生器的方式字和计数初值。

答:TMOD=20H,TH1=TL1=F4H

17.设计一个单片机的双机通信系统,并编写通信程序。将甲机内部RAM

30H~3FH存储区的数据块通过串行口传送到乙机内部RAM 40H~4FH存储区中去。

答:硬件系统:

程序甲(发送):

ORG 0000H

LJMP MAINT

ORG 0023H ;串行口中断入口

LJMP TRANI

MAINT:MOV SCON,#01000000B ;串行口方式1初始化MOV PCON,#80H ;波特率

MOV TMOD,#20H ;T1作波特率发生器

MOV TH1,#0E8H ;选定波特率=2400bps

MOV TL1,#0E8H

SETB TR1

SETB EA

SETB ES ;开串行口中断

MOV R0,#30H ;设数据指针

MOV R7,#10H ;数据长度

MOV A,@R0 ;取一个字符

MOV SBUF,A ;启动一次发送

SJMP $

TRANI: CLR TI ;清发送结束标志

DJNZ R7,NEXT ;是否发送完?

CLR ES ;发送完,关闭串行口中断

SJMP TEND

NEXT: INC R0 ;未发送完,修改指针

MOV A,@R0 ;取下一个字符

MOV SBUF,A ;发送一个字符

TEND: RETI ;中断返回

程序乙:

ORG 0000H

LJMP MAINT

ORG 0023H ;串行口中断入口

AJMP RINT

MAINT:MOV SCON,#01010000B ;串行口方式1允许接收MOV PCON,#80H ;波特率

MOV TMOD,#20H ;T1作波特率发生器

MOV TH1,#0E8H ;选定波特率=2400bps

MOV TL1,#0E8H

SETB TR1

SETB EA

SETB ES ;开串行口中断

MOV R0,#40H ;设数据指针

MOV R7,#10H ;接收数据长度

SJMP $

RINT:CLR RI ;清接收结束标志

MOV A,SBUF ;读取接收字符

MOV @R0,A ;保存一个字符

INC R0 ;修改指针

DJNZ R7,REND ;未全部接收完,转NEXT

CLR ES ;全部接收完,关闭串行口中断REND: RETI ;中断返回

相关文档
最新文档