想用两个以上独立按键控制相应程序,如P3口为按键,P2 P1口接led,p3.0按下时,p2的led跑马,p3.1按下时p1的led跑马闪烁,松开按键停止跑马,按下执行,两按键同时按下,p1p2口的led都在跑马,请高手写段程序指点一下,我现在写出的程序可以单独按下时执行,同时按下时只执行先按下的键对应功能,不能同时执行,求高手指点,万分感谢
我试了,程序如下,只能单独执行一个功能,求大侠们帮个忙
void main()
{
int beek;
while(1)
{
P2=0x00;
beek=0xff;
LED=0;
beek=P3 ;
if(beek==0xfe)
{
paoma() ;
}
else if(beek==0xfd)
{
pwm();
}
else if(beek==0xfc)
{
paoma();
pwm();
}
else
{
stop();
}
}
}
是按键扫描,能给段程序参考下吗
追答那你的端口走马程序是不是中断处理的(或者说定时或延时程序是中断处理的)?
追问我没用中断处理,扫描,你觉得怎样定就写个看看吧,72的解答貌似不行吧,我写的和你差不多,只能执行单独的,但没试,很感谢回答,我试下
追答一定是你的按键处理程序在一个键被按下没有弹起来之前,肯本就没有响应或处理另一个按键的动作
51单片机怎样用两个以上按键同时控制相应程序的执行
回答:按键按下,给一标志位,子函数 通过识别 标志位,判断是否 执行流水。 猜测:又一个受 郭大侠荼毒的孩子!
一个51单片机如何同时响应两个以上按键输入信号
你的问题可以参考以下解决方法:扫描时先记录KEY1的状态,如果为按下则无论下次扫描到什么状态都不执行动作,如果是放开的记录为放开,再次扫描到如果为按下则执行动作。这个扫描可以同时应用于KEY2两个不相冲突。
c51单片机怎么用两个按键控制两个数码管的加减,加到99就好,求程序
1、首先先在proteus画出仿真图,方便仿真程序。2、接着来编写程序,先来写入头函数。2、根据自己在proteus画的图,定义一下管脚根据你的原理图进行编写。3、然后写一个延时函数,来调节流水灯的时间间隔延时时间自己定义。4、下图就是主函数,包括流水灯的反复循环和j流水灯的方向。5、检查没有错误,...
51单片机,怎么用矩阵键盘中的两个按键控制外部中断0和1,在按按键的时...
让 P3.7 始终为 0,然后就是按 S12 触发外部中断 0,按 S16 触发外部中断 1。
51单片机 使用两个独立按键k1,k2,实现按下一个蜂鸣器响,按下另一个蜂 ...
\/\/假设你是 按开关时为0电平 \/\/具体IO口 自己配置 \/\/简单的就可以这么写 如果要求消抖 我们再讨论while(1){ if(k1==0)beep=1; if(k2==0)beep=0;}
51单片机 2个独立按键控制一个led
\/\/先按下k3,然后按下 k1,灯亮灭交替。\/\/--- \/\/应该先检测二级开关 K1。\/\/发现 K1 按下后,再检测 K3 是不是已经在按着。if(!k1) { \/\/先检测二级开关 delay1(10); \/\/消抖 if(!k1) { while(!k1); \/\/等待松开 \/\/松开后,再检测 k3:if(!k3) { \/\/再检测总开关...
51单片机双键同时识别(长按)判断程序怎么编?
假设“1”表示键按下,那么双键同时按,肯定端口有两个“1”,只有一个键按则只有一个“1”,当然“0”表示按下的话,取反就是了。这样就好办了,将这个有效键位值赋值给累加器A,根据奇偶标志“P"的值就可以判断是单键还是双键了。
怎么解决单片机两个或多个键同时按下的情况?
解决单片机两个或多个键同时按下的情况的程序:key1_flag=0;if(key==1){ delay(500);if(key1==1&&key_flag==0){;} } key1_flag=key1;解释:1)当key1(带自锁)作为51单片机输入信号被按下时,再按key2(不带自锁)时,响应就有问题了;2)如果是先判断key1的话,加个延时,然后再...
51单片机矩阵键盘如何实现两个键同时按下的时候显示其他数字,用c语言...
用普通的按键扫描程序,当扫描到有按键按下的时候。按键键的值写入缓冲区。继续扫描直到完成。然后返回缓冲区地址就可以得到多个按键的数据了。这样只要定义16字节的缓冲区全部按键都能检测到。(一般不需要那么多6个足够)还有一种方式 是 如果只返回2个按键的话。可以这样 常规按键扫描 返回范围在0-15...
51单片机流水灯如何通过两个按键启动和停止 ,怎么停止
sbit k1=P3^6; \/\/启动按键 sbit k2=P3^7;\/\/停止按键 bit s=0; \/\/ 启停标志 char a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; \/\/LED灯的数组 void delay1s(void); \/\/延时函数 void liushuideng(); \/\/流水灯的循环 void main(){ led=~0xff;k1=1;while(1)...