标题:
单片机外部中断实验报告
[打印本页]
作者:
时光无痕
时间:
2017-12-21 19:14
标题:
单片机外部中断实验报告
本帖最后由 时光无痕 于 2017-12-22 20:05 编辑
硬件实验十一 外部中断实验(51/96)
姓名:
袁
*
杰
学号:
1517623
一、实验要求
用单次脉冲申请中断,在中断处理程序中对输出信号进行反转。
二、实验目的
1、学习外部中断技术的基本使用方法。
2、学习中断处理程序的编程方法。
三、实验电路及连线
0.png
(11.6 KB, 下载次数: 50)
下载附件
2017-12-21 22:58 上传
连线
连接孔 1
连接孔 2
1
P1.0
L0
2
单脉冲输出
INT0 (51 系列)
2
单脉冲输出
EINT (96 系列)
四、实验说实明
中断服务程序的关键是:
1.保护进入中断时的状态,并在退出中断之前恢复进入时的状态。
2.必须在中断程序中设定是否允许中断重入,即设置 EXO 位。
3.对于 80C196,要选择相应的中断源,并设置中断屏蔽寄存器的相应位。
本例中使用了 INTO 中断(80C196 为EXTINT 中断),一般中断程序进入时应保护 PSW,
ACC 以及中断程序使用但非其专用的寄存器。本例的中断程序保护了 PSW,ACC 等三个寄存器并且在退出前恢复了这三个寄存器。另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。本例中没有涉及这种情况。
INTO(P32)端(80C196 为 EINT 端)接单次脉冲发生器。P1.0 接 LED 灯,以查看信号反转.
五 实验框图
:
0.png
(11.76 KB, 下载次数: 67)
下载附件
2017-12-21 22:59 上传
+
单片机源程序如下:
COUNT_INT EQU 30H
LEDVALUE EQU 31H
ORG 0000H
LJMP START
ORG 001BH
LJMP Timer1Interrupt
START:
MOV SP,#60H
MOV COUNT_INT,#0
MOV LEDVALUE,#01H
LCALL InitTimer1
LOOP:
MOV A,LEDVALUE
MOV P2,A
LJMP LOOP
InitTimer1:
MOV TMOD,#10H;定时器T1为工作方式1,产生50ms定时
MOV TH1,#3CH
MOV TL1,#0B0H
SETB EA
SETB ET1
SETB TR1
RET
Timer1Interrupt:
PUSH DPH
PUSH DPL
PUSH ACC
MOV TH1,#3CH
MOV TL1,#0B0H
;========================
INC COUNT_INT
MOV A,COUNT_INT;每50ms加1,
CJNE A,#2,Timer1Interrupt_EXIT;100ms
MOV COUNT_INT,#0
MOV A,LEDVALUE
RL A
MOV LEDVALUE,A
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
外部中断.docx
(24.59 KB, 下载次数: 18)
2017-12-21 19:14 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1