《微机原理与接口》第9章串行通信接口.ppt

《微机原理与接口》第9章串行通信接口.ppt

  1. 1、本文档共145页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.5 异步通信适配器 IBM PC/XT机的串行异步通信适配器 以8250为核心 完成发送时的并转串和接收时的串转并以及相应的控制工作 配置了TTL电平与EIA电平转换电路等 展开异步通信适配器的 硬件电路 软件编程 RCLK BAUDOUT# IRQ4 IRQ3 RESET +5V A8 AEN A3~A7A9 IOR# IOW# A0~A2 MR XTAL1 OUT1# OUT2# INTRPT DISTR# DOSTR# A0~A2 CS2# 8250 LS245 D0~D7 D0~D7 J9 J10 J11 J12 DIR 1.8432MHz CS0 CS1 ADS DISTR DOSTR +5V 9.5.1 异步通信适配器的接口电路 注意:J9~J11跨接器 和OUT2#的作用 9.5.2 异步通信适配器的初始化编程 对8250的内部控制寄存器进行编程写入 写入除数寄存器 设置传输率 写入通信线路控制寄存器 设置字符格式 写入调制解调器控制寄存器 设置工作方式 写入中断允许寄存器 设置中断允许或屏蔽位 设置传输率 mov al,80h mov dx,3fbh out dx,al ;写入通信线路控制寄存器,使DLAB=1 mov ax,96 ;分频系数:1.8432MHz÷(1200×16)=96=60H mov dx,3f8h out dx,al ;写入除数寄存器低8位 mov al,ah inc dx out dx,al ;写入除数寄存器高8位 8250初始化编程举例 写入除数寄存器 设置字符格式 mov al mov dx,3fbh out dx,al ;写入通信线路控制寄存器 ;这段程序同时使DLAB=0 8250初始化编程举例 写入通信线路控制寄存器 设置工作方式 ;设置查询通信方式 mov al,03h ;控制OUT2#为高,DTR#和RTS#为低 mov dx,3fch out dx,al ;写入调制解调器控制寄存器 ;设置中断通信方式 mov al,0bh ;控制为OUT2#低,允许INTRPT产生请求 mov dx,3fch out dx,al 写入调制解调器控制寄存器 8250初始化编程举例 设置中断允许或屏蔽位 mov al,0 ;禁止所有中断 mov dx,3f9h out dx,al ;写入中断允许寄存器(此时DLAB=0) 写入中断允许寄存器 8250初始化编程举例 9.5.3 异步通信程序举例 程序循环读取8250的通信状态寄存器 数据传输错误就显示一个问号“?” 接收到数据就显示出来 可以发送数据就从键盘输入发送字符(用户没有输入字符就不发送) 如果按下ESC键返回DOS statue: mov dx,2fdh ;读通信线路状态寄存器 in al,dx test al,1eh ;接收有错误否? jnz error ;有错,则转错误处理 test al,01h ;接收到数据吗? jnz receive ;是,转接收处理 test al,20h ;保持寄存器空吗? jz statue ;不能,循环查询 异步通信程序 查询通信线路状态 mov ah,0bh ;检测键盘有无输入字符 int 21h cmp al,0 jz statue ;无输入字符,循环等待 mov ah,0 ;有输入字符,读取字符 int 16h ;采用01号DOS功能调用,则有回显 cmp al,1bh jz done ;是ESC键,程序返回DOS 检测键盘输入 异步通信程序 mov dx,2f8h ;将字符输出给发送保持寄存器 out dx,al ;串行发送数据 jmp statue ;继续查询 发送数据 异步通信程序 receive: mov dx,2f8h ;从输入缓冲寄存器读取字符 in al,dx and al,7fh ;传送标准ASCII码(7个数据位), 仅取低7位 push ax ;保存数据 接收数据 异步通信程序 mov dl,al ;屏幕显示该数据 mov ah,2 int 21h pop ax ;恢复数据 cmp al,0dh ;数据是回车符吗? jnz statue ;不是,则循环 mov dl,0ah ;是,再进行换行 mov ah,2 int 21h jmp statue ;继续查询 显示数据 异步通信程序 error: mov dx,2f8h ;读出接收有误的数据,丢掉 in al,dx mov dl,’?’ ;显示问号 mov ah,2 int 21h jmp statue ;继续查询 接收错误处理

文档评论(0)

shaoye348 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档