计算机原理实验四实验报告
(5页)
本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!
9.9 积分
实验四中断控制及计数/定时电路应用一、 实验目的理解中断控制器8259及计数/定时器8253的工作原理,掌握其使用方法。二、 实验内容a) 8259屮断管理电路i. 要求TPC_USB实验台面板右上角的总线信号区中有一个IRQ插孔,另外,实验台妞板 正中的下方还有一个单脉冲按键,每按一下其信号输出端(Q)将发出一个正脉冲。 实验要求用一根导线将单脉冲信号引至IRQ插孔,按一下按键,通过程序在屏幕 上显示一行提示信息,10次之后退回DOS (两次按键之间要有0.5s时间间隔)。ii. 分析做中断实验,须将用户中断服务程序的入n地址安装到中断矢量表里相应处,这可 以通过功能号AH=25H的DOS调用INT21H实现。更规范的做法是在修改巾断矢 量表之前,用功能号AH=35H的INT 21H将系统原來的中断矢量内界读出,并保 存在数据区屮,然后修改屮断矢量表为用户所用,最后在退出用户程序前再用功能 号AH=25H的DOS调用恢笈中断矢呈表原来的闪容。用户的程序应分成主程序和中断服务程序两部分。主程序和屮断服务程序的流程如图:主程序 中断服务程序iii.源代码DATASEGMENTMESSDB'IntruptKEEPCSDWOHKEEPIPDWOHKEEPIRQDBOHDATAENDS’,0AH,0DH,TCODE SEGMENTMYSTACK SEGMENT STACKDB 100 DUP(?)MYSTACK ENDSMAIN PROC FARASSUME CS:CODE,DS:DATA,SS:MYSTACKSTART:CLI ;关中断PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV AH,35HMOV AL,()BHINT 21HMOV KEEPIRBXMOV KEEPCS,ES ;保护原屮断矢量PUSH DSMOV DX,OFFSET INTR MOV AX,SEG INTR MOV DS,AX MOV AH,25H MOV AL,0BH INT 21HPOP DS ;装入中断矢量STI ;开屮断IN AL,21HMOV KEEPIRQ,ALAND AL,011110111B ;第三位貫零OUT 21H,AL ;中断屏蔽MOV CX,0AHNEXT:CMP CX,OOHJNZ NEXT ;循环等待10次中断MOV AL,KEEPIRQ OUT 21H,AL:恢复屏蔽PUSH DS MOV DX,KEEPIP MOV AX,KEEPCS MOV DS,AX MOV AH,25H MOV AL,0BH INT 21HPOP DS ;恢复原矢量MOV AH,4CH INT 21HMAIN ENDPINTR PROC NEAR ;中断服务程序MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS MOV AH,09HINT21H;显示中断信息DECCX;循环次数-1MOVAL,20HOUT20H,AL;发出EOI屮断结束屮断IRETINTRENDPCODEENDSEND STARTb) 8253计数电路i. 要求实验要求将8253的CNT0和CNT1串起来实现106分频,即将实验台上的1 MHz 时钟信号接CNTo的吋钟输入端CLK。,其输岀端OUT0再接CNT\的CLK,,GATE0 和GATE,都接+5V, CNT0和CNT,全工作于方式3,由OUT,输出1Hz的方波。 将OUT|输出信号接至LED灯,LED灯以1Hz的频率闪烁。ii. 分析在实验台左端找到8253芯片,再从实验台右上方找到I/O地址译码信号的引出插 孔Yq?Y7,每个译码信号都是低电位有效,各占8个I/O地址。从中选择一个用 导线引至8253的片选端CS,于是这片8253电路在计算机中的I/O地址就确定了。利用已知地址,再根据Al, A0片A译码对应的地址,可得到寄存器的地址。根据实验要求可知对于计数器0,控制字为00110110B=36H;对于计数器1,控制 字为01110110B=76H。据此分析可得如下代码:iii. 源代码CODE SEGMENTASSUME CS:CODESTART:MOV DX,283H MOV AL,36H OUT DX,AL MOV AX, 1000MOV DX,280H OUT DX,AL MOV AL,AH OUT DX,ALMOV DX,283H MOV AL,76H OUT DX,AL MOV AX, 1000MOV DX,281H OUT DX,AL MOV AL,AH OUT DX,AL MOV AH,4CH INT 21HCODE ENDSEND STARTc)选作内界i. 将实验內容1和2合并,用8253的OUT,接IRQ发中断请求,其它要求同原 来相同。ii. 分析:先分频,再作为中断源。即将分频的代码添加到8259屮断管理电路的 代码的前面,将OUT,端接到IRQ端即可。三、实验总结a) 熟悉了 8259和8253的工作原理和编程思路。b) 掌握了保护原屮断矢量、装入新屮断矢量、消除屏蔽、恢复屏蔽、恢复原屮断矢量 的方法。中断服务程序结束时应该EOI命令中断返|。1。c) 熟悉了 8253的编程思路,写控制字、写计数器初值的方法。d) 实验中遇到的W题误将第二位当作消除屏蔽的位,即将IRQ2对应的位罝0,导致中断不能响应,最 后发现错误得以改正。e)思考题:本次实验为什么要将8253的两个计数器串起来(这种连接方式又称级连) 使用,只用一个计数器可以实现106分频吗?不可以,因为106可分为1000*1000,而1000D=03E8H,每个计数器的能够保存下 来这16位的计数器初值。如果使用一个计数器,106D=F4240H,计数器无法完整保存 这20位的计数器初值,必将导致错误的计数器初值被写入,而得到错误的分频结果。 关 键 词: 计算机 原理 实验 报告
天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。