pic c语言 按键只加1,按键按下加1,一直按着不变着是为什么?

*************由按键传送参数程序*****************

if(!G_Key2)

{

delay_ms(10);

while(!G_Key2)

{

SendMessage(WM_KEYDOWN,KEY_2);

}

if(!G_Key2)                        // 扫描到的按键能这么传参数吗????

{

SendMessage(WM_KEYPRESS,KEY_2);

}

}

**************处理接收到的参数***********************

if (wMsg==WM_KEYDOWN)

{

if(WParam==KEY_1)

G_Key_Flag++;

if(G_Key_Flag==6)

{

G_Key_Flag=0;

}

{

SwitchMode();

}

if(WParam==KEY_2)

{

AddValue();

}

}

else if (wMsg==WM_KEYPRESS)

{

{

SwitchMode();

}

{

AddValue();

}

}

}

**************这是最终执行按键程序****************************

void AddValue()

{

if(G_Key_Flag==0|G_Key_Flag==1)

G_Counter1++;

if(G_Counter1==512)

{

G_Counter1=1;

}

if(G_Key_Flag==2|G_Key_Flag==3)

G_Counter2++;

if(G_Counter2==100)

{

G_Counter2=1;

}

if(G_Key_Flag==4)

G_Counter3++;

if(G_Counter3==100)

{

G_Counter3=1;

}

}

按键按下加1,一直按着不变着是为什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用C语言编写的示例代码,实现了一个基于PIC单片机的按键控制LED闪烁的功能: ```c #include <pic.h> // 定义常量 #define LED_PIN RB0 #define KEY_PIN RB1 // 延时函数,单位为毫秒 void delay(unsigned int ms) { unsigned int i, j; for(i = 0; i < ms; i++) for(j = 0; j < 120; j++); } // LED闪烁函数,每隔1秒闪烁一次 void blink() { LED_PIN = 1; // LED亮 delay(1000); // 延时1秒 LED_PIN = 0; // LED灭 delay(1000); // 延时1秒 } void main() { TRISB1 = 1; // 配置KEY_PIN为输入 TRISB0 = 0; // 配置LED_PIN为输出 while(1) { if(KEY_PIN == 0) // 检测按键是否按下 { blink(); // 执行LED闪烁函数 while(KEY_PIN == 0); // 等待按键松开 } } } ``` 在这个示例代码中,我们定义了两个常量:LED_PIN表示LED灯的控制引脚,KEY_PIN表示按键的输入引脚。我们通过配置TRISB1为1,将KEY_PIN设置为输入,配置TRISB0为0,将LED_PIN设置为输出。 在主函数中,我们使用一个while循环,不停地检测按键是否按下。当KEY_PIN等于0时,说明按键被按下,我们就调用blink函数来执行LED闪烁的操作。在blink函数中,我们先让LED_PIN变为1,使LED灯亮起来,然后延时1秒钟,再让LED_PIN变为0,使LED灯熄灭。最后再延时1秒钟,等待下一次闪烁。这样就能实现按键按下后,LED灯每隔1秒钟闪烁一次的功能。 需要注意的是,在检测按键是否按下时,我们使用了一个while循环,等待按键松开。这是为了避免按键的抖动干扰,确保只有当按键真正被按下时才执行闪烁操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值