注册会员
- 积分
- 187
- 威望
- 120
- 贡献
- 41
- 兑换币
- 0
- 注册时间
- 2012-7-18
- 在线时间
- 13 小时
|
1贡献
求高手指教,今天看到一个程序,是利用键盘p1.4与p1.5,按下P1.4数码管数字加1,P1.5减1.具体程序如下:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar datas[4]={1,2,0,3};
uint number=8888;
uchar key_up;
uchar key_down;
void delay(uint ms)
{uchar j;
while(ms>0)
{ms--;
for(j=1;j>0;j--);
}
}
void display(uchar *p)
{uchar i,led=0xfe;
for(i=0;i<4;i++)
{P0=table[p];
P2=led;
led=(led<<1)|0x01;
delay(1);
}
}
void process(uint i,uchar *p)
{
p[0]=i/1000;
i=i%1000;
p[1]=i/100;
i=i%100;
p[2]=i/10;
i=i%10;
p[3]=i;
}
void check(void) /*键盘消抖程序*/
{
while((P1&0x10)==0)
{key_up=1;
display(datas);
}
while((P1&0x20)==0)
{
key_down=1;
display(datas);
}
} /*看不懂啊!!!*/
void main()
{while(1)
{
process(number,datas);
display(datas);
check();
if(key_up==1)
{
if(number!=9999)
number++;
else
number=0;
key_up=0;
}
if(key_down==1)
{
if(number!=0)
number--;
else
number=9999;
key_down=0;
}
}
}
|
|