微机原理与接口技术硬件实验报告班级:姓名:学号:实验一: 8259中断控制器实验一、实验目的1. 掌握8259的工作原理。
2. 掌握编写中断服务程序的方法。
3. 掌握初始化中断向量的方法。
二、实验内容用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。
三、实验设备微机实验教学系统实验箱、8086CPU模块四、连线①单脉冲发生器输出P+与8259的IR0相连②8259的片选CS8259与CS0相连③8259的INT与8086的INT相连④8259的INTA与8086的INTA相连⑤CS273与CS1相连⑥00与LED1相连其它线均已连好如下图:五、实验步骤(1)连线。
(2)编辑程序,编译链接后,调试程序。
(3)调试通过后,在中断服务程序内设置断点,运行程序,当接收到中断请求后,程序停在中断服务程序内的断点处。
(4)撰写实验报告。
六、实验源程序CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART: MOV DX,4A0H ;写ICW1MOV AX,13HOUT DX,AXMOV DX,4A2H ;写ICW2MOV AX,80H ;IR0的中断向量码为80HOUT DX,AXMOV AX,01OUT DX,AX ;一般嵌套,非缓冲,非自动EOIMOV AX,0 ;写OCW1OUT DX,AX ;允许中断;中断向量存放在(0000H:0200H)开始的四个单元里MOV AX,0MOV DS,AXMOV SI,200H ;中断类型号为80HMOV AX,OFFSET HINT ;中断服务程序的入口地址MOV DS:[SI],AXADD SI,2MOV AX,CSMOV DS:[SI],AXSTI ;开中断,设置IF=1JMP $ ;原地跳转HINT: ;中断服务程序XOR CX,0FFH ;CX取反MOV DX,4B0H ;CS273接口的地址,与8个LED灯相连MOV AX,CX ;输出高低电平控制LED灯的亮灭OUT DX,AXMOV DX,4A0H ;OCW2的地址MOV AX,20H ;一般EOI命令,全嵌套方式OUT DX,AXIRET ;中断返回CODE ENDSEND START七、实验思考题1.将P+连线连接到IR1—IR7任意一个;重新编写程序。
将P+接到IR1,在原程序的基础上,把写ICW2的控制字改为81H,再把中断向量的入口地址改为0204H即可。
程序如下:CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART: MOV DX,4A0H ;写ICW1MOV AX,13HOUT DX,AXMOV DX,4A2H ;写ICW2MOV AX,81H ;IR0的中断向量码为81HOUT DX,AXMOV AX,01OUT DX,AX ;一般嵌套,非缓冲,非自动EOIMOV AX,0 ;写OCW1OUT DX,AX ;允许中断;中断向量存放在(0000H:0200H)开始的四个单元里MOV AX,0MOV DS,AXMOV SI,204H ;中断类型号为81HMOV AX,OFFSET HINT ;中断服务程序的入口地址MOV DS:[SI],AXADD SI,2MOV AX,CSMOV DS:[SI],AXSTI ;开中断,设置IF=1JMP $ ;原地跳转HINT: ;中断服务程序XOR CX,0FFH ;CX取反MOV DX,4B0H ;CS273接口的地址,与8个LED灯相连MOV AX,CX ;输出高低电平控制LED灯的亮灭OUT DX,AXMOV DX,4A0H ;OCW2的地址MOV AX,20H ;一般EOI命令,全嵌套方式OUT DX,AXIRET ;中断返回CODE ENDSEND START实验现象:运行程序,触发脉冲发生器产生中断请求,相应二极管点亮。
2.设置OCW1,屏蔽某个中断请求,运行程序观察现象。
将IR0重新接入LED0,设置OWC1为01H,屏蔽中断IR0,则IR0的中断无法得到响应。
程序如下:CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART: MOV DX,4A0H ;ICW1的地址,写初始化命令字ICW1 MOV AX,13H ;上升沿触发单片8259,要写ICW4OUT DX,AXMOV DX,4A2H ;ICW2的地址,写中断向量码ICW2MOV AX,80H ;IR0的中断向量码为80HOUT DX,AXMOV AX,01 ;写中断结束控制字ICW4OUT DX,AX ;一般嵌套,非缓冲,非自动EOIMOV AX,01H ;写中断屏蔽字OCW1OUT DX,AX ;屏蔽IR0中断;中断向量存放在(0000H:0200H)开始的四个单元里MOV AX,0MOV DS,AXMOV SI,200H ;中断类型号为80HMOV AX,OFFSET HINT ;中断服务程序的入口地址MOV DS:[SI],AXADD SI,2MOV AX,CSMOV DS:[SI],AXSTI ;开中断,设置IF=1JMP $ ;原地跳转HINT: ;中断服务程序XOR CX,0FFH ;CX取反MOV DX,4B0H ;CS273接口的地址,与8个LED灯相连MOV AX,CX ;输出高低电平控制LED灯的亮灭OUT DX,AXMOV DX,4A0H ;OCW2的地址MOV AX,20H ;一般EOI命令,全嵌套方式OUT DX,AXIRET ;中断返回CODE ENDSEND START实验现象:每按单脉冲发生器一次产生一次中断申请,但连接的发光二极管一直不亮。
3. 设置OCW2,了解中断结束方式与设置优先权。
将IR0和IR1都连接到P+上,分别连接LED0和LED1到00和01。
一般EOI命令,将IR0设置为最低中断优先级。
程序如下:CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART: MOV DX,4A0H ;ICW1的地址MOV AX,13H ;上升沿触发,单片8259,要写ICW4OUT DX,AXMOV DX,4A2H ;ICW2的地址MOV AX,80H ;IRO的中断向量码为80H,第三位自动写入OUT DX,AXMOV AX,01 ;写ICW4OUT DX,AX ;一般嵌套,非缓冲,非自动EOIMOV AX,0 ;写OCW1OUT DX,AX ;允许中断;IR0的中断向量存放在(0000H:0200H)开始的四个单元里MOV AX,0MOV DS,AXMOV SI,200HMOV AX,OFFSET HINTMOV DS:[SI],AXADD SI,2MOV AX,CSMOV DS:[SI],AXSTI ;开中断,设置IF=1;IR1的中断向量存放在(0000H:0204H)开始的四个单元里MOV AX,0MOV DS,AXMOV SI,204HMOV AX,OFFSET HINT2MOV DS:[SI],AXADD SI,2MOV AX,CSMOV DS:[SI],AXJMP $ ;原地跳转HINT1: ;中断服务程序1XOR CX,0F0H ;CX高四位取反MOV DX,4B0H ;CS273接口的地址,与8个LED灯相连MOV AX,CX ;输出高低电平控制LED灯的亮灭OUT DX,AXMOV DX,4A0H ;OCW2的地址MOV AX,E0H ;一般EOI命令,IR0优先级最低OUT DX,AXIRET ;中断返回HINT2: ;中断服务程序2XOR CX,00FH ;CX低四位取反MOV DX,4B0H ;CS273接口的地址,与8个LED灯相连MOV AX,CX ;输出高低电平控制LED灯的亮灭OUT DX,AXMOV DX,4A0H ;OCW2的地址MOV AX,E0H ;一般EOI命令,IR0优先级最低OUT DX,AXIRET ;中断返回CODE ENDSEND START实验现象:CS273的00与LED0相连,01与LED1相连,02与LED2相连,依次下去,直至07与LED7相连。
每按单脉冲发生器一次产生一次中断申请,由于IR0的优先级比IR1低,故先响应IR1,后响应IR0,观察到第四位的LED灯先点亮或熄灭,高四位的LED灯后点亮或熄灭。
八、实验心得本次实验让我熟悉了8086硬件实验系统的使用,对8259的内部寄存器的功能也有了更加深入的认识,掌握了8259的初始化步骤和工作方式的选择,以及中断服务程序的编写。
使用实验箱和编译软件对学习内容的掌握的理解有很大帮助,让我更透彻地学习了知识。
实验二 8255并行接口实验一、实验内容8255的A口作为输入口,与逻辑电平开关相连。
8255的B口作为输出口,与发光二极管相连。
编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。
二、实验目的掌握8255的编程原理三、实验设备微机实验教学系统实验箱、8086CPU模块四、连线1.8255的PA0—PA7分别与逻辑电平开关的K1—K8相连。
2.PB0—PB7分别与发光二极管电路的LED1—LED8相连。
3.CS0与8255的片选CS8255相连。
4.其它线路均已连好。
五、实验步骤(1)连线。
(2)编辑程序,编译链接后,单步运行,调试程序。
(3)调试通过后,全速运行,观察实验结果。
(4)撰写实验报告。
六、实验源程序CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,04A6HMOV AX,90HOUT DX,AXSTART1:MOV DX,04A0HIN AX,DXMOV DX,04A2HOUT DX,AXJMP START1CODE ENDSEND START七、思考题1.将片选线接到CS1—CS7;重新编写程序。
将片选线接到CS1上。
在原程序的基础上,将控制口的地址改成04B6H,将A口的地址改成04B0H,将B口的地址改成04B2H。
程序如下:CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,04B6HMOV AX,90HOUT DX,AXSTART1:MOV DX,04B0HIN AX,DXMOV DX,04B2HOUT DX,AXJMP START1CODE ENDSEND START实验现象:实验将刚才的实验地址CS0换成了CS2。
这里CS0的地址为04A0H,CS1->04B0H,CS2->04C0H,CS3->04D0H,CS4->04E0H,CS5->04F0H。