厦门理工学院 单片机 硬件实验六 外部中断(急救车与交通灯) C程序
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
连接孔 1 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 单脉冲输出
连接孔 2 L0 L1 L2 L3 L4 L5 INT0(51)
四、实验说明
中断服务程序的关键是: 1、保护进入中断时的状态,并在退出中断之前恢复进入时的状态。 2、必须在中断程序中设定是否允许中断重入,即设置 EXO 位。 本例中使用了 INTO 中断,一般中断程序进入时应保护 PSW,ACC 以及中断程序使用 但非其专用的寄存器。本例的中断程序保护了 PSW,ACC 等三个寄存器并且在退出前恢复 了这三个寄存器。另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。 本例中没有涉及这种情况。 对于 8051CPU 外部中断由 INTO(P32)端接入。中断信号由单次脉冲发生器产生。 对中断的处理可参见硬件实验十一。
} }
void int0() interrupt 0 {
//stat(1,0,0,1,0,0); sn_red=1; sn_yellow=0; sn_green=0; ew_red=1; ew_yellow=0; ew_green=0;
delay2(); }
机械工程系 微机原理与接口技术
实验报告书
实 验 名 称:
年级专业及班级:
姓
名:
学
号:
指 导 教 师:
评 定 成绩:
教 师 评 语:
刘建春
硬件实验六 外部中断(急救车与交通灯)
一、实验要求
本实验模拟交通信号灯控制,一般情况下正常显示,有急救车到达时,两个方向交通信号灯全 红,以便让急救车通过。设急救车通过路口时间为 10 秒,急救车通过后,交通恢复正常,本实验
#include <reg52.h> #include <intrins.h> sbit sn_red=P1^0; sbit sn_yellow=P1^1; sbit sn_green=P1^2; sbit ew_red=P1^3; sbit ew_yellow=P1^4; sbit ew_green=P1^5;
stat(0,0,0,1,0,0); delay(); stat(0,0,1,1,0,0); delay(); stat(0,0,0,1,0,0); delay(); stat(0,0,1,1,0,0); delay(); stat(0,0,0,1,0,0); delay(); stat(0,1,0,1,0,0); delay1(); stat(1,0,0,0,0,1); delay1(); stat(1,0,0,0,0,0); delay(); stat(1,0,0,0,0,1); delay(); stat(1,0,0,0,0,0); delay(); stat(1,0,0,0,0,1); delay(); stat(1,0,0,0,0,0); delay(); stat(1,0,0,0,1,0); delay1();
void stat(bit r1,bit y1,bit g1,bit r2,bit y2,bit g2){ sn_red=r1; sn_yellow=y1; sn_green=g1; ew_red=r2; ew_yellow=y2; ew_green=g2;
}
void delay(){ unsigned int n,m; for(n=0;n<=1200;n++) {
_nop_(); for(m=0;m<1200;m++) _nop_(); } }
void delay1(){ unsigned int n,m; for(n=0;n<=2200;n++) {
_nop_(); for(m=0;m<2200;m++) _nop_(); } }
void delay2(){ unsigned int n,m; for(n=0;n<=1200;n++) {
用单次脉冲申请外部中断,表示有急救车通过。
二、实验目的
1、学习外部中断技术的基本使用方法。 2、学习中断处理程序的编程方法。
三、实验电路及连线
LED0、LED1、LED2 分别表 示南北方向红、黄、绿灯
LED3、LED4、LED5 分别表 示东西方向红、黄、绿灯
单次脉冲
连线 1 2 3 4 5 6 7
五、实验框图
开始
开外中断
初始状态东西 南北都是红灯
状态 1 南北绿 灯,东西红灯
状态 2 南北绿灯闪 转黄灯,东西红灯
状态 3 南北红 灯,东西绿灯
外部中断入口 保护现场
东西,南北都亮红灯 延时 10 秒 恢复现场 中断返回
状态 4 南北红灯,东 西绿灯闪转黄灯
主程序框图
外部中断子程序框图
六实验程序
_nop_();
for(m=0;m<1200;m++) _nop_(); } }
void main(){ // IE=0x81;
//1000 0001 EA=1; EX0=1;
IP=0x01;
stat(1,0,0,1,0,0); //(南北红黄绿,东西红黄绿) delay1(); for(;;){ stat(0,0,1,1,0,0); delay1();