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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

北交大微机原理实验报告.docx

1、北交大微机原理实验报告北京交通大学微机原理与接口技术实验报告2014/12/21 Sunday目录实验一交通灯控制实验 2一、 实验目的 2二、 实验内容 2三、 程序流程图 3四、 程序设计 3五、 实验中遇到的问题及解决方法 5六、 体会与收获 6实验二可编程定时器/计数器(8253) 7一、 实验目的 7二、 实验内容 7三、 实验流程图 8四、 程序设计 8五、 实验中遇到的问题及解决方法 10六、 体会与收获 10实验三 PC机串行通讯实验 11一、 实验目的 11二、 实验内容 11三、 程序流程图 12四、 程序设计 14五、 实验中遇到的问题及解决方法 17六、 体会与收获 1

2、7实验四竞赛抢答器 18一、 实验目的 18二、 实验内容 18三、 程序流程图 19四、 程序设计 19五、 实验中遇到的问题及解决方法 20六、 体会与收获 21实验一交通灯控制实验一、 实验目的掌握8255方式0的工作原理及对并口的使用。二、 实验内容通过并行接口8255实现十字路口交通灯的模拟控制。如图L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯变化规律亮灭。十字路口交通灯的变化规律要求:(1)南北路口的绿灯、东西路口的红灯同时亮3秒左右。(2)南北路口的黄灯闪烁若干次,同时东西

