C语言如何编程让一个按键轮流点灯。按一下1灯亮,在按下1灯灭2灯亮,在按下3灯亮,1 2灯是灭,一直到8个灯

C语言如何编程让一个按键轮流点灯。按一下1灯亮,在按下1灯灭2灯亮,在按下3灯亮,12灯是灭,一直到第8个灯灭,1灯亮。我想不出如何写。请大侠指点和讲解,十分感谢,因为我... C语言如何编程让一个按键轮流点灯。按一下1灯亮,在按下1灯灭2灯亮,在按下3灯亮,1 2灯是灭,一直到第8个灯灭,1灯亮。我想不出如何写。请大侠指点和讲解,十分感谢,因为我是个新手。 展开
 我来答
百度网友6453cc3
2012-08-16 · 超过16用户采纳过TA的回答
知道答主
回答量:110
采纳率:50%
帮助的人:17.5万
展开全部
C51独立按键的识别示例程序

每按一次独立键盘的S2键,与P1口相连的一个发光二极管往下移动一位。

#include <reg52.h>

sbit BY1=P3^4; //定义按键的输入端S2键

unsigned char count; //按键计数,每按一下,count加1

unsigned char temp;
unsigned char a,b;

void delay10ms(void) //延时程序

{

unsigned char i,j;

for(i=20;i>0;i--)

for(j=248;j>0;j--);

}

key() //按键判断程序

{

if(BY1==0) //判断是否按下键盘,当单片机上电时所有IO口为//高电平,S2键一端接地另一端接P3.4,所以当键被按下时P3.4口//直接接地,此时检测P3.4肯定为低电平。

{

delay10ms(); //延时,软件去干扰

if(BY1==0) //确认按键按下

{

count++; //按键计数加1

if(count==8) //计8次重新计数

{

count=0; //将count清零

}

}

while(BY1==0);//等待按键释放,如果键未释放则一直在此等待。

}

}

move() //广告灯向下移动移动函数

{

a=temp<<count; //这三句为一个循环移位,相当于前面提到的

b=temp>>(8-count);// _crol_()函数

P1=a|b;

}

main()

{

count=0; //初始化参数设置

temp=0xfe;

P1=0xff;

P1=temp;

while(1) //永远循环,扫描判断按键是否按下

{

key(); //调用按键识别函数

move(); //调用广告灯移动函数

}

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式