51单片机c语言编程问题

#include "reg51.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit k1=P3^1;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(u16 i)
{
while(i--);
}
void keypros(void)
{
if(k1==0)
{
delay(1000);
if(k1==0)
{
P0=smgduan[1];
}
while(!k1);
}
}
void main()
{
LSA=0;
LSB=0;
LSC=0;
while(1)
{
keypros();

}

}
我的这个独立按钮可以数码管显示1但是关不掉啊!求解

是关不了,程序中只有判键按下送段码和判键抬起的语句,没有关闭数码管的语句。追问

应该怎么写啊!求教

追答

如果想按一下亮,再按一下灭可以这样:设置一个布尔型变量,初始化为1,然后在主循环中判此变量,如果为1送段码点亮,如果为0则段码送0FFH,关数码管,在循环末尾键抬起语句后,加一句取反这个变量的语句就行。

温馨提示:答案为网友推荐,仅供参考
相似回答