|
想要写一个按一下键数值加一的程序,但不按的时候是0,按下去数码管就全亮了,不知道错在哪。求大佬指点,程序具体如下:
#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit hc1=P2^2;
sbit hc2=P2^3;
sbit hc3=P2^4;
sbit k1=P3^1;
u16 m,a;
u8 code sz[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴数码管断码
void delay(u16 i)
{
while(i--);
}
int add() //按下按键数值加一
{
if(k1==0)
{
delay(100);
if(k1==0)
{
a++;
}
while(!k1);
}
}
void display() //使右边第一个数码管点亮
{
hc1=0;
hc2=0;
hc3=0;
}
void main()
{
while(1)
{
display();
m=add();
P0=sz[m];
}
} |
|