当前位置:文档之家› 微机接口实验

微机接口实验

北京科技大学计算机与通信工程学院实验报告实验名称:实验一8259 中断控制器应用实验实验二8254 定时/计数器应用实验实验三8255 并口控制器应用实验学生姓名:专业:班级:学号:指导教师:实验成绩:实验地点:机电楼320实验时间:2015 年12 月 4 日一、实验目的与实验要求1、实验目的实验一1.掌握PC 机中断处理系统的基本原理。

2.掌握可编程中断控制器8259 的应用编程方法。

实验二1.掌握8254 的工作方式及应用编程。

2.掌握8254 典型应用电路的接法。

实验三1.掌握8255 的工作方式及应用编程。

2.掌握8255 典型应用电路的接法。

2、实验要求实验一(1)实验1-1:PC 机内中断应用实验①按接线图连好接线,调用程序源代码8259-1.asm,观察实验现象,将屏幕显示结果以截图方式写在实验报告中。

②自设计实验。

改变接线方式,将单次脉冲连到USB 核心板上的IRQ10 插孔上,参考本实验代码,编程实现IRQ10 中断。

(注意:考虑PC 机内中断级联的方式,参看前面的原理说明),将代码写在报告中。

(2)实验1-2:PC 机内中断嵌套实验①按接线图连好接线,调用程序源代码8259-2.asm,做如下操作,并将屏幕显示结果以截图的方式写在实验报告中,并分析产生该现象的原因:A.按下连接IRQ 的单次脉冲按键,屏幕上会显示10个3,在屏幕上10 次显示未结束之前,按下连接IRQ10 的单次脉冲按键,观察现象;B.按下连接IRQ10 的单次脉冲按键,屏幕上会显示10个10,在屏幕上10次显示未结束之前,按下连接IRQ3 的单次脉冲按键,观察现象。

②程序中所有代码均没有注释,请在报告中补全注释,尽量详细。

(3)实验1-3:扩展多中断应用实验说明:本实验采用查询方式,应用实验箱提供的8259 中断源,向PC 机提交中断请求。

拨动开关发起请求一次中断,屏幕上显示相应的中断请求号。

调用程序源码文件8259-3.asm,在程序源代码中划横线的位置,请按照所学8259 工作原理填写并验证,然后将所填内容写在实验报告中,并分析所填数据的形成原理。

实验二(1)实验2-1:计数器应用实验①将计数器0 设置为方式3,计数器初值为4,用手动逐个输入单脉冲,用LED 灯观察OUT0 电平变化。

将代码中划横线的部分填上相应的代码,并在实验报告中对所填代码做原理分析。

②如果令计数器0 工作在方式0,其实验现象有什么不同,在报告中进行分析说明。

(2)实验2-2:自设计实验参考实验一的程序和接线,自行设计接线图以及程序代码,实现,以1MHz为时钟源,应用8254 的定时功能,将其分频为1Hz。

以LED灯作为输出显示。

经过实际验证后,在报告中画出接线图,并给出源代码。

实验三(1)实验3-1:可编程并行接口8255 方式0 应用实验编写程序,自行设定A、B、C 三个口中某一个口为输入,某一个为输出,完成拨动开关到数据灯的数据传输。

要求只要开关拨动,数据灯的显示就改变。

根据原理补全代码中缺失的部分,根据自己的设计,补全接线图,并将代码和对应的接线图写在实验报告中。

(2)实验3-2:自设计试验自行设计完成本实验,要求,8255A 口工作在方式一输入,B 口工作在方式一输出,利用方式一的控制信号,使数据从输入到输出人为可控。

在实验报告中画出接线图,并说明设计的原理,给出对应的程序代码。

二、实验设备(环境)及要求Windows 7系统下的HQFC集成开发环境,CZ-CIUS微机接口实验系统。

三、实验内容与步骤实验一实验1-1(1)实验内容PC 机内中断实验。

使用单次脉冲模拟中断产生。

验证中断处理程序,在显示器屏幕上显示一行预设定的字符串。

