各位大神,大家好:用51单片机C语言,STC89c52。怎么实现一个按键,按一次

各位大神,大家好:用51单片机C语言,STC89c52。怎么实现一个按键,按一次led左流水,再按一次led右流水,再按一次全部闪烁,再按一次关,全灭。... 各位大神,大家好:用51单片机C语言,STC89c52。怎么实现一个按键,按一次led左流水,再按一次led右流水,再按一次全部闪烁,再按一次关,全灭。 展开
 我来答
pf...u@163.com
2017-08-30 · TA获得超过475个赞
知道答主
回答量:550
采纳率:14%
帮助的人:164万
展开全部
这个可以通过定时器来实现,比如当按键时间小于2秒时,按一次加1,当超过2秒时,没50毫秒加1实现连加功能。例程如下:
#include<reg51.h>
unsigned int a;
unsigned char times;
sbit key=P1^0;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
times++;
if(times>40)
{
追问
你好,用定时器做按键,这样可以检测到了,就是一个LED流水子程序,再按一次了,它还在流水,等它走完了程序,才切换到下一个子程序,而不是马上切换到下一个子程序,这是什么回事?是不是一个流水子程序长了点?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式