《单片机原理及应用》实验指导书
实验五 中断实验
【实验目的】
1.掌握外部中断技术及其外部中断处理子程序的编程方法; 2.学习模拟交通灯控制的程序设计。
【实验内容】
利用实验箱LED灯模拟实现十字路口交通灯的变化。要求:各方向绿灯和人行灯通行时间均为5秒,绿灯和人行灯灭红灯亮前黄灯亮3秒;利用外部中断INT0(P3.2)模拟交通管控,实施交通管控时各方向红灯以周期为1秒闪烁5次,其它灯灭,5秒后自动恢复到交通管控前的状态。
【实验原理与设计】
1.硬件电路
利用实验箱上的LAMP输出模块电路、SMPLE PAULSE脉冲产生电路模块和MCU单片机模块,组成交通灯的控制电路,如图5.1所示。
图5.1 实验箱面板
其中L1-L8接P0口。可以用P0.0~P0.3控制L1- L4(红、黄、绿和白)作为东西方向的交通灯和人行灯, P0.4~P0.7控制L9- L12(红、黄、绿和白) 作为南北方向的交通灯和人行灯,各方向白灯亮人通行,白灯灭人禁行。
脉冲模块 拨动开关与LED灯模块 MCU模块 1
《单片机原理及应用》实验指导书
SMPLE PAULSE脉冲产生电路模块电路连接如图5.2所示。可以通过按钮AN0(红色)产生单脉冲,把负脉冲输出孔P与单片机P3.2(INT0)连接,就可作为外部中断请求信号。
图5.2 单脉冲产生电路
2.程序设计
(1) 按照实验内容要求程序主流程图如图5.3所示,中断服务子程序流程图如图5.4所示。
图5.3 交通灯主程序流程图 5.4 外部中断子程序流程图
延时5秒 返 回 东西红灯南北黄灯 延时3秒 延时5秒 东西黄灯南北红灯 延时3秒 东西禁行南北通行 开 始 初始化 东西通行南北禁行 中断子程序入口 保存之前交通状态 东西南北全红灯 红灯闪持续5次 恢复之前交通状态 (2) 确定P0口控制各方向交通灯的输出数据,例如:
东西禁行,南北通行:P0=00111110B (或3EH)
黄灯亮:P0= 11011110B(或DEH) 东西通行,南北禁行:P0=11100011B (或E3H) 黄灯亮:P0=11101101B (或EDH)
2
《单片机原理及应用》实验指导书
东西南北全红灯:P0=11101110B (或EEH)
全灭:P0=11111111B (或FFH)
(3) 延时由延时子程序或定时器实现
本实验内容延时时间有5秒(绿灯和人行灯通行时间)、3秒(黄灯时间)、500ms(中断子程序里红灯闪烁时间),主程序的延时子程序和中断中的延时子程序最好各自独立不要互相调用。
延时5秒编程:
MOV R1, #50
LOOP1: LCALL DELAY100MS ;注意每次循环调用的标号要不同
DJNZ R1, LOOP1
DELAY100ms: MOV R6, #199 ; 1×1=1us
Dly1: MOV R7, #250 ; 1×1×199=199us DJNZ R7, $ ; 2×1×250×199=99.5ms DJNZ R6, Dly1 ; 2×1×199=398us RET ; 2×1=2us (4)外部中断使用与编程方法
(a)主程序中声明外部中断入口地址,并存放跳转中断子程序的指令,由硬件电路连接确定选用外部中断INT0,其入口地址为0003H;
ORG 0003H
LJMP INT_INT0 ;中断子程序名称可自拟
(b)设置外部中断触发方式为负边沿触发,即将INT0的触发方式控制位IT0置1; SETB IT0
(c)开外部中断INT0,开总中断;
SETB EX0 SETB EA (d)中断子程序
进入中断子程序首先要保护现场,并在中断返回之前恢复进入时的状态。服务子程序完成最后中断返回命令RETI。
进入中断后要对在中断子程序中与主程序中重复的寄存器进行保护,退出中断前要进行恢复,恢复与保护寄存器的顺序要相反,以符合堆栈先进后出、后出先进的原则。
PUSH 01H PUSH 06H PUSH 07H
中断返回时要恢复保护内容 POP 07H
3