中断方式控制彩灯闪烁实验报告

中断方式控制彩灯闪亮             

报   告

实验题目:    中断方式控制彩灯闪亮   

专    业    计算机科学与技术     

学生姓名              

班级学号            

分组序号                 

指导教师              

2011 年 5月13 日 

中断方式控制彩灯闪亮实验报告

一、         实验时间

      20## 5/13

二、         实验地点

  

三、         实验小组人员

四、         指导老师

五、         实验目的

   通过8259中断控制器应用编程实验,学习中断控制器的工作原理及中断控制程序的设计方法。

六、         实验内容

   在声光报警模块上按动SW3开关,通过8255向主机内的中断控制器申请10号中断,在中断服务程序中,点亮声光报警模块上的LED灯。

七、         实验原理

利用平台上的开关SW3,通过8255的PC4申请IRQ10号中断,实验的原理图3.2.12所示。

                         图3.2.12 中断申请电路原理图

八、         实验资源配置

1.IBM PC兼容机

2.windows200

3.MFID多功能微机实验平台

4.MF2kp微机原理实验集成开发环境

九、         实验步骤

步骤一:在MFID实验平台上的C区的IRQ10与PC4相连。

步骤二:在MF2KP环境下输入汇编程序,编译、连接、运行。

步骤三:每按1次SW3键,PC4申请1次中断,LED点亮一次。

十、         实验流程图


 

十一、              实验源程序  

STACK1 SEGMENT STACK

DW 200 DUP(?)

STACK1 ENDS

DATA SEGMENT

MESG1    DB 'Press SW3 one time to invoke interrupt one time,and to light one of LEDs',0ah,0dh

DB 'Exit with q/Q',0ah,0dh,'$'

LEDDATA  DB 01H,02H,04H,08H,10H,20H,40H,80H

NUM     DW(0) 

INT0A_OFF DW(?)

INT0A_SEG DW(?)         

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,DATA

MOV DS,AX

MOV AH,09H

MOV DX,OFFSET MESG1

INT 21h             ;显示提示信息     

MOV DX,303H         ;初始化8255

MOV AL,83H

OUT DX,AL

MOV DX,300H          ;LED灯熄灭

MOV AL,00H

OUT DX,AL

MOV AX,3572H         ;获取原中断向量

INT 21H

MOV INT0A_OFF,BX     ;保存原中断向量

MOV BX,ES

MOV INT0A_SEG,BX

CLI                    ;关中断

MOV AX,2572H

MOV DX,SEG LEDLIGHT    ;设置新的中断向量

PUSH DS

MOV DS,DX

MOV DX,OFFSET LEDLIGHT

INT 21H

POP DS

STI                       ;开中断

IN  AL,0A1H              ;打开IRQ10

AND AL,0FBH

OUT 0A1H,AL 

L1:

MOV AH,0BH            ;检查是否有’Q’或’q’键按下

INT 21H

INC AL

JNZ NEXT0              ; 若无键按下,则程序往下执行      

MOV AH,08H             ;如有’Q’或’q’键按下,则程序退出

INT 21H

CMP AL,'q'

JZ  EXIT

CMP AL,'Q'

JZ  EXIT

NEXT0:

MOV DX,302H         ;查PC2是否为0

IN AL,DX

AND AL,04H

JNZ L1

MOV DX,303H          ;按下SW3,则PC4=1申请中断

MOV AL,09H

OUT DX,AL

CALL delay2

MOV DX,303H          ;置PC4=0

MOV AL,08H

OUT DX,AL

JMP L1 

EXIT:

MOV AX,2572H         ;恢复中断向量

MOV DX,INT0A_SEG

PUSH DS

MOV DS,DX

MOV DX,INT0A_OFF

INT 21H

POP DS

IN  AL,0A1H         ;屏蔽IRQ10

OR  AL,04H

OUT 0A1H,AL 

MOV AX,4C00H       ;程序退出

INT 21H   

LEDLIGHT PROC FAR      ;中断服务程序

PUSH SI

PUSH AX

PUSH DX   

CLI                 ;关中断

MOV SI,OFFSET LEDDATA 

ADD SI,NUM

MOV AL,[SI]

MOV DX,300H

OUT DX,AL            ;点亮LED

INC NUM

CMP NUM,08H

JNE NEXT

MOV NUM,00H

NEXT :

MOV AL,62H       ;发中断结束命令

MOV DX,0A0H

OUT DX,AL        ;向从片8259发EOI命令

OUT 020H,AL      ;向主片8259发EOI命令

STI                ;开中断

POP DX

POP AX

POP SI     

IRET

LEDLIGHT ENDP

delay2 proc                               ;延时子程2

push  cx

push  bx

mov  cx,04ffh

dl4:     mov  bx,0ffffh

dl3:     dec  bx

jnz  dl3

dec  cx

jnz  dl4

pop  bx

pop  cx

ret

delay2 endp

CODE ENDS 

END START

十二、              调试中出现的问题及解决方法

第一次调试成功代码,出来的现象只有一个灯的亮灭,而且运行的时候灯是全亮的,原因有两个,一个是硬件方面,实验箱本身有一定的不足,还有一个就是程序的不足;再经过了多次的调试之后又出现了彩灯闪烁不停的现象,而且前面灯全亮的问题也没得到解决;大概又过了几小时,才找到问题的根源,硬件方面:实验箱的问题无法避免;软件方面,用两层延时就可以改变彩灯闪烁的快慢。这样一来,现象就明显了。

十三、              实验心得

通过这次实验我深刻体会到了自己中断方式知识的不足以及汇编语言编程的不熟练,程序不断出错,有关中断的以前没有做过实验,上课学的都没有在实际中运用过,只是懂得基本的原理,具体的还真不知道是怎么回事,导致我需要不断地调试以及参考书本。不过经过几小时的功夫,还是出来了现象,通过这次实验也让我对中断有了更深的了解。

十四、              参考文献

《微机原理与接口技术项目教程》杨居易编著  清华大学出版社

 

第二篇:循环彩灯控制实验报告

中国计量学院电工电子实验中心电子版实验报告

实验课程: 电路电子实验 实验日期: 2009-10-14 实验项目: 循环彩灯控制 班级: 07电气2班 学号: 0700103212 姓名: 一、实验目的

1.学习计数器、译码器、发光二极管及相关芯片的使用方法。

2.掌握计数器、译码器、发光二极管及相关芯片的综合应用 。

3.掌握用示波器测试计数器输出波形的方法 。

二、实验任务

用74LS138、74LS161、74LS00、发光二极管等芯片实现一个彩灯的循环控制。

三、实验仪器(设备名称与型号)

各色发光二极管、74LS161计数器、74LS138、74LS00、等芯片,导线,电阻信号发生器,示波器,数字万用表等。

四、实验方案(包括简要原理及设计电路图等)

步骤:1.用万用表二极管挡、电阻2K挡或将导线连接+5V电源与输出发光二极管等方法检查导线导通情况,当万用表发出蜂鸣声、阻值示数约为0或发光二极管亮时,均表示导线导通。

2,根据电路原理图连接电路。

1、电路原理图

循环彩灯控制实验报告

电路图(1)

循环彩灯控制实验报告

电路图(2)

七、实验结论

八、实验思考题

相关推荐