单片机10秒倒计时的炸弹。。。。。bomb!!!!!!

2019-04-15 18:29发布

  #include


sbit LATCH_bit = P2^3;
sbit LATCH_seg = P2^2;
sbit SPK=P0^2;
unsigned int LED[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90/*,0x88,0x83,0xc6,0xa1,0x86,0x8e*/};
void delay(int n);
void DelayMs(unsigned char t);
void DelayUs2x(unsigned char t);//函数声明 
unsigned char misec_10;
unsigned char sec;


void main()
{  
    unsigned int i;
TMOD = 0x01;
TH0 = 0xd8;
TL0 = 0xf0;
    EA = 1;
ET0 = 1;
TR0 = 1;
misec_10 = 0;
sec = 10;
    while(1)
{


         P1 = 0xfb;
LATCH_bit = 1;
LATCH_bit = 0;
P1 = ~LED[misec_10/10];
LATCH_seg = 1;
LATCH_seg = 0;
delay(200);


P1 = 0xf7;
LATCH_bit = 1;
LATCH_bit = 0;
P1 = ~LED[misec_10%10];

LATCH_seg = 1;
LATCH_seg = 0;
delay(200);


    P1 = 0xfe;
LATCH_bit = 1;
LATCH_bit = 0;
P1 = ~LED[sec/10];
LATCH_seg = 1;
LATCH_seg = 0;
delay(200);


P1 = 0xfd;
LATCH_bit = 1;
LATCH_bit = 0;
P1 = ~LED[sec%10];
P1 += 0x80;
LATCH_seg = 1;
LATCH_seg = 0;
delay(200);




if(misec_10 == 0)
{
    misec_10 = 99;
sec--;


    DelayUs2x(200); 
DelayUs2x(200); 
SPK=!SPK; 


if(sec == 255)
{
    sec = 10;
for(i=0;i<500;i++)
     {
     DelayMs(1);  
 SPK=!SPK;
 }
 delay(3000);
}
}
}
}


void delay(int n)
{
while(n--);
}


void TSR_T0(void) interrupt 1
{
TH0 = 0xd8;
TL0 = 0xf0; //0xd8f0 == 55536
misec_10--;
}


void DelayMs(unsigned char t)
{
     
 while(t--)
 {
     //大致延时1mS
     DelayUs2x(245);
DelayUs2x(245);
 }
}


void DelayUs2x(unsigned char t)
{   
 while(--t);
}