该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#define uint unsigned int
#define uchar unsigned char
#define duan P0
#define TH (65536-5000)/256
#define TL (65536-5000)%256
sbit LED0=P1^2;
sbit Button1=P3^2;
sbit Button2=P3^3;
uint ncounter=999;
uchar flag=0,mcounter=0;
bit stop_flg=0,reset_flg=0;
uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void Delay30us()//@11.0592MHz
{
unsigned char i;
i = 11;
while (--i);
}
void main(void)
{
uchar i=0;
TMOD|=0x01;
TH0=TH;
TL0=TL;
TF0=0;
ET0=1;
EA=1;
TR0=1;
while(1)
{
if(!Button1)
{
Delay30us();
if(!Button1)
{
while(!Button1);
stop_flg=!stop_flg;
}
}
if(!Button2)
{
Delay30us();
if(!Button2)
{
while(!Button2);
reset_flg=1;
}
}
}
}
void ISR_TIM0(void) interrupt 1
{
TH0=TH;
TL0=TL;
flag++;
if(!stop_flg)
mcounter++;
if(reset_flg==1){ncounter=999;LED0=1;reset_flg=0;stop_flg=1;}
if(mcounter==20)
{
ncounter--;
mcounter=0;
if(ncounter==0){stop_flg=1;LED0=0;}
}
if(flag>4)flag=1;
switch(flag)
{
case 1:{
duan=0xff-table[ncounter/100/10];//本开发板采用共阳数码管,与共阴段码相反
P2=~(1<<7);
break;
}
case 2:{
duan=0xff-table[ncounter/100%10];
P2=~(1<<6);
break;
}
case 3:{
duan=0xff-(table[ncounter%100/10]+0x80);
P2=~(1<<4);
break;
}
case 4:{
duan=0xff-table[ncounter%100%10];
P2=~(1<<5);
break;
}
}
}