#include #define uchar unsigned char #define uint unsigned int uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; sbit P27=P2^7; sbit P26=P2^6; sbit fmq=P3^6; uchar weishu=99; sbit K5=P1^4; sbit K6=P1^5; sbit jdq=P3^7; void ZT(uchar s); uchar m; 1 / 21 /****************************************** 延时子程序 *****************************************/ void delay1ms(uint i) { while(i--) {uchar j; for(j=0;j<115;j++) { ; } } } 2 / 21 void delay500us() { uchar j; for(j=0;j<57;j++) { ; } } /************************************ 蜂鸣器子程序 ************************************/ void beep() { 3 / 21 fmq=0; delay500us(); fmq=1; delay500us(); } /*********************************** 数码管显示子程序 ***********************************/ void Disp_lib(uchar x,y) { while(x--) { P27=0; 4 / 21 P0=tab[y%10]; delay1ms(5); P27=1; P0=0xff; P26=0; P0=tab[y/10]; delay1ms(5); P26=1; P0=0xff; } } /************************************** 倒计时加速 5 / 21 **************************************/ void JIASU(uchar x, y) { while(x--) { P27=0; P0=tab[y%10]; delay1ms(5); P27=1; P0=0xff; P26=0; P0=tab[y/10]; delay1ms(5); 6 / 21 P26=1; P0=0xff; } } /************************************** 外终端初始化 *************************************/ void ZD_Init() { EA=1; EX0=1; EX1=1; IT0=1; 7 / 21 IT1=1; } /************************************** 功能函数 :主函数 **************************************/ main() { uchar t; uchar k; P27=0; P26=0; P0=tab[9]; ZD_Init(); 8 / 21 while(1) { if(K5==0){ delay1ms(15); if(K5==0){ for(t=0;t<100;t++) { beep(); } for(t=0;t<100;t++) { Disp_lib(100,weishu); weishu--; m=weishu; 9 / 21 for(k=0;k<100;k++) { beep(); } } delay1ms(50); for(t=0;t<10;t++) { P27=0; P0=tab[0%10]; delay1ms(5); P27=1; P26=0; P0=tab[0/10]; / 21 10 delay1ms(5); P26=1;} for(t=0;t<255;t++) { beep(); } delay1ms(50); for(t=0;t<10;t++) { P27=0; P0=tab[0%10]; delay1ms(5); P27=1; P26=0; 11 / 21 P0=tab[0/10]; delay1ms(5); P26=1;} for(t=0;t<255;t++) { beep(); } delay1ms(50); for(t=0;t<10;t++) { P27=0; P0=tab[0%10]; delay1ms(5); P27=1; / 21 12 P26=0; P0=tab[0/10]; delay1ms(5); P26=1;} for(t=0;t<255;t++) { beep(); } delay1ms(50); jdq=0; while(1) { P27=0; P0=tab[0%10]; / 21 13 delay1ms(5); P27=1; P26=0; P0=tab[0/10]; delay1ms(5); P26=1;} while(!K5); } } } } /***************************************** 中断0: 停止定时炸弹 14 / 21 ****************************************/ int0() interrupt 0 using 1 { uint t; for(t=0;t<100;t++) { beep(); } while(1){ Disp_lib(100,m); } } /***************************************** 中断1:加速定时炸弹倒计时 15 / 21 *****************************************/ int1() interrupt 2 { uchar t; for(t=0;t<100;t++) { beep(); } while(m--) { JIASU(3,m); for(t=0;t<100;t++) { / 21 16 beep(); } } delay1ms(50); for(t=0;t<10;t++) { P27=0; P0=tab[0%10]; delay1ms(5); P27=1; P26=0; P0=tab[0/10]; delay1ms(5); P26=1;} / 21 17 for(t=0;t<255;t++) { beep(); } delay1ms(50); for(t=0;t<10;t++) { P27=0; P0=tab[0%10]; delay1ms(5); P27=1; P26=0; P0=tab[0/10]; delay1ms(5); / 21 18 P26=1;} for(t=0;t<255;t++) { beep(); } delay1ms(50); for(t=0;t<10;t++) { P27=0; P0=tab[0%10]; delay1ms(5); P27=1; P26=0; P0=tab[0/10]; / 21 19 delay1ms(5); P26=1;} for(t=0;t<255;t++) { beep(); } delay1ms(50); jdq=0; while(1) { P27=0; P0=tab[0%10]; delay1ms(5); P27=1; 20 / 21 P26=0; P0=tab[0/10]; delay1ms(5); P26=1;} } 21 / 21 因篇幅问题不能全部显示,请点此查看更多更全内容