ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:661.49KB ,
资源ID:7907747      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-7907747.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(北理工微机原理实验三使用8251A的串行接口应用实验.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

北理工微机原理实验三使用8251A的串行接口应用实验.docx

1、北理工微机原理实验三使用8251A的串行接口应用实验 本科实验报告实验名称: 实验三 使用8251A的串行接口应用实验 课程名称:电脑原理与应用实验实验时间:任课教师:实验地点:实验教师:实验类型: 原理验证 综合设计 自主创新学生:学号/班级:组 号:学 院:同组搭档:专 业:成 绩:1. 实验目的1) 掌握串行通信原理及半双工和全双工的编程方法;2) 掌握用8251A接口芯片实现微机间的同步和异步通信;3) 掌握8251A芯片与微机的接口技术和编程方法。2. 实验原理和内容8251A是一种可编程的同步/异步串行通信接口芯片,具有独立的接收器和发送器,能实现单工、半双工、双工通信。1) 82

2、51A内部结构8251A通过引脚D0D7和系统数据总线直接接口,用于和CPU传递命令、数据、状态信息。读写控制逻辑用来接收CPU的控制信号、控制数据传送方向。CPU对8251A的读写操作控制表如表3-4所示。表3-4 CPU对8251A的读写操作控制表 2) 8251A的方式控制字和命令控制字方式控制字确定8251A的通信方式同步/异步、校验方式奇校/偶校/不校、字符长度及波特率等,格式如图3-10所示。命令控制字使8251A处于规定的状态以准备收发数据,格式如图3-11所示。方式控制字和命令控制字无独立的端口地址,8251A 根据写入的次序来区分。CPU对8251A初始化时先写方式控制字,后

3、写命令控制字。3) 状态寄存器8251状态寄存器用于寄存8251A的状态信息,供CPU查询,定义如图3-12所示。TXRDY位:当数据缓冲器空时置位,而TXRDY引脚只有当条件( 数据缓冲器空/CTSTXE)成立时才置位。溢出错误:CPU没读走前一个字符,下一个字符又接收到,称为溢出错误。帧错误:在字符结尾没检测到停止位,称为帧错误。4) PC机寄存器的端口地址其中:线路控制寄存器第七位:DLAB=0;线路控制寄存器第七位:DLAB=1。5) 波特率和除数因子对照表实验硬件连接方法:通过电脑点到点三线制串口通信线,掌握接线的方法以及RS-232标准的机械、电气标准。3. 实验连接方法按图连接好

4、电路,其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起。1) 8254/CLK0连接时钟/1MHz;2) 8254/CS连接I/O译码/Y0(280H-287H);3) 8254/OUT0连接8251/TX/RXCLK;4) 8254/GATE0连接+5V;5) 8251/TXD连接8251/RXD;6) 8251/CS连接I/O译码/Y7(2B8H-2BFH。4. 编程提示8251的控制口地址为2B9H,数据口地址为2B8H。8254计数器的计数初值=时钟频率/(波特率X波特率因子),这里的时钟频率接1MHz,波特率假设选1200,波特率因子16,则计数器初值52。

5、1MHz = 1000000Hz基于8251芯片实现异步串行通信一般有两种方式,一种是查询方式,另一种是中断方式,使用哪种方式取决于进行初始化时寄存器的设置。8254 计数器的计数初值=时钟频率/(波特率波特率因子),这里的时钟频率接1MHz,波特率假设选1200,波特率因子假设选16,则计数器初值为52。本实验采用8251A异步方式发送,利用8086汇编语言实验电脑点到点的串口通信,设置:波特率为1200bps、数据位7位、停止位1位、偶校验方式,利用查询方式或中断方式实现双机通信,能够传输多个字符。程序具体设计如下:1) 基础型实验:从键盘输入一个文件或打开已有的文件发送出去,再接收回来在

6、屏幕上显示,实现自发自收。2) 提高型实验:设计发送方和接收方两个程序,要求将某汇编语言传送到接收方,接收方收到后将源程序写入指定磁盘或屏幕显示。5. 实验代码发送端代码:STACK SEGMENT PARA STACK DB 256 DUP(0)STACK ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACKSTART: MOV DX,3FBH 线路控制寄存器 MOV AX,80H 10000000B,DLAB=1,数据位,停止位,校验位,波特率因子 OUT DX,AL MOV DX,3F8H 波特率寄存器(低) MOV AX,60H 查表 OUT DX,AL M

