‘壹’ 单片机如何实现一个按键切换两个程序
#include<reg51.h>
sbitkey=P1^0;
bitflag=0;
voidA(void)
{
.....
}
voidB(void)
{
......
}
main()
{
while(1)
{
if(key==0)
{
while(key==0);
flag=~flag;
}
if(flag)B();
elseA();
}
}
‘贰’ 51单片机最有效的按键处理程序
只有更好,没有最好。只有更有效,没有最有效。适合当前项目需要的程序就是合适的程序。针对51单片机,没有一个按键程序是包打天下的。通常的按键扫描程序大致为:
扫描按键 ==>按键去抖(如果去抖过程中按键值变化了就去抖失败,重新扫描按键) ==>得到有效键 ==》可能需要针对长按或重复按键要求做不同处理 ==>等待按键松开
‘叁’ 单片机按键短按和长按的程序
设置定时器100毫秒中断a值自家1
设置按键值位变量k
设置按键端口k1
if (!k1)按键按下
{
delay(20);去痘
if (!k1)确认按下
a=0;计时数清0 确保长按时间精准
while(!k1)按钮没释放 死循环检测按下时间
if(a>30)达到3000毫秒
k=!k按键值取反 没按前为0 长按3秒后为1 短案无效
}
‘肆’ 单片机按键触发C程序
while(1)
{
if(keyflag==1) //有按下切出死循环
break;
else continue;
}
while(1)
{
..... //用户自己的程序
}
这种方法是模拟按键按下启动真正的应用程序,触发的是自己的功能程序短。从效果上来还是可以的
‘伍’ 单片机按键程序
检测一个按键:
;--------------扫描按键------
jb p1.0,next;没按下,NEXT下一个
lcall t20ms;有,延迟20毫秒去抖
jb p1.0,next;还是没按下,下一个
jnb p1.0,$;有,等它松开
...;
...;这里写这个键的功能
next: 检下一个键,或返回
....
;---------延迟---------
t20ms:
...
ret
‘陆’ 单片机C语言按键开关程序
#include<reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
voiddelay_ms(uint);
sbitled0=P0^0;
sbitled1=P0^1;
sbitkey1=P3^2;
sbitkey2=P3^3;
voidmain()
{
uchari=0;
ucharj=0;
while(1)
{
if(key1==0)//按键1
{
delay_ms(10);
if(key1==0)
{
i++;
i=i%2;
switch(i)
{
case0:led0=1;break;//关小灯
case1:led0=0;break;//开小灯
default:break;
}
}
while(!key1);
}
if(key2==0)//按键2
{
delay_ms(10);
if(key2==0)
{
j++;
j=j%2;
switch(j)
{
case0:led1=1;break;//关小灯
case1:led1=0;break;//开小灯
default:break;
}
}
while(!key2);
}
}
}
voiddelay_ms(uintz)//延时子程序
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
‘柒’ 51单片机中按键程序用C怎么写
用一个定时器,先赋值一个num,当num=20的时候,LED亮的时间是1s,当按下键,让num+20(12M的晶振)在定义一个a,判断a是否与num相等。这样试试呢....
‘捌’ 51单片机独立式按键程序
#include<reg52.h>
unsignedcharID;
sbitk1=P3^7;//定义按键端口
voiddelay()
{
TMOD=0x10;//定时器的工作方式
TH1=0xd8;
TL1=0xf0;
TR1=1;
while(!TF1);//这里错了,是定时器1
TF1=0;
}
voidmain()
{
while(1)
{
if(k1==0)
{
delay();//去抖动
if(k1==0)//检测按键确实按下,进行按键处理
{
ID++;
if(ID==0)
{
ID=0;
}
while(!k1);//这里错了,多余的加了==0
}
}
switch(ID)
{
case0:P1=0x3f;break;
case1:P1=0x06;break;
case2:P1=0x5b;break;
case3:P1=0x4f;break;
case4:P1=0x66;break;
case5:P1=0x6d;break;
case6:P1=0x7d;break;
case7:P1=0x07;break;
case8:P1=0x7f;break;
case9:P1=0x6f;break;
default:break;
}
}
}
‘玖’ 51单片机独立按键的程序
51单片机独立按键的程序独立按键的程序的话,这个可以从一些一些具体的方面来进行一些查看。
‘拾’ 单片机一个按键控制一个程序
你把几种方式写成几个子程序,然后主程序调用按键检测,根据检测到的键值调用对应的子函数即可