外部中断实验报告
机械工程系
微机原理与接口技术
实验报告书
实 验 名 称: 外部中断(急救车与交通灯)
年级专业及班级: 2009级机制 2 班
姓 名: 余松秦
学 号: 0908012247
指 导 教 师: 刘建春
评 定 成 绩:
教 师 评 语:
实验时间: 2011 年 11 月 15 日
实验六 外部中断(急救车与交通灯)
一、实验要求
本实验模拟交通信号灯控制,一般情况下正常显示,有急救车到达时,两个方向交通信号灯全红,以便让急救车通过。设急救车通过路口时间为10秒,急救车通过后,交通恢复正常,本实验用单次脉冲申请外部中断,表示有急救车通过。
二、实验电路及连线
三、实验程序流程图
主程序框图 外部中断子程序框图
四、实验程序
#include
#include
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;
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
{
_nop_();
for(m=0;m
}
}
void delay1(){
unsigned int n,m;
for(n=0;n
{
_nop_();
for(m=0;m
}
}
void delay2(){
unsigned int n,m;
for(n=0;n
{
_nop_();
for(m=0;m
}
}
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();
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 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();
}
五、实验现象以及碰到什么问题?如何解决?
程序编写是个问题,老师说全班只有俩个版本的程序,接下来要看书,学着自己写程序。