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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

微机原理实验报告讲解.docx

1、微机原理实验报告讲解微机原理实验课程实验研究性学习手册姓名 学号 班级 微机教师 微机实验老师 时 间 2014年12月 上课时间 10-13周 实验一:I/O地址译码与交通灯控制实验一、实验目的1、 掌握并行接口8255的基本原理2、 掌握8255的编程方法3、 掌握利用 X86 汇编语言技巧二、实验内容如图,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯变化规律燃灭。三、编程提示1、8255 控制寄存器端口地址 28BHA 口的地址 288H C 口的地址 28AH2、十字路口交通灯的

2、变化规律要求:(1) 南北路口的绿灯、东西路口的红灯同时亮3秒左右。(2) 南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。(3) 南北路口的红灯、东西路口的绿灯同时亮3秒左右。(4) 南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。(5) 转(1)重复。四、参考流程图五、实验源程序CODE SEGMENTASSUME CS:CODE START: MOV DX, 0EC0BH ;8255初始化,写控制寄存器 MOV AL,10010000B ; OUT DX,ALFIRST: MOV DX, 0EC0AH ;C口地址 MOV AL,00100100B OUT DX,AL ;南北绿,

3、东西红,写入C口 MOV CX,0 ;送入初值65536(FFFF+1) MOV AX,4000H ;软件长延时DELAY1: DEC AX JNZ DELAY1 LOOP DELAY1 ;双重循环 MOV BL,5 ;黄灯闪5次SECOND:MOV DX, 0EC0AH MOV AL,01000100B OUT DX,AL ;南北黄,东西红,写入C口 MOV CX,3000H ;写入初值 MOV AX,0100H ;延时LI1: DEC AX JNZ LI1 LOOP LI1 ;双循环 MOV DX, 0EC0AH MOV AL,00000100B ;南北黄灭,写入C口 OUT DX,AL

4、MOV CX,3000H ;写入初值 MOV AX,0100H ;延时WEN1: DEC AX JNZ WEN1 ;软件短延时 LOOP WEN1 DEC BL JNZ SECOND ;黄灯闪5次THIRD: MOV DX, 0EC0AH ;写入C口 MOV AL,10000001B OUT DX,AL ;南北红,东西绿,写入C口 MOV CX,0 ;送初值65536 MOV AX,4000H ;软件长延时DELAY2: DEC AX JNZ DELAY2 LOOP DELAY2 MOV BL,5 ;黄灯闪5次FORTH: MOV DX, 0EC0AH ;写入C口 MOV AL,1000001

5、0B OUT DX,AL ;南北红,东西黄,写入C口 MOV CX,3000H ;送初值 MOV AX,0100H ;短延时LI2: DEC AX JNZ LI2 ;软件短延时 LOOP LI2 MOV DX, 0EC0AH ;C口MOV AL,10000000B OUT DX,AL ;东西黄灭,写入C口 MOV CX,3000H ;送初值 MOV AX,0100H ;短延时WEN2: DEC AX JNZ WEN2 LOOP WEN2 DEC BL JNZ FORTH ;黄灯闪5次 MOV DL,0FFH MOV AH,06H INT 21H ;执行键盘输入操作 JZ FIRST ;若没有输

6、入,继续循环;若有输入,返回操作系统 MOV AH,4CH INT 21H ;返回操作系统CODE ENDS六、实验遇到的问题和解决方法问题:绿灯灭后黄灯没有出现闪烁的效果,一直保持常亮解决方法:修改程序,通过利用异或和循环指令使绿灯灭、红灯亮后,黄灯口的状态从0到1循环变换,并通过调用延迟子程序,从而实现人眼可辨的黄灯闪的效果。七、总结这是第一次的微机原理实验,实验内容是I/O地址译码与交通灯控制实验。以前的实验譬如数电实验,模电实验,信号系统研学,都是要么是硬件实验,要么是软件实验,这样又要连接电路,又要编写程序的实验这还是第一次做,因此这次实验对我来说是一次全新的体验。通过这次实验使我更

7、加深入地了解微机接口和汇编语言,对8255的芯片了解以及编程的学习不仅停留在书本上,自己的动手能力也得到了很大的提升,在实践的同时也进一步巩固了微机原理的基础知识。实验二:可编程定时器计数器一、实验目的 掌握8253的基本工作原理和编程方法。二、实验内容1.按图中虚线连接电路,将计数器0设置为方式0,计数器初值为N(N0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。2. 按图5-2连接电图,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)。三、编程提

