标题:
关于单片机按键控制小灯,一个按键如何控制多个程序?
[打印本页]
作者:
坐在分头调戏鬼
时间:
2019-1-1 15:11
标题:
关于单片机按键控制小灯,一个按键如何控制多个程序?
想实现一个按键控制多个程序应该怎么办 每按下一次 更换一个程序 但是用的同一个按键
作者:
画流星
时间:
2019-1-1 16:09
可以定义一个变量,按键按下去后变量加一,然后后面写if语句,当变量为0时执行什么程序,当变量为1时执行什么程序,以此类推,这样就可以用一个按键更换程序了
作者:
微扬
时间:
2019-1-1 16:19
可以使用中断嵌套
作者:
HC6800-ES-V2.0
时间:
2019-1-1 16:25
可以嘛——用switch语句。
按键只计数,再通过switch语句选择不同的函数,就可以了。
例如:
if(k1==0)//扫描键盘k1
{
Delay10ms(1);
if(k1==0)
{
j++;
if (j>5)
{
j=0;
}
while((i<50)&&(k1==0))
{
Delay10ms(1);
i++;
}
i=0;
}
switch(j) //位选,选择点亮的数码管,
{
case(0):
ONE(); break;
case(1):
TWO(); break;
case(2):
......; break;
case(3):
......; break;
case(4):
......; break;
case(5):
......; break;
}
作者:
jll586
时间:
2019-1-1 16:40
创建标志位,一个值对应一个程序
作者:
sadwdawdasd
时间:
2019-1-1 16:59
#include <reg51.h>
#define uchar unsigned char
sbit key = P1^0;
sbit led0 = P1^1;
sbit led1 = P1^2;
uchar count = 0;
void delayms (uchar time)//延时
{
for(time; time>0; time--)
{
TMOD |= 0x01;
TH0 = 0xfc;
TL0 = 0x18;
TR0 = 1; //启动计数器0
while(TF0!=1);//计数溢出
TF0 = 0;
TR0 = 0;
}
}
void scan_key (void)
{
if (!key)
{
delayms (5);
if (!key)
{
delayms (1);
while (!key);
count++;
if (count==3)
{
count = 0;
}
}
}
}
void main (void)
{
P1 = 0xff;
while (1)
{
scan_key ();
if (count==0)
{
led0 = 1;
led1 = 1;
}
if (count==1)
{
led0 = 0;
led1 = 1;
}
if (count==2)
{
led0 = 1;
led1 = 0;
}
}
}
作者:
h124020135
时间:
2019-1-1 17:05
控制多个程序 首先程序是你自己写的 执行完一个动作倒是可以进行下一个 但是按钮就是个开关而已 所以按键切换不了程序 程序简单或复杂自己写入
作者:
xuyaqi
时间:
2019-1-1 17:25
可以设个标记,按一下标记+1,标记数不变后,执行标记数对应的程序。
作者:
25Hzzz
时间:
2019-1-1 17:50
定义一个变量,每按一次按键变量自加1,然后判断变量的值,根据变量的值跳转程序,当变量自增到一定的值就重新给变量赋值1,希望能帮到你
作者:
坐在分头调戏鬼
时间:
2019-1-3 14:41
sadwdawdasd 发表于 2019-1-1 16:59
#include
#define uchar unsigned char
sbit key = P1^0;
但是怎样才可以将程序快速的跳出延时函数呢 我想用break 但是应该怎么加呢
作者:
qazwsx12379
时间:
2019-1-3 15:36
#include<reg52.h> #define uint unsigned int #define uchar unsigned char #define LED P0 sbit S1=P1^0; 按键1 void delay(uint i) { uchar x,j; for(j=0;j<i;j++) for(x=0;x<=148;x++); } void main() { if(s1==0) { delay(2); if(s1==0) { LED=0; } } }
作者:
Zidone
时间:
2019-1-3 19:10
可以使用状态机
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1