/*
想达到的效果是,按一次按键k,数码管显示0到8随着按键增加,就是按一次按键,数码管加1,按下按键
led-p2亮,松开熄灭 大神帮忙看看为啥效果达不到,按键1没反应,换了端口按键也一样*/
#include<reg52.h> //头文件
#define led P0 //led代替P0
#define uint unsigned int
#define uchar unsigned char
void ys(uint p); //延时函数
sbit a=P2^2;
sbit b=P2^3; //138译码器控制端口abc
sbit c=P2^4;
sbit k=P3^3; //独立按键
sbit p2=P2^6; //led发光二极管
uint z=0;
uint h=0;
uchar e[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void main()
{
a=0;
b=0; //138译码器端口全置0,控制数码器位
c=0;
while(1)
{
if(k==0) //判断按键是否按下
{
ys(5); //延时消抖
if(k==0); //再次判断
{
p2=0; //led亮
h++; //数组下标自增
if(h==8) //判断数组下标是否为8
h=0; //到了8,就置0
led=e[h]; //给数码管位选赋值
while(!k); //判断按键是否松手
ys(5); //延时
while(!k); //再次判断是否松手
}
}
else
{
p2=1; //led熄灭
}
}
}
void ys(uint p)
{
uint i,f;
for(i=p;i>0;i--)
for(f=110;f>0;f--);
} |