- 1、本文档共93页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机接口原理课件第8章可编程接口芯片及其应用剖析
* * * * * * * * * * * * * * * * * * * 从右图看出:如将8251A作同 步串行口用,则要向该芯片写入 模式字、同步字符、控制字等。 8251A如何与CPU的总线相连 哪?尤其是如何与地址总线相连。 ?8251A提供的地址端口有: CS C/D 8251A的编程 模式字 格式 控制字 格式 初始化举例 控制字 复位 向1地址送复位字 向1地址送模式字 向1地址送控制字 向0地址送数据 * 控制字格式,写入地址:C/D=1 返回 返回举例处 返回79 复位字:40H * 模式字 格式 写入地址: C/D=1 返回 返回举例 处 返回79 * MOV AL,40H ;内部复位命令 OUT 41H,AL MOV AL, 0FAH ;装模式字:异步模式,波特率因子=16,7个数据位, ;1个偶校验位,2个停止位. OUT 41H, AL ; 送8251A, C/D=1 MOV AL, 37H ;装控制字:使发送启动,使接收启动,并设置有关 ;信息。 OUT 41H, AL ;送8251A, C/D=1 异步模式下的初始化程序片段 假定8251A的地址为:40H, 41H. 按8251初始化流程图编初始化程序 * 状态字 读出地址: C/D=1 MOV DX,41H( C/D=1 控制和状态口地址) IN AL,DX TEST AL,2 ;接收到数据了吗?问状态字 …………. TEST AL,38H ;接收数据的有问题吗?问状态字 …………. MOV DX,40H( C/D=0数据口地址) IN AL, DX ;若接收数据无问题,则读数据到AL寄存器。 返79 返80 * 例 :两台计算机串行通信,第一台计算机8251A的数据口和控制口地址分别为1F0H和1F2H,两台电脑之间采用查询方法、异步传送、半双工通信。实际电路如下页。 设第一台计算机要求发送的数据存放在以BUFF_T为初始址(偏移量)的内存单元中,发送数据个数为COUNT_T;第一台计算机接收数据存放到以BUFF_R为初始址的内存单元中,接收数据的个数为COUNT_R。请编写第一台计算机的串行通信发送程序。 第一台 计算机 第二台 计算机 第一台 第二台 1F0H lF2H TxD RxD GND * 异步串行近距离通信的硬件电路:P300 工作于方式3 f=16×波特率 * 分析:发送端将数据送到端口发送缓冲器后,CPU不断查询TxRDY的状态是否为有效的高电平,若为高,表示已发送完从而发送缓冲器变空,可用OUT指令向8251A输出下一个数据字节进行发送,直至发送完COUNT_T字节数据 。 接收数据时,CPU不断检测RxRDY是否为有效的高电平,若为高则表示字符的全部位已接收完,CPU可用IN指令从8251A取走一个完整的字符数据,用同样方法接收下一个数据,直至接收完COUNT_R 字节数据。 第一台 计算机 第二台 计算机 * BET-T: MOV DX,1F2H ;控制口1F2H MOV AL, 40H ;向控制口写入控制字40H, OUT DX, AL ;使系统先夏位 MOV AL,7AH ;方式宇:异步方式,7个数据位,1个停止位 ;偶校验、波特率系数为16 OUT DX,AL MOV CX,02H ;延时 D1 : LOOP D1 ;注意:改正书上错误 P301 MOV AL,11H ;控制字 OUT DX,AL ;清除错误标志,允许发送 MOV CX,02H ;延时 D2: LOOP D2 MOV DI
文档评论(0)