8、示18253控制寄存器地址 283H 计数器0地址 280H 计数器1地址 281H CLK0连接时钟 1MHZ。2参考流程图:四、实验原理8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。作计数器时,要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。8253中各通道可有6种可供选择的工作方式, 以完成定时、计数或脉冲发生器等多种功能。本实验用到的是方式0计数结束中断。在写入计数值N之后的第一个CLK的下降沿将N装入计数执行单元,待下一个CLK的下降沿到来且门控信号GATE为高

9、电平时,通道开始启动计数。在计数过程中,OUT一直保持低电平,直到计数达“0”时,OUT输出由低电平变为高电平,并且保持高电平。8253动态分配地址: 控制寄存器: 0C403H计数器0地址: 0C400H计数器1地址: 0C401H五、实验程序源代码实验一:DATA SEGMENT CHL DB 0AH,0DH,$ ;换行指令DATA ENDSSTACK1 SEGMENT STACK DW 100 DUP(?)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACK1,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AL,

10、10H ;设置控制字00010000B(计数器0,方式0,写两个字节,二进制计数) MOV DX,0EC03H ;写计数器0控制字 OUT DX,AL MOV DX,0EC00H ;将计数初值0FH写入计数器0 MOV AL,0FH OUT DX,AL MOV CL,0FH ;给参考变量附初值0FHLP1: MOV AL,00H ;将当前AL中存储的计数值锁存 MOV DX,0EC03H OUT DX,AL MOV DX,0EC00H ;读计数值 IN AL,DX CMP CL,AL ;执行一次循环后,CL减1。而AL中计数值变换的速度由人手按键的速度决定。所以,为了避免在该段时间里,在1MH

11、z时钟作用下不断重复输出同一计数值,我们利用CL与锁存的AL值进行比较的方法,是每个计数值在屏幕上只显示一次 JNZ LP1 DEC CL CALL DISP ;调用DISP子程序 PUSH DX ;将DX内容保存到堆栈段(因为DX装有端口地址所对应的值,在后续程序中要用到DX,所以先将值放入堆栈保存) MOV DL,0FFH ;执行按键输入操作 MOV AH,06H INT 21H MOV DX,OFFSET CHL;输出换行 MOV AH,09H INT 21H POP DX ;将DX的内容推出栈段 IN AL,DX CMP AL,0 JNZ LP1 ;如果DX的内容是0,就跳转到LP1

12、MOV AH,4CH ;返回操作系统 INT 21H DISP PROC NEAR ;定义一个名为DISP的子程序 PUSH DX ;把DX的内容保存到堆栈段中 AND AL,0FH ;将AL寄存器的内容与0FH进行“与”运算,再把结果存入AL中 MOV DL,AL ;将AL的值送入DL寄存器 CMP DL,9 ;比较DL中的值与9的大小 JLE NUM ;如果DL的值小于或等于9时,则跳转到NUM ADD DL,7 ;将DL的值与7进行相加后,再送入DL中(在十六进制条件下,从10到15分别由A到F表示)NUM: ADD DL,30H ;将DL的值与30H进行相加后,再送入DL中 MOV A

13、H,02H ;将02H存入AH INT 21H ;调用DOS21中断 POP DX ;将DX的内容推出栈段 RET ;子程序在功能完成后返回调用程序继续执行DISP ENDP CODE ENDS END START 实验二:DATA SEGMENT X DB ?DATA ENDSSTACK1 SEGMENT STACK DW 100 DUP(?)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AX MOV DX,0EC03H MOV AL,36H ;计时器0控制字(计数器0,方式

14、3,写两个字节,二进制计数) OUT DX,AL ;将AL的值送入DX端口 MOV AX,1000 ;写初值 MOV DX,0EC00H OUT DX,AL MOV AL,AH ;将AX的高8位存入AL寄存器中 OUT DX,AL MOV DX,0EC03H MOV AL,76H ;计数器1控制字(计数器1,方式3,写两个字节,二进制计数) OUT DX,AL ;将AL的值送入DX端口 MOV AX,1000 MOV DX,0EC01H OUT DX,AL ;写入计数器1低字节 MOV AL,AH ;写入计数器1高字节 OUT DX,AL MOV AH,4CH INT 21H CODE END

15、S END START六、总结有了第一次微机实验的经验之后,我这次在实验前做了充足的预习工作,已经将程序写好,检查无误,只需要在实验室连接外部电路,调试程序即可,因此实验进行得很顺利。这次实验是针对可编程定时时钟/计数器(8253),8253有六种工作方式,我在实验中主要用到了8253的工作方式0和工作方式3,此外调用了 02号功能单字符输出显示,以及09号功能输出显示字符串,我在做宏汇编研究性学习的时候就已经研究过这两个功能的使用方法,所以这次使用得心应手,要注意的是:执行02号功能必须进行ASSIC码转换,执行09号功能必须在字符串结尾写一个符号$,表示字符串结束。此外,在实验老师的指导下