(2)主要步骤①按接线图连好接线,调用程序源代码8259-1.asm,观察实验现象。

②自设计实验。

改变接线方式,将单次脉冲连到USB 核心板上的IRQ10 插孔上,参考本实验代码,编程实现IRQ10 中断。

(注意:考虑PC 机内中断级联的方式,参看前面的原理说明)。

接线图:说明:本实验只需要一根连线,一端接系统总线区的IRQ 引脚,一端接到单脉冲单元的引脚上,接线如图1-1 所示。

参考流程图:程序源代码:(1);数据段DA TA SEGMENTMESS DB 'TPCA interrupt! ',0DH,0AH, '$';需要显示的数据,以'$'结束,方便系统调用。

0DH,0AH为换行DA TA ENDS;代码段CODE SEGMENTASSUME CS:CODE, DS:DA TASTART: MOV AX, CS ;系统调用25是设置中断MOV DS, AXMOV DX, OFFSET INT3 ;采用间接修改法,设置中断向量MOV AX, 250BH ;设置IRQ3 对应的中断向量,25是系统调用功能;号,在AL里放中断向量号,0B*4=2C,是中断程序的地址所在位置,DS放中断程序的段;基址,DX放偏移地址INT 21H;中断设置完成IN AL, 21H ;读中断屏蔽寄存器,21H 是该寄存器的端口号AND AL, 0F7H ;开放IRQ3 中断,允许IRQ3 的中断申请OUT 21H, AL ;写OCW1MOV CX, 10 ;记中断循环次数为10 次STI ;允许中断发生WAIT:JMP WAITINT3: MOV AX, DATA ;中断服务程序MOV DS, AXMOV DX, OFFSET MESSMOV AH, 09;在屏幕上显示每次中断的提示信息,DS:DX中存放显示的字符串的地址INT 21HMOV AL, 20H; 发出EOI 结束中断到PC 内主片的地址20HOUT 20H, ALLOOP NEXT ;LOOP每次跳转CX自动减1IN AL, 21H ;读中断屏蔽寄存器,获取中断屏蔽字OR AL, 08H ;关闭IRQ3 中断OUT 21H, AL ;将中断屏蔽字送到中断屏蔽寄存器STI ;置中断标志位MOV AH, 4CH ;返回DOSINT 21HNEXT: IRET ;中断返回CODE ENDSEND START(2)DATA SEGMENTMESS DB 'TPCA interrupt! ',0DH,0AH, '$'DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, CSMOV DS, AXMOV DX, OFFSET INT3 ;采用间接修改法,设置中断向量MOV AX, 2572HINT 21HIN AL, 21H ;主片AND AL, 0FBH ;1111 1011OUT 21H, ALIN AL, 0A1H ;从片AND AL, 0FBH ;1111 1011OUT 0A1H, ALMOV CX, 10 ;记中断循环次数为10次STI ;允许中断发生W AIT: JMP WAITINT3: MOV AX, DATA ;中断服务程序MOV DS, AXMOV DX, OFFSET MESSMOV AH, 09 ;在屏幕上显示每次中断的提示信息INT 21HMOV AL, 20H ; 发出EOI结束中断到PC内主片的地址20HOUT 20H, AL ;关闭主片OUT 0A0H,AL ;关闭从片LOOP NEXTIN AL, 21H ;读中断屏蔽寄存器,获取中断屏蔽字OR AL, 04H ;关闭IRQ3中断OUT 21H, AL ;将中断屏蔽字送到中断屏蔽寄存器IN AL, 0A1H ;读中断屏蔽寄存器,获取中断屏蔽字OR AL, 04H ;关闭IRQ10中断OUT 0A1H, AL ;将中断屏蔽字送到中断屏蔽寄存器STI ;置中断标志位MOV AH, 4CH ;返回DOSINT 21HNEXT: IRET ;中断返回CODE ENDSEND START实验1-2(1)实验内容PC 机内中断嵌套实验。

使用单次脉冲模拟两个中断源的中断产生,填写中断处理程序,体会中断嵌套的过程。

