找大佬帮忙弄个程序,程序实在学艺不精🥺

LED数码管秒表,两位LED数码管显示,十位数码管接单片机P0口,个位数码管接单片机P2口,计时单位为1秒,要求从0秒开始计时,计时到10秒后倒计时,返回0秒

#include<reg51.h>

unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管段码表

unsigned char second;//秒倒计时变量

unsigned char t0n;//T0中断次数计数

sbit k1=P3^2;//定义按键

void delay()

{

unsigned int j;

for(j=400;j>0;j--);

}

void display()//显示子程序

{

P2=0x01;

P0=tab[second/10];//显示十位

delay();

P2=0x02;

P0=tab[second%10];//显示个位

delay();

}

void main()

{

TMOD=0x01;//用T0定时,中断方式

TH0 =0x3C;//晶振12M,定时50ms

TL0 =0xB0;

IE  =0x82;

while(1)

{

display();//调显示子程序

if(k1==0)//按键按下

{

if(TR0==0)

{

TR0=1;//启动开始计时

second=10;//从10秒开始倒计时

}

else

TR0=0;

while(k1==0);//等待按键释放

}

}

}

//T0中断程序

void T0_int() interrupt 1

{

TH0 =0x3C;

TL0 =0xB0;

t0n++;

if(t0n>=20)//1秒到

{

t0n=0;

second--;//减1秒

if(second==0)TR0=0;

}

}

这是我之前做的倒计时,核心思路差不多,你可以参考一下

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632