16、,我进一步熟悉了调试的方法,之前只会F8单步调试,但是在遇到很长的循环程序时,就不能单步调试的了,通过这次实验我学会了如何使用F4让程序进行到任意指定位置,这样就可以跳过循环继续执行代码。实验三、PC机串行通信一、实验目的1、 进一步了解串行通信的基本原理。2、 掌握串行接口芯片8250的工作原理和编程方法。3、 熟悉PC机串行口的基本连接方法二、实验内容1、PC机RS-232串口自发自收。按照PC机串口自发自收的连接方法连线。编写PC机自发自收串行通信程序,要求:从键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收回来并在屏幕上显示,实现自发自收。2、 两台PC机间RS-232串

17、口通信。按照PC机RS-232串口直接互连的方法连接两台PC机。 编写PC机直接互连串行通信程序;要求:由甲机键盘键入字符经串口发送给乙机,再由乙机通过串口接收字符并显示在屏幕上。当键入感叹号“!”,结束收发过程。三、实验原理及提示1连线图2 8250寄存器地址 PC机自带两个串口,分为COM1和COM2,地址分别在3F8-3FFH,2F8-2FFH,接口芯片选用8250。8250片内有10个寄存器,其中有几个是共用地址的,其识别由线路控制寄存器(LCR)的最高位DLAB来决定。各寄存器的地址和格式如下所示:四、程序源代码1.自发自收程序:DATA SEGMENTCHL DB 0AH,0DH,

18、$ ;换行字符串DATA ENDSSTACK1 SEGMENT STACK ;定义堆栈段 DW 100 DUP(0)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AX;-INIT- MOV DX,3FBH ;8250初始化 MOV AL,80H ;DLAB=1 OUT DX,AL MOV AX,0CH ;N=12 BAUD=9600bps MOV DX,3F8H ;写除数寄存器,低位 OUT DX,AL MOV AL,AH;写除数寄存器,高位 INC DX OUT DX,AL

19、MOV AL,03H ;八位数据,1停止,无校验 MOV DX,3FBH ;线路控制REG OUT DX,AL MOV AL,0 ;屏蔽全部中断 MOV DX,3F9H OUT DX,ALWAIT1: MOV DX,3FDH ;读线路状态寄存器 IN AL,DX TEST AL,1EH ;判断是否有错 JNZ ERROR TEST AL,01H ;判断是否收到 JNZ RECEIVE TEST AL,20H ;判断发送端是否空 JZ WAIT1 MOV DL,0FFH ;六号功能调用读入待发送数据 MOV AH,06H INT 21H JZ WAIT1 MOV DX,3F8H ;写发送REG

20、OUT DX,AL JMP WAIT1 ;返回 WAIT1CHAR: PUSH AX MOV DL,AL ;显示接收 MOV AH,02H 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 AH,4CH INT 21HCODE ENDS END START2. 两台PC机间RS-232串口通信:(1)发送端:

21、CODE SEGMENT ASSUME CS:CODESTART: MOV AL,80H ;8250初始化,设DLAB=1 MOV DX,3FBH OUT DX,AL MOV AX,30H MOV DX,3F8H OUT DX,AL ;写入除数低字节 MOV AL,AH INC DX OUT DX,AL ;写入除数高字节 MOV AL,0AH ;7位数据,1位停止,奇校验 MOV DX,3FBH OUT DX,AL ;写入线路控制寄存器 MOV AL,03H ;请求发送、数据终端就绪:0000 0011 MOV DX,3FCH OUT DX,AL ;写入Modem控制寄存器 MOV AL,0

22、MOV DX,3F9H OUT DX,AL ;写中断允许寄存器,屏蔽所有中断 WAIT1: MOV DX,3FDH ;读线路状态寄存器 IN AL,DX TEST AL,1EH ;出错否 JNZ ERROR TEST AL,01H ;接收数据就绪否 JNZ SEND ;发送 TEST AL,20H ;发送寄存器空否,不空,返回等待 JZ WAIT1 SEND: MOV AH,1 INT 21H ;读键盘 CMP AL,21H ;是!? JZ EXIT ;是,返回操作系统 MOV DX,3F8H ;不是,则发送 OUT DX,AL JMP WAIT1 ;返回等待 ERROR: MOV DX,3F

23、DH ;出错则清除线路状态寄存器 IN AL,DX MOV DL,? ;显示? MOV AH,02H INT 21H JMP WAIT1 EXIT: MOV DX,3F8H OUT DX,AL MOV AH,4CH INT 21H CODE ENDS END START(2)接收端: CODE SEGMENT ASSUME CS:CODE START: MOV AL,80H ;8250初始化 MOV DX,3FBH OUT DX,AL MOV AX,30H ;写除数 MOV DX,3F8H OUT DX,AL ;写入除数低字节 MOV AL,AH INC DX MOV DX,3F9H OUT

24、DX,AL ;写入除数高字节 MOV AL,0AH MOV DX,3FBH OUT DX,AL ;写入线路控制寄存器 MOV AL,03H MOV DX,3FCH OUT DX,AL ;写入Modem控制寄存器 MOV AL,0 MOV DX,3F9H OUT DX,AL ;写中断允许寄存器,屏蔽所有中断 WAIT1: MOV DX,3FDH ;读线路状态寄存器 IN AL,DX TEST AL,1EH ;出错否 JNZ ERROR TEST AL,01H ;接收数据就绪否 JNZ RECEIVE ;转接收 TEST AL,20H ;发送寄存器空否,不空,返回等待 JZ WAIT1 JMP W

25、AIT1 ;均返回等待 RECEIVE: MOV DX,3F8H ;读接收数据 IN AL,DX AND AL,01111111B ;保留位数据 CMP AL,21H ;是!? JNZ CHAR MOV AH,4CH ;返回操作系统 INT 21H CHAR: PUSH AX MOV DL,AL MOV AH,2 ;显示接受字符 INT 21H POP AX JMP WAIT1 ;返回等待 ERROR: MOV DX,3FDH ;出错则清除线路状态寄存器 IN AL,DX MOV DL,? ;显示? MOV AH,02H INT 21H JMP WAIT1CODE ENDS END START

26、五、实验总结在这次实验中,PC机RS-232串口自发自收实验进行得比较顺利,但是在两台PC机间RS-232串口通信时,遇到了问题:实验题目要求从键盘输入“!”时,结束双机通信,可是我作为发送端可以在输入感叹号时立即结束通信并返回DOS,而对方接收端确认就处于等待接收的状态。一开始,我认为一定是接收端的程序有漏洞,反复检查与调试运行都没有发现问题,然后冷静下来重新审查全部程序,发现竟然是发送端的错误,当判断出此刻输入的是感叹号时,没有将感叹号发送给对方,就立即结束了发送程序,接收方一直接收不到代表终止通信命令的感叹号,所以一直在等待接收。由此我认识到排查错误时一定要全面考虑,错误的发生点不一定是

27、错因的根节点,某一环节出现错误或是有所遗漏,即使不会对当前部分有影响,也会埋下隐患,对其他环节造成不利影响,尤其是通信过程每一环节都要做到面面俱到,万无一失,才能保证提供可靠的通信质量。实验四:竞赛抢答器一、实验目的通过本实验锻炼接口技术完成一个较大的综合设计,学会综合使用本课程中的接口芯片、中断、定时、DOS功能调用等知识,学会多种接口的配合使用,掌握软件、硬件协同工作,掌握微机原理与接口技术的综合应用。(1)了解微机化竞赛抢答器的基本原理。(2)掌握微机通过8255A控制七段数码管的原理。(3)掌握并行接口8255、中断、定时、D0S功能综合应用。二、实验内容图为竞赛抢答器(模拟)的原理图

28、,逻辑开关K0K7代表竞赛抢答按钮07号,当某个逻辑电平开关置“1”时,相当某组抢答按钮按下。在七段数码管上将其组号(07)显示出来,并使喇叭响一下。从键盘上按空格键开始下一轮抢答,按其它键程序退出。设置8255为口输入、口输出,读取口数据,若为0表示无人抢答,若不为0则有人抢答。根据读取数据可判断其组号。从键盘上按空格键开始下一轮抢答,按其它键程序退出。响铃的 DOS 功能调用:MOV DL, 7 ; 响铃 ASCII 码为 07MOV AH ,2INT 21H二、 实验流程图四、实验源代码DATA SEGMENT LIST DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07

29、H ;共阴极数码管的09的LED显示器七段显示代码DATA ENDSSTACK1 SEGMENT STACK DW 100H DUP(0)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AX ;数据段段基值送入DS寄存器 MOV DX,0EC0BH MOV AL,89H ;10001001B,即A口方式0,A口输出,C口输入 OUT DX,AL ;对8255进行初始化L0: MOV DX,0EC0AH IN AL,DX ;读C口状态 CMP AL,0 ;如果为0则循环 JZ L0 ;如果开关K0K8状态发生改变,那么便跳出上述循环,进入如下程序 MOV BL,0L1: INC BL SHR AL,1 ;将AL逻辑右移 JNC L1 DEC BL MOV AL,BL ;求出开关号码 MOV

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

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