单片机 我有一个倒计时99到0的C语言程序,怎么加一个开关,按下之后才开始运行减一程序呢? 求解

开关就扣可以用P1.0。.

#include<reg52.h>

char code de[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //字形码
char code dex[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //字位码
char yu[]={0,0};
int a,j,t,time_e=13;
void delays(int x) //延时程序
{
int i;
while(x--)
{
for(i=0;i<120;i++);
}
}
void main() //主程序
{
TR0=1; //开启定时器0
EA=1; //EA是开启中断,总开关
ET0=1;
TMOD=0x01; //选择定时器工作方式1
TH0=(65536-50000)/256; //设定时间为50ms
TL0=(65536-50000)%256;

while(1);
}
void gogogo() interrupt 1
{
TH0=(65536-50000)/256; //50ms定时
TL0=(65536-50000)%256;
a++;
yu[0]=time_e/10;
yu[1]=time_e%10;

for(j=0;j<2;j++)
{
P3=dex[j]; //字位
P2=de[yu[j]]; //字形
delays(1);
}
if(a==2) //1S时
{
a=0;t++;
}
if(t==10)
{t=0;time_e--;}
if(time_e==-1)
{
time_e=0;
}
}

你把减一的程序弄到主程序main的while里边,在运行while之前加一个while按键判断子程序,将按键与p1口连接,当p1.0=0时结束while。
while(1)
{
if(p1_0==0)
delay(10); 消抖
if(p1_0==0)
while(p1_0!=0)
break;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-13
在判断按键处关闭TR0=0,或可以对它取反TR0=~TR0可以达到按一次就开再按就关
相似回答