- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[经济学]第7章串行口
(7)RI——接收中断标志位 在方式0时,接收完第8位数据时,RI由硬件置“1”。在其他工作方式中,串行接收到停止位时,该位置“1”。RI?=?1,表示一帧数据接收完毕,并申请中断,要求CPU从接收SBUF取走数据。该位的状态也可供软件查询。RI必须由软件清“0”。 SCON的所有位都可进行位操作清“0”或置“1”。 1.串行口方式1应用编程 【例】使用AT89S51的串行口按工作方式1进行串行数据通信, fosc=11.0592MHz,波特率为2400bit/s,SMOD=0,以中断方式传送数据,请编写全双工通信程序。 (1)基本思路: ◆全双工通信程序,是指通信双方的任何一方既能发送数据,也能接受数据。 ◆在本例中,设发送数据首地址为20H,发送字节长度为16;接受数据首地址为40H,接受字节长度为16。 (2) 根据波特率计算T1的初值: 程序清单: ORG 0000H LJMP MAIN ORG 0023H LJMP SERVE ORG 0030H MAIN: MOV SP, #60H;置堆栈指针 MOV TMOD, #20H;置T1工作于 ;方式2 MOV TH1, #0F4H ;赋T1初值 MOV TL1, #0F4H SETB TR1 ;启动T1 MOV SCON, #50H ;置串行口工作于方式1, ;允许接受 MOV PCON, #00H ;设SMOD=0 MOV R0, #20H ;置发送数据区首址 MOV R1, #21H ;置接受数据区首址 MOV R7, #10H ;置发送字节长度 MOV R6, #10H ;置接受字节长度 SETB EA ;CPU允许中断 SETB ES ;允许串行接口中断 MOV A, @R0 ;取第一个数据发送 MOV SBUF, A ;发送数据 SJMP $ ;等待中断 SERVE: JNB RI, SEND;不是接收中断,转发送 CLR RI ;是接收中断, ;清除接收中断标志 MOV A, SUBF ;接收数据 MOV @R1, A ;将接收的数据送入 ;接收数据区 DJNZ R6, L1 ;数据块未接收完,转L1 SJMP L2 ;数据块接收玩,转L2 L1: INC R1 ;修改数据区指针 L2: RETI SEND: CLR TI ;是发送中断, ;清除发送中断标志 DJNZ R7, L3 ;数据块未发送完,转L3 SJMP L4 ;数据块发送完,转L4 L3: INC R0 MOV A, @R0 ;取数据发送 MOV SBUF, A L4: RETI 通信程序举例: 【例1】编制一个发送程序,将片内RAM中50H~5FH的数据串行发送。设串行口工作于方式3,波特率为2400b/s,SMOD=0,TB8作偶校验位。 (1)
文档评论(0)