- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.5思考题与习题
89C51串行口有几种工作方式?有几种帧格式?各工作方式的波特率如何确
定? 答:四种工作方式及波特率:
SMO SM1
工作方式
功能
波特率
0 0
方式0
8位同步移位寄存
fosc/12
0 1
方式1
10 位 UART
口」变
1 0
方式2
11 位 UART
fQ64或忖32
1 1
方式3
11 位 UART
三种帧格式,
一帧位数8/10/11三种:
X Do X D] X D2 X 6 X E X D5 X D6 X D7 X
\起始何xQ D| X D2 X D3 X D4 X 6 X D6 X D7 y停止位
\起始位/O D] X D2 X D3 X D4 X D5 X D6 5〉彳亭止位
若杲步通信接口按方式3传送,已知其每分钟传送3600个字符,其波特率
是多少?
答:波特率:
3600/60X11=660 bps.
89C51 中 SCON 的 SM2、TB8 和 RB8 有何作用?
答:SM2:多机通讯控制位,用于方式2和方式3中。
TB8:在方式2, 3中,是发送机要发送的第9位数据。
RB8:在方式2, 3中,接收来自发送机的第9位数据(TB8)
设fosc=l 1.0592 MHz,试编写一段程序,其功能为对串行口初始化,使之工
作于方式1,波特率为1200 b/s;并用查询串行口状态的方法,读出接收缓冲 器的数据并回送到发送缓冲器。
答:SIO:MOVSCON, ;串口方式1,且TI=RI=0MOVTMOD, #20H;T1作波特率发生器MOVTH1, #0E8H;选定波特率
答:SIO:
MOV
SCON,
;串口方式1,且TI=RI=0
MOV
TMOD, #20H
;T1作波特率发生器
MOV
TH1, #0E8H
;选定波特率=1200bps
MOV
TL1, #0E8H
SETB
TRI
WAIT:
JBC
RI, NEXT
查询等待
SJMP WAIT
NEXT:MOV A, SBUF
NEXT:
MOV A, SBUF
读取接收数据
MOV SBUF, A回送到发送缓冲器
MOV SBUF, A
回送到发送缓冲器
SJMP $8.若晶振为11.0592 MHz,串行口工作于方式1,波特率为4800
SJMP $
8.若晶振为
11.0592 MHz,串行口工作于方式1,波特率为4800 b/so写出用
T1作为波特率发半器的方式字和计数初值。
答:TMOD=20H, TH1=TL1=F4H
17?设计一个单片机的双机通信系统,并编写通信程序。将甲机内部RAM
30H?3FH存储区的数据块通过串行口传送到乙机内部RAM 40H-4FH存储
区中去。
答:硬件系统:
\17 单片机甲RXD TXDTXD RXD
\17 单片机甲
RXD TXD
TXD RXD
单片机乙
程序甲(发送):
ORG
0000H
LJMP
MAINT
ORG
0023H
;串行口中断入口
LJMP TRANI
MAINT:
MOV
SCON, ;串行口方式1初始化
MOV
PCON, #80H
;波特率
MOV
TMOD, #20H
;T1作波特率发生器
MOV
TH1, #0E8H
;选定波特率=2400bps
MOV
TL1, #0E8H
SETB
TRI
SETB
EA
SETB
ES
;开串行口中断
MOV
RO, #30H
;设数据指针
MOV
R7, #10H
;数据长度
MOV
A, @R0
;取一个字符
MOV
SBUF, A
;启动一次发送
SJMP
$
TRANI:
CLR
TI
;清发送结束标志
DJNZ
R7, NEXT
;是否发送完?
CLR
ES
;发送完,关闭串行口中断
SJMP
TEND
NEXT:
INC
RO
未发送完,修改指针
MOV
A, @R0
取下一个字符
MOV
SBUF, A
发送一个字符
TEND:
RETI
中断返回
程序乙:
ORG 0000H
LJMP MAINT
ORG
AJMP
0023H
RINT
;串行口中断入口
MAINT:
MOV
SCON, #010100008 ;串行口方式1允许接收
MOV
PCON, #80H
;波特率
MOV
TMOD, #20H
;T1作波特率发生器
MOV
TH1, #0E8H
;选定波特率=2400bps
MOV
TL1, #0E8H
SETB
TRI
SETB
EA
SETB
ES
;开串行口中断
MOV
R0, #40H
;设数据指针
MOV
R7, #10H
;接收数据长度
SJMP $
RINT:
CLR
RI
;清接收结束标志
MOV
A, SBUF
;读取接收字符
MOV
@R0, A
;保存一个字
原创力文档


文档评论(0)