7、OV DX,3F9H 波特率寄存器(高) MOV AX,0 查表 OUT DX,AL MOV DX,3FBH 线路控制寄存器 MOV AX,0AH 00001010B,DLAB=0 OUT DX,AL MOV DX,3FCH; 调制解调器控制寄存器 MOV AX,03H 00000011B,OUT1,2均输出1,请求发送,数据已就绪 OUT DX,AL MOV DX,3F9H 中断允许寄存器 MOV AX,0 各种中断全部禁止 OUT DX,AL FOREVER:用死循环不断检测8251状态 MOV DX,3FDH ;从线路状态寄存器读状态 IN AL,DX TEST AL,1EH 死记 JN

8、Z ERROR ;传输线状态寄存器全部都是0 TEST AL,01H 00000001B,检测接收缓存寄存器是否有数据 JNZ RECEIVE 可以收了 TEST AL,20H 00100000B,检测发送保持寄存器是否为空 JNZ SEND 可以发了 JMP FOREVER SEND: MOV AH,1 INT 16H JZ FOREVER 可以发但是未接收到键盘字符收到了 MOV AH,0 INT 16H 输入读入AL MOV DX,3F8H 扔进(对于发送端是)发送保持寄存器,发出 OUT DX,AL CMP AL,03H JE DONE MOV DL,AL MOV AH,02H INT

9、 21H 显示发送的字符 CMP AL,0DH 00001101B JNZ FOREVER MOV DL,0AH MOV AH,02H INT 21H JMP FOREVERRECEIVE: MOV DX,3F8H IN AL,DX AND AL,7FH CMP AL,03H; JZ DONE MOV DL,AL MOV AH,02H INT 21H CMP AL,0DH JNZ FOREVER MOV DL,0AH MOV AH,02H INT 21H JMP FOREVERERROR: MOV DX,3F8H IN AL,DX MOV DL,0AH MOV AH,02H INT 21H J

10、MP FOREVERDONE: MOV AH,4CH INT 21H CODE ENDSEND STAR接收端代码:DATA SEGMENT IO8254A EQU 280H IO8251A EQU 2B8H IO8251B EQU 2B9HDATA ENDS STACK SEGMENT PARA STACK DB 256 DUP(0)STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV DX,IO8254A+3 MOV AL,00010110B ;设置8254计数器0工作

11、方式 OUT DX,AL MOV DX,IO8254A MOV AL,52 ;给8254计数器0送初值 OUT DX,AL MOV DX,IO8251B ;对8251进行初始化 MOV AX,0 MOV CX,3reset8251: OUT DX,AL PUSH CX MOV CX,40H ;向8251控制端口送40H,使其复位 LOOP $ POP CX LOOP reset8251 MOV AL,40H OUT DX,AL MOV CX,40H LOOP $ MOV AL,5AH OUT DX,AL MOV AL,27H OUT DX,ALFOREVER: MOV DX,IO8251B ;

12、从线路状态寄存器读状态 IN AL,DX TEST AL,38H ;检测是否为00111000 JNZ ERROR ;传输线状态寄存器全部都是0 TEST AL,02H ;检测接受数据是否准备好了 JNZ RECEIVE ;等于0则表示数据没有准备好 TEST AL,01H ;数据没有准备好 JNZ send ;没有,则跳转等待 JMP FOREVER send: MOV AH,1 ;检测键盘按下 INT 16H JZ FOREVER ;有键盘按下 MOV AH,0 ;读键盘 INT 16H MOV DX,IO8251A ;将键盘的数据输出发送到缓冲器 OUT DX,AL CMP AL,03H

13、 JZ DONE MOV DL,AL MOV AH,02H INT 21H CMP AL,0DH JNZ FOREVER MOV DL,0AH MOV AH,02H INT 21H JMP FOREVERRECEIVE: MOV DX,IO8251A ;接收数据 IN AL,DX AND AL,7FH ;最高位为停止位 CMP AL,03H; JZ DONE MOV DL,AL MOV AH,02H INT 21H CMP AL,0DH JNZ FOREVER MOV DL,0AH MOV AH,02H INT 21H JMP FOREVER CMP AL,0DH JNZ FOREVERERROR: MOV DX,IO8251A IN AL,DX MOV DL,? MOV AH,02H INT 21H JMP FOREVERDONE: MOV AH,4CH INT 21HCODE ENDSEND START

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2