/************************************************************* 单片机中断头文件 实现功能:单片机中断的控制控制 补充说明: ***************************************************************/ #ifndef _INTERRUPT_H_ #define _INTERRUPT_H_ #include #define uchar unsigned char #define uint unsigned int /**********************引脚定义************************/ sbit buzz=P2^3; ///蜂鸣器 /**********************变量定义************************/ extern uchar zhu_f; //外部变量 extern uchar wan_f; extern uchar time; uchar T0_num; /********************************************************* 函数名称:void T0_init() 函数作用:定时器0初始化函数 参数说明: *********************************************************/ void T0_init() { EA=1; //开总中断 ET0=1; //定时器T0中断允许 TMOD=0x01; //使用定时器T0的模式1 TH0=(65536-50000)/256; //定时器T0的高8位赋初值 TL0=(65536-50000)%256; //定时器T0的低8位赋初值 TR0=0; //关闭定时器 } /********************************************************* 函数名称:void T0_interrupt(void) interrupt 1 using 0 函数作用:定时器0中断处理函数 参数说明: *********************************************************/ void T0_interrupt(void) interrupt 1 using 0 { TH0=(65536-50000)/256; //定时器T0的高8位重新赋初值 TL0=(65536-50000)%256; //定时器T0的低8位重新赋初值 T0_num++; //中断次数+1 if(time<=5) //比赛最后5S,蜂鸣器发出滴滴鸣叫声 buzz=~buzz; if(T0_num==20) //中断20次,表示20*50ms=1S { T0_num=0; //重置中断次数 time--; //比赛时间-1S } if(time==0) //比赛时间倒计时为0S时 { TR0=0; //关闭定时器 zhu_f=0; //重新回到开始状态 buzz=1; //关闭蜂鸣器 wan_f=1; //标记本次抢答完成 } } #endif