3、路口的红灯继续亮。(3)南北路口的红灯、东西路口的绿灯同时亮3秒左右。(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。(5)转(1)重复。三、 程序流程图四、 程序设计DATA SEGMENT X DB ?DATA ENDSSTACK1 SEGMENT STACK DW 100H DUP(0)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AX MOV DX,0EC0BH ;写控制字 MOV AL,80H ;PC0PC7输出 OUT DX,AL L0: MOV DX,

4、0EC0AH MOV AL,24H ;南北绿灯,东西红灯亮 OUT DX,AL CALL DELAY CALL DELAY ;长延时,3s左右 CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY MOV BL,8 MOV AL,04HL1: XOR AL,40H ;南北黄灯闪,东西红灯亮 OUT DX,AL CALL DELAY ;延时 CALL DELAY DEC BL ;闪烁4次 JNZ L1 CALL DELAY MOV AL,81H ;南北红灯亮,东西绿灯亮 OUT DX,AL CALL DELAY CALL DELAY CAL

5、L DELAY ;长延时,3s左右 CALL DELAY CALL DELAY CALL DELAY CALL DELAY MOV BL,8 MOV AL,80HL2: XOR AL,02H ;南北红灯亮,东西黄灯闪 OUT DX,AL CALL DELAY ;延时 CALL DELAY DEC BL JNZ L2 ;闪烁4次 CALL DELAY MOV DL,0FFH MOV AH,06H INT 21H JZ L0 ;六号功能判断若无字符输入ZF=1继续循环 MOV AH,4CH INT 21HDELAY : PUSH CX PUSH DX MOV CX,4000H LOP1: MOV

6、DX,0FFFFH LOP2: DEC DX JNZ LOP2 LOOP LOP1 POP DX POP CX RET CODE ENDS END START五、 实验中遇到的问题及解决方法1. 关于片选地址的问题由于TPC卡使用PCI总线,而PCI总线结构支持即插即用功能,每台微机分配给PCI扩展板的资源是动态浮动的,不像ISA总线是固定的。因此分配给设备的I/O基地址、MEM基地址空间及INT中断号会因为不同的微机而变化。所以实验时需要使用当前微机中动态分配的地址。方法:启动“TPC-2003A集成开发环境”软件 -硬件检测 -报告卡硬件资源。结果如下图所示:其中EC00H:是TPC设备在

7、微机中被动态分配的I/O基地址,相当于原固定I/O基地址 0280H。综上所述,8255动态分配地址: 控制寄存器:0EC0BHC口地址:0EC0AH 2. 如何实现按下键盘结束循环的功能 使用调用DOS功能子程序中的 6号功能即可完成这项任务。具体操作是:当(DL)=0FFH时,执行键盘输入操作,在执行功能子程序时:有键按下,ZF=0 ,字符的ASCII码在AL中;无键按下:ZF=1。因此,我们只需在程序后面加一条JZ指令即可控制循环结束。六、 体会与收获本次实验上手较为简单,只需注意一下TPC卡动态分配端口地址和开发环境的使用即可。虽然难度不是很大,但对于初次接触理论课中所学习的硬件接口的

8、我们,亲自动手操作无疑让我们加深了对8255的了解,巩固了课上所学习的基础知识。本次实验同时也巩固了第四章所学习的内容,应用并掌握了了汇编程序的的编译环境,为今后的实验打下了基础。实验二可编程定时器/计数器(8253)一、 实验目的 掌握8253的基本工作原理和编程方法。二、 实验内容1. 按下图虚线连接电路,将计数器0设置为工作方式0,计数器初值为N(N0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0遍高电平)。2. 按下图连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电

9、平的变化(频率1Hz)。三、 实验流程图四、 程序设计实验1CODE SEGMENT ASSUME CS:CODESTART: MOV DX,0EC03H ;计数器0,方式0 MOV AL,00010000B OUT DX,AL MOV DX,0EC00H MOV AL,0EH ;送初值E OUT DX,AL MOV CL,1READ: INC CL ;自加1 CMP CL,0 JZ START MOV DX,0EC00H ;读计数器0口 IN AL,DX MOV DL,AL MOV CL,AL CMP AL,9 JG BIG ADD DL,30H ;0到9,显示ASCII数字 MOV AH,

10、02H INT 21H MOV DL,0DH INT 21H JMP JUDGEBIG: ADD DL,37H ;大于9,显示ASCII字母 MOV AH,02H INT 21H MOV DL,0DH ;加回车符,只显示一个符号 INT 21H JMP JUDGEJUDGE: MOV DL,0FFH ;有键按下回DOS MOV AH,06H INT 21H JZREAD MOV AH,4CH INT 21HCODE ENDS END START实验2CODE SEGMENT ASSUME CS:CODESTART: MOV DX,0EC03H ;计数器0置控制字为工作方式3 MOV AL,00

11、110110B OUT DX,AL MOV DX,0EC00H MOV AX,1000 ;向计数器0送初值 OUT DX,AL ;先送低字节后送高字节 MOV AL,AH OUT DX,AL MOV DX,0EC03H ;计数器1置控制字为工作方式3 MOV AL,01110110B OUT DX,AL MOV DX,0EC01H ;向计数器1送初值 MOV AX,1000 ;先送低字节后送高字节 OUT DX,AL MOV AL,AH OUT DX,ALNEXT: MOV DL,0FFH ;DOS 6号功能调用,按任意键返回 MOV AH,06H INT 21H MOV AH,4CH ;返回

12、系统 INT 21HCODE ENDS END START五、 实验中遇到的问题及解决方法 在屏幕上显示计数器数值时,如果直接从计数器读取此时的计数值,然后调用02H功能输出,则屏幕上显示的不是数字,而是乱码。原因是,02H功能是在屏幕上输出DL中所存ASCII码所代表的字符,因此,在输出时,应先将DL中的数据变换为其所对应的ASCII码。六、 体会与收获通过实验,学会8253芯片和微机接口原理和方法,掌握8253定时器/计数器的基本工作原理、工作方式和编程原理,熟悉汇编代码的编写。实验中,连接电路,利用代码控制实验电路,深对课本理论的理解。实验三 PC机串行通讯实验一、 实验目的1. 进一步

13、了解串行通信的基本原理2. 掌握串行接口芯片8250的基本原理和编程方法3. 熟悉PC机串行口的基本连接方法二、 实验内容1. PC机RS-232串口自发自收 按照PC机串口自发自收的连接方法(将RS232C的DB9的电缆插头第2脚和第3脚短接)连线。编写PC机自发自收串行通信程序,要求:从键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收回来并在屏幕上显示,实现自发自收。2. 2台PC间RS-232串口通信按照PC机RS-232串口直接互连的方法连接两台PC机。编写PC机直接互连串行通信程序;要求:由甲机键盘键入字符经串口发送给乙机,再由乙机通过串口接收字符并显示在屏幕上。当键入

14、感叹号“!”,结束收发过程。由乙机键盘键入字符经串口发送给甲机,再由甲机通过串口接收字符并显示在屏幕上。当键入感叹号“!”时,结束收发过程。即,全双工模式。实验提示:1. 连接线DB-9连接器 双机近距离通信连接图 2. 8250寄存器地址PC机自带两个串口,分为COM1和COM2,地址分别在3F8-3FFH和2F8-2FFH,接口芯片选用8250。8250片内有10个寄存器,其中有几个是共用地址的,其识别由线路控制寄存器(LCR)的最高位DLAB来决定。各寄存器的地址和格式如下所示:三、 程序流程图自发自收:双机通信:发送程序:接收程序:四、 程序设计程序1自发自收:CODE SEGMENT

15、ASSUME CS:CODESTART :MOV AL,80H ;初始化 MOV DX,3FBH OUT DX,AL MOV AX,30H MOV DX,3F8H OUT DX,AL ;写入除数低字节 MOV AL,AH MOV DX,3F9H OUT DX,AL ;写入除数高字节 MOV AL,0AH ;7位数据,1位停止,奇数校验 MOV DX,3FBH OUT DX,AL ;写入线路控制寄存器 MOV AL,0FH MOV DX,3FCH OUT DX,AL ;写入Modem控制寄存器 MOV AL,0 ;屏蔽全部中断 MOV DX,3F9H OUT DX,AL ;写中断允许寄存器WAI

16、T_FOR:MOV DX,3FDH ;读线路状态寄存器 IN AL,DX TEST AL,00011110B ;出错否 JNZ ERROR ;不为零转ERROR TEST AL,00000001B ;接收数据就绪否 JNZ RECEIVE TEST AL,01000000B ;发送寄存器空否,不空,返回等待 JZ WAIT_FOR MOV AH,1 INT 21H ;读键盘 MOV DX,3F8H ;发送 OUT DX,AL JMP WAIT_FOR ;返回等待RECEIVE: MOV DX,3F8H ;读接收数据 IN AL,DX AND AL,01111111B ;保留7位数据 CMP A

17、L,21H ;是否! JNZ CHAR MOV AH,4CH ;返回DOS INT 21HCHAR: PUSH AX MOV DL,AL MOV AH,02H ;显示接收字符 INT 21H POP AX JMP WAIT_FOR ;返回等待ERROR: MOV DX,3FDH ;出错则清除线路状态寄存器 IN AL,DXMOV DL,? ;显示? MOV AH,02H INT 21H JMP WAIT_FORCODE ENDSEND START程序2双机通信:DATA SEGMENT D1 DB ? CHL DB 0AH,0DH,$ ;换行DATA ENDSSTACK1 SEGMENT ST

18、ACK DW 100H DUP(?)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AX MOV AX, DATA MOV DS, AX MOV DX,3FBH MOV AL,10000000B OUT DX,AL ;置线路控制寄存器DLAB为“1” MOV DX,3F8H MOV AX,60H OUT DX,AL INC DX MOV AL,AH OUT DX,AL ;波特率1200 MOV DX,3FBH MOV AL,00001010B OUT DX,AL MOV DX,3

19、FCH MOV AL,00000011B OUT DX,AL MOV DX,3F9H MOV AL,00000000B OUT DX,AL WAIT1: MOV DX,3FDH ;读线路状态寄存器 IN AL,DX TEST AL,00011110B ;判断是否有错:终止符、帧格式、奇偶、溢出 JNZ ERROR TEST AL,00000001B ;判断是否收到 JNZ RECEIVE TEST AL,00100000B ;判断发送端是否空 JZ WAIT1 MOV DL,0FFH ;六号功能调用读入待发送数据 MOV AH,06H INT 21H JZ WAIT1 MOV DX,3F8H

20、;写发送REG OUT DX,AL JMP WAIT1 ;返回 WAIT1CHAR: PUSH AX MOV DL,AL ;显示接收 MOV AH,02H INT 21H MOV DX,OFFSET CHL ;输出字符串换行 MOV AH,09H INT 21H POP AX JMP WAIT1ERROR: MOV DX,3FDH ;读线路状态寄存器 IN AL,DX MOV DL,? ;对于错误显示? MOV AH,02H INT 21H JMP WAIT1RECEIVE:MOV DX,3F8H IN AL,DX ;读数据接收寄存器 CMP AL,! ;判断是否结束 JNE CHAR MOV

21、 AH,4CH INT 21HCODE ENDS END START五、 实验中遇到的问题及解决方法 自发自收的实验中,发送出去的字符只有在下次发送后才能在屏幕上显示出来,使得屏幕上显示的字符出现交替排列,即对角线上的字符一致,为发送和接收到的字符。这是因为每次程序在等待键盘输入后才能重新读取线路控制寄存器的状态,之后才能接收数据。虽然结果不是很直观,但原理上没有错误。 双工通信实验中也出现了这个问题,即接收数据时,接收机只有在按下键盘后才能显示接收到的数据,这个问题和程序设计的逻辑有关。但很可惜最终没有解决。六、 体会与收获此次实验还是使我加深了对串行接口芯片8250的基本原理和编程方法的了

22、解,另外还熟悉RS232C的DB9的电缆插头各管脚的功能。对于第二部分的实验,老师要求改为全双工方式,即两台机器既可做接收机又可做发送机。刚开始挺茫然后来与同学交流之后尝试就成功了。虽然最后的结果并不完美,但在实际操作中加深对串口通信的理解才是最重要的。实验四竞赛抢答器一、 实验目的 1、了解微机化竞赛抢答器的基本原理。2、进一步学习使用并行接口。二、 实验内容下图为竞赛抢答器(模拟)的原理图,逻辑开关K0K7代表竞赛抢答按钮07号,当某个逻辑电平开关置“”时,相当某组抢答按钮按下。在七段数码管上将其组号(07)显示出来,并使喇叭响一下。从键盘上按空格键开始下一轮抢答,按其它键程序退出。 实验

23、提示:设置8255为口输入、口输出,读取口数据,若为0表示无人抢答,若不为0则有人抢答。根据读取数据可判断其组号。从键盘上按空格键开始下一轮抢答,按其它键程序退出。响铃的DOS功能调用:MOV DL, 7 ; 响铃ASCII码为07 MOV AH ,2 INT 21H 8255动态分配地址: 控制寄存器: 0EC0BH A口地址:0EC08H C口地址:0EC0AH 三、 程序流程图四、 程序设计DATA SEGMENT LIST DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDATA ENDSSTACK1 SEGMENT STACK DW 100H DUP(0)STAC

24、K1 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AX MOV DX,0EC0BH MOV AL,89H OUT DX,AL ;对8255进行初始化L0: MOV DX,0EC0AH IN AL,DX ;读C口状态 CMP AL,0 ;如果为0则循环 JZ L0 MOV BL,0L1: INC BL SHR AL,1 ;将AL逻辑右移 JNC L1 DEC BL MOV AL,BL ;求出组号 MOV BX,OFFSET LIST ;七段显示代码表的首址送BX AND AX,00FFH ;

25、屏蔽AX高字节,组号 ADD BX,AX ;形成显示字符的地址 MOV AL,BX ;取出字符送AL MOV DX,0EC08H OUT DX,AL ;送到A口输出显示 MOV DL,7 MOV AH,2 INT 21H ;响铃功能调用 MOV AH,01H INT 21H CMP AL,20H ;当为空格时跳到CLOSE JZ CLOSE MOV AH,4CH INT 21HCLOSE: MOV AL,0 MOV DX,0EC08H OUT DX,AL JMP L0 CODE ENDSEND START五、 实验中遇到的问题及解决方法 本次实验的难点在于如何将8位开关信号转化为对应的二进制数

26、字信号,我使用的方法是:将8位开关信号逻辑右移,并记录右移次数,直至出现1时停止计数,则,此时的计数值即为第几位开关信号。 其次,在实验的过程中,发现实验结果很不稳定,刚开始运行正确的程序,在第二次运行时就不出现任何结果。之后更换了实验仪器后结果又正确了。我怀疑可能是实验箱在经过长时间工作后产生了故障,因此不能出现预期的结果。六、 体会与收获 最后一次实验总体来说较为简单,重点依然在于8255的应用,此外结合了数码管的显示原理,和一定的编程技巧;但是,本次实验并未实现综合实验的目的,个人建议应结合至少两个接口芯片来安排本次实验,从而达到充分结合理论知识的目的。总体来说,这四个实验都对我有一定帮助作用,主要是对课本知识的系统运用,让我对所学知识有更好的理解,受益匪浅。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1