求一个用led显示倒计时的程序
很多板子的端口都不一样,没有具体的板子不好写。
随便写个能运行的就行
随便写个能运行的就行
#include
sbit P10=P1^0;//蜂鸣器
sbit P33=P3^3; //+10
sbit P32=P3^2; //-10
sbit P31=P3^1; //开始暂停
sbit P36=P3^6; //-1
sbit P37=P3^7; //+1
//unsigned char c[10]={0xfc,0X60,0Xda,0Xf2,0X66,0Xb6,0xbe,0Xe0,0Xfe,0xf6}; //开发板段选 p2
//unsigned char b[8]={0X7f,0xbf,0xdf,0Xef,0xf7,0xfb,0Xfd,0Xfe}; //开发板位选 p0
unsigned char c[10]={0x5f,0X41,0X9d,0Xd5,0Xc3,0Xd6,0xde,0X45,0Xdf,0xd7}; //实物段选 p0
unsigned char b[8]={0X7f,0xef,0xdf,0Xbf, 0x7f,0xdf,0Xbe,0Xef}; //实物位选 p2
unsigned char sign,begin,signbegin, signminuteup,signminutedown,signminuteup10,signminutedown10;
signed char minute,second;
void sjxs();
void fmq();
void delay100us(); //按键防震的延时
void delay400ms(void);
void main()
{
P33=1;
P32=1;
P31=1;
P36=1;
P37=1;
while(1)
{
if(sign==100)
{sign=0;second--;}
if(second==-1)
{minute--;second=59;}
sjxs(); //显示程序 显示部分放这里,保证数据及时显示
if(minute==0&&second==0&&begin==1)
{begin=0;EA=0;ET0 = 0;TR0 = 0; fmq(); /*蜂鸣器*/}
if(minute>99)
{minute=minute%10;}
if(minute 9)
{ P2=b[1]; //十位
P0=c[sjfj[1]];
for(u=0;u 0)
{ P2=b[2]; //百
P0=c[sjfj[2]]|0x20;
for(u=0;u 9)
{ P2=b[3]; //千
P0=c[sjfj[3]];
for(u=0;u 0;e--)
for(a=47;a>0;a--);
}
void delay400ms(void) //误差 0us
{
unsigned char a1,b1,c1;
for(c1=29;c1>0;c1--)
for(b1=70;b1>0;b1--)
for(a1=97;a1>0;a1--);
}
void fmq()
{unsigned long s,z,w;
for(w=0;w<3;w++)
{
for(z=0;z<3000;z++)
{
for(s=0;s<3;s++)
{P10=~P10;}
}
delay400ms();
}
}
