各位大神,大家好:用51单片机C语言,STC89c52。怎么实现一个按键,按一次
各位大神,大家好:用51单片机C语言,STC89c52。怎么实现一个按键,按一次led左流水,再按一次led右流水,再按一次全部闪烁,再按一次关,全灭。...
各位大神,大家好:用51单片机C语言,STC89c52。怎么实现一个按键,按一次led左流水,再按一次led右流水,再按一次全部闪烁,再按一次关,全灭。
展开
1个回答
展开全部
这个可以通过定时器来实现,比如当按键时间小于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)
{
#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流水子程序,再按一次了,它还在流水,等它走完了程序,才切换到下一个子程序,而不是马上切换到下一个子程序,这是什么回事?是不是一个流水子程序长了点?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |