当前位置:文档之家› 微机硬件课程设计实验报告

微机硬件课程设计实验报告

目录一、基础实验部分 (1)实验1 存储器读写实验 (1)实验2 简单I/O口扩展实验 (3)实验3 8255并行口实验 (4)实验4 8253定时器/计数器接口实验 (5)实验5 8259中断控制器实验 (7)二、综合设计实验部分 (12)一、基础实验部分实验1 存储器读写实验一、实验设备微机实验箱、8086CPU模块。

二、实验要求学会用使用工具软件,掌握用单步执行和断点方式运行程序,观察寄存器和内存中的数据变化等程序调试的手段。

三、实验步骤1、实验接线:本实验无需接线。

2、编写调试程序。

3、运行实验程序,可采取单步、设置断点方式,打开内存窗口可看到内存区的变化。

四、思考题1、①单步执行到“intram”标号的语句时,ds寄存器的数据是什么?②采用断点方式运行时执行到第一个断点处,2000H~202FH内存单元的数据是什么?③执行到第二个断点处,2000H~200FH内存单元的数据是什么?④并根据观察结果和对源程序的判读简述源程序的运行效果。

答:①ds寄存器的数据是0100H。

②2000H~202FH内存单元的数据全是00。

③2000H~200FH内存单元的数据是AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55AA 55。

④源程序的运行效果是在第一个间断点处可以把数据清零,在第二个间断点处即可完成赋值。

2、修改程序,实现从2000H 到200FH 单元依次赋值00H~0FH 的功能。

答:程序如下 code segmentassume cs:code org 0100h start: mov ax,0100hmov ds,ax ;数据段地址 mov es,axmov si,1000h ;偏移地址 mov cx,0010h ;循环次数 mov al,0 ;将al 清零 intram: mov [si],alinc si ;将偏移地址+1 inc al ;将al 的值+1 loop intramnop ;设置断点处 jmp startcode ends end start五、出现的问题及解决过程 序号 出现的问题 原因解决过程 1 不能得到内存单元的运行结果 未在程序中设置断点 在程序中设置正确断点 2 2000H 到200FH 单元得不到00H~0FH设置的循环次数不对mov cx,0016h将循环次数改为 mov cx,0010h实验2 简单I/O口扩展实验一、实验设备微机实验箱、8086CPU模块。

二、实验要求逻辑电平开关的状态输入74LS244,然后通过74LS273锁存输出,程序全速运行后,逻辑电平开关的状态改变应能在LED上显示出来。

三、实验步骤1、实验接线:CS0 ↔CS244;CS1↔CS273;K1~K8 ↔IN0~IN7;O0~O7↔LED1~LED8。

2、编辑程序,单步运行,调试程序。

3、调试通过后,全速运行程序,观看实验结果。

四、思考题将74LS244的片选信号CS244改接CS2,将74LS273的片选信号CS273改接CS3,修改程序实现与范例程序相同的功能。

答:程序如下assume cs:codecode segment publicorg 100hstart: mov dx,04c0h ;74LS244地址in al,dx ;读输入开关量mov dx,04d0h ;74LS273地址out dx,al ;输出至LEDjmp startcode endsend start五、出现的问题及解决过程(无)实验3 8255并行口实验一、实验设备微机实验箱、8086CPU模块。

二、实验要求8255A的A口作为输入口,与逻辑电平开关相连。

8255A的B口作为输出口,与发光二极管相连。

程序全速运行后,逻辑电平开关的状态改变应能在LED上显示出来。

三、实验步骤1、实验接线:CS0↔CS8255;PA0~PA7↔ K1~K8;PB0~PB7↔LED1~LED8。

2、编程并全速或单步运行。

3、全速运行时拨动开关,观察发光二极管的变化。

当开关某位置于L时,对应的发光二极管点亮,置于H时熄灭。

四、思考题修改接线CS2↔CS8255,并要求开关置“H”(下)位置时对应LED亮,修改程序实现相应功能。

答:程序如下assume cs:codecode segment publicorg 100hstart: mov dx,04c6h ;控制寄存器地址mov ax,90h ;设置为A口输入,B口输出out dx,axstart1: mov dx,04c0h ;A口地址in ax,dx ;输入mov dx,04c2h ;B口地址not ax ;将ax取反out dx,ax ;输出jmp start1code endsend start实验4 8253定时器/计数器接口实验一、实验设备微机实验箱、8086CPU模块、示波器。

二、实验要求了解8253计数器的不同工作方式,掌握其初始化控制字对定时/记数效果的影响。

程序全速运行后,LED1按一定周期闪烁(周期理论值为0.2s),LED2在高频脉冲信号(约15KHz)影响下,有微弱的光亮,但无明显的周期变化现象。

三、实验步骤1、实验连线:CS0↔CS8253;OUT0↔8253CLK2;OUT2↔LED1;OUT1↔LED2;CLK3↔8253CLK0;CLK3↔8253CLK1。

