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