}
/*********************初始化子程序*************************/ void Init(void) {
TMOD=0x11;//定时器0 定时器1 16位定时模式
IT0=1;//INT0下降沿触发中断
TH0=(65536-46075)/256;
TL0=(65536-46075)%6;
ET0=1; //定时器0中断允许位 TR0=1;//启动定时器0
counter=0;minutes=0;seconds=0; }
/**********************发射超声波***************************/ void SendSound(uchar nums) {
uint i=0; Set40=0; nums=nums; Set40=1;
for(i=0;i ET1=1; //定时器1中断允许位 TR1=1;//启动定时器1 EX0=1; //开启中断0 28 } /********************外部中断0计算距离***********************/ void int0srv(void) interrupt 0 { //distance=SOUNDSPEED*time/1000000/2; countwave++; if(countwave==2) { } /*****************T0计时子程序 计算是否超过45分钟******************/ void timer0() interrupt 1 using 2 //45分钟到则标志位置1报警 { TH0=(65536-46075)/256; TL0=(65536-46075)%6; ET1=0; //定时器1中断允许位 TR1=0;//启动定时器1 EX0=0;//INT0允许中断 backwaveflag=1; countwave=0; } counter++; if(counter==20) { seconds++; // if(seconds==5) {time5sflag=1;} counter=0; if(seconds==60) { 29 } minutes++; seconds=0; if(minutes==45) { minutes=0; timeflag=1; } } } /**********T1计时子程序 计算返回来超声波的时间**********/ Tvoid timer1(void) interrupt 3 using 1 { ET1=0; //定时器1中断允许位 TR1=0;//启动定时器1 } void delayms(uint ms) // 延时子程序 { } uchar i; while(ms--) { } for(i = 0; i < 120; i++); EX0=0;//INT0允许中断 30