(2)主要步骤接线图:说明:本实验接线图如图1-3 所示,从单脉冲单元引出两根导线,一根接到系统总线单元区的IRQ 引脚,一根接到USB 核心卡的IRQ10 端。

参考流程图:程序源代码:CODE SEGMENTASSUME CS:CODE ,DS: DATASTART:.386 ;告诉汇编器生成intel 80386指令集CLI ;关中断MOV AX,CS;设置中断向量表INT10MOV DS,AX ;将CS段基址给DSMOV DX,OFFSET INT10 ;int10的偏移地址给DXMOV AX,2572HINT 21H ;系统调用25号设置中断功能,中断号72H;设置完成;设置中断向量表INT3MOV DX,OFFSET INT3MOV AX,250BHINT 21H ;系统调用25号设置中断功能,中断号0BH;设置完成IN AL,21HAND AL,0F3H ;1111 0011OUT 21H,AL ;写OCW1,开放2,3号端口IN AL,0A1HAND AL,0FBH ; 1111 1011OUT 0A1H,AL ; 写OCW1,开放10号端口MOV CX,10 STIWAIT:JMP W AIT ;CPU等待中断;INT10代码INT10: CLI ;关中断PUSHADPUSHFD ;将各种寄存器的值入栈,保存现场MOV CX,10 ;给CX赋值,循环10次NEXT10_1:MOV DX,31HMOV AH,02HINT 21H ;系统调用02功能,DL为显示内容ASCII31H :1MOV DX,30HMOV AH,02H ;系统调用02功能,DL为显示内容ASCII31H :0INT 21HMOV DX,20H ;系统调用02功能,DL为显示内容ASCII20H :<空格>MOV AH,02HINT 21HCALL DELAY1 ;调用DELAY1 子程序LOOP NEXT10_1 ;在CX>0之前跳转,并使CX=CX-1;换行操作MOV DX,0DH ;系统调用02功能,DL为显示内容ASCII0DH :<归位键>MOV AH,02HINT 21HMOV DX,0AH ;系统调用02功能,DL为显示内容ASCII0AH :<换行>MOV AH,02HINT 21HMOV AL,20HOUT 0A0H,ALOUT 20H,AL ;发送OCW2结束到主片(偶地址为20H)和从片(偶地址为A0H)POPFDPOPAD ;将之前入栈的恢复,恢复现场STI ;开中断IRET ;中断返回;INT3代码INT3: CLI ;关中断PUSHAD ;将各种寄存器的值入栈,保存现场PUSHFDMOV CX,10 ;给CX赋值,循环10次NEXT3_1: MOV DX,33H ;系统调用02功能,DL为显示内容ASCII33H :3MOV AH,02HINT 21HMOV DX,20H ;系统调用02功能,DL为显示内容ASCII20H :<空格>MOV AH,02HINT 21HCALL DELAY1 ;调用DELAY1 子程序LOOP NEXT3_1 ;在CX>0之前跳转,并使CX=CX-1;换行操作MOV DX,0DH ;系统调用02功能,DL为显示内容ASCII0DH :<归位键>MOV AH,02HINT 21HMOV DX,0AH ;系统调用02功能,DL为显示内容ASCII0AH :<换行>MOV AH,02HINT 21HMOV AL,20HOUT 0A0H,ALOUT 20H,AL ;发送OCW2结束到主片(偶地址为20H)和从片(偶地址为A0H)POPFDPOPAD ;将之前入栈的恢复,恢复现场STI ;开中断IRET ;中断返回DELAY1 PROCPUSHAD ;将各种寄存器的值入栈,保存现场PUSHFDMOV CX,0FH ;给CX赋值,循环15次DELAY_LOOP1:MOV BX,0FFFFH ;BX给成FFFFH,每次减一到0跳出循环以此来达到延时的效果DELAY_LOOP2:DEC BXNOPJNZ DELAY_LOOP2LOOP DELAY_LOOP1POPFDPOPAD ;恢复现场RETDELAY1 ENDPCODE ENDSEND START实验1-3(1)实验内容扩展多中断源查询方式应用实验。

相关主题