2、编程调试程序。

3、全速运行,观察实验结果。

四、思考题1、为什么说范例程序运行时LED1闪烁周期的理论值是0.2秒?在范例程序设置LED2 的最大闪烁周期是多少?请分析说明。

答:因为计数器二的初值为04h即十进制的4,那么LED1闪烁周期的理论值是t2=0.05*4=0.2。

LED2的最大闪烁周期是0.05*(15*16^3+15*16^2+15*16+15)=3276.75s2、修改片选信号接线使CS1和CS8253连接,并要求LED1的闪烁周期变为4秒(亮2 秒,灭2秒),修改程序实现功能。

assume cs:codecode segment publicorg 100hstart:mov dx,04b6h ;控制寄存器mov ax,36h ;计数器0,方式3out dx,axmov dx,04b0hmov ax,7Chout dx,axmov ax,92hout dx,ax ;计数值927Chmov dx,04b6hmov ax,76h ;计数器1,方式3out dx,axmov dx,04b2hmov ax,32hout dx,axmov ax,0 ;计数值32hout dx,axmov dx,04b6hmov ax,0b6h ;计数器2,方式3 out dx,axmov dx,04b4hmov ax,50hout dx,axmov ax,0 ;计数值50hout dx,axnext: nopjmp nextcode endsend start五、出现的问题及解决过程(无)实验5 8259中断控制器实验一、实验设备微机实验箱、8086CPU模块。

二、实验要求了解中断处理的原理,掌握利用中断控制器进行中断申请和中断操作的方法。

全速运行程序,由上往下拨动开关时,相应位置的LED点亮,其余LED全灭。

三、实验步骤1、实验接线:CS0 ↔CS8259;CS3 ↔CS273;O0~O3↔LED1~LED4;K1~K4↔IR0~IR3;INT↔INT;INTA↔INTA2、编译调试程序3、全速运行程序,拨动某一电平开关,观察LED的亮灭情况。

四、思考题1、说明源代码8259初始化所设置的所有中断控制字的值和含义(按位说明)。

答:ICW1:ICW2:ICW4:2、修改接线IR3 P+(实验箱右下角),并修改源程序,使按实验箱右下角“Pules”键时LED1~LED4全亮。

答:程序如下assume cs:codecode segment publicorg 100hstart: mov cx,0start1: climov dx,04a0hmov ax,13h ;00010011b单片8259a需要ICW4out dx,ax ;ICW1, ICW4 NEEDEDmov dx,04a2hmov ax,80h ;10000000bout dx,ax ;ICW2 中断类型80hmov ax,01h;01 ;00000001bout dx,ax ;ICW4正常EOI,非缓冲方式mov ax,00hout dx,ax ;OCW1, 开放所有中断nop ;以上为8259初始化mov ax,0mov ds,axmov di,200h ;初始化中断向量表mov ax,offset int0mov ds:[di],axadd di,2mov ds:[di],100hadd di,2mov ax,offset int1mov ds:[di],axadd di,2mov ds:[di],100hadd di,2mov ax,offset int2mov ds:[di],axadd di,2mov ds:[di],100hadd di,2mov ax,offset int3mov ds:[di],axadd di,2 ;上述程序为芯片8259的初始化程序mov ds:[di],100h ;建议不熟练者不要修改main: mov ax,0sti ;开中断waiting:cmp ax,0hje waiting ;没发生中断,则等待nopnopmov dx,04d0hout dx,ax ;对应LED灯亮mov cx,0delay: loop delay ;数字滤波,按键去抖jmp start1int0: cli ;关中断,以下类推nop ;此两行为IR0的中断服务程序mov ax,0feh ;用户可修改iret ;中断返回,以下类推int1: clinop ;此两行为IR1的中断服务程序mov ax,0fdh ;用户可修改iretint2: clinop ;此两行为IR2的中断服务程序mov ax,0fbh ;用户可修改iretint3:clinop ;此两行为IR3的中断服务程序mov ax,0f0h ;用户可修改iretcode endsend start五、出现的问题及解决过程序号出现的问题原因解决过程1 LED1~LED4灯没反应P+端接线错误重新接线二、综合设计实验部分一、实验设备微机实验箱、8086CPU模块。

二、实验要求红绿灯的定时切换(每10秒切换一次)设置灯光测试开关K1,当K1打开(高电平)时,LED1~LED4全亮,关闭时恢复正常切换。

三、实验步骤1、实验接线:CS0↔8255CS;CS1↔CS8253;CLK3↔8253CLK0;OUT0↔8253CLK2OUT2↔PA0,PA1,PA2,PA3;PB0↔LED1;PB1↔LED4;PB2↔LED2;PB3↔LED3;PA4---K02、编辑程序,单步运行,调试程序。

相关主题