keil中按钮程序怎么写?

keil中按钮程序怎么写?,第1张

我一般这样写,松手有效。

函数里加这一段按键程序

while(1)

{

while(!KEY) //开头要定义按键接哪个IO口

{

delay(10)//延时10ms防抖

if(KEY)

这里写松手后要执行的程序

}

}

这种程序一般不让贴。

给你一部分。

头文件:

#include <Windows.h>

#include <Winuser.h>

#include <stdio.h>

#include <stdlib.h>

#include <memory.h>

#include <string.h>

#include <time.h>

时间等待函数:

void wait ( int m_seconds )

{ clock_t endwait

endwait = clock () + m_seconds

while (clock() <endwait) {}

}

调用参数单位是毫秒。

毫秒数用随机数:

double r

srand((unsigned)time(NULL))// 种子

r = ( (double)rand() / ((double)(RAND_MAX)+(double)(1)) )

r = r * 2000.0// 0-2000 毫秒

按键:

例如按cmd和回车

keybd_event(VkKeyScan('C'),1,0,0) keybd_event(VkKeyScan('C'),1,KEYEVENTF_KEYUP,0)

keybd_event(VkKeyScan('M'),1,0,0) keybd_event(VkKeyScan('M'),1,KEYEVENTF_KEYUP,0)

keybd_event(VkKeyScan('D'),1,0,0) keybd_event(VkKeyScan('D'),1,KEYEVENTF_KEYUP,0)

keybd_event(VK_RETURN,1,0,0)

keybd_event(VK_RETURN,1,KEYEVENTF_KEYUP,0)

------

运气好你看到上面的语句。

这个太简单了吧,记住写程序定时器要一直跑,建立一个时基,像个手表的时间一样要一直跑,即有time_125us,time_1ms,time_100ms,time_1s,time_1min,time_1hour等时间变量建立时基一直走。其它程序可以分时扫描也可以轮流扫描,不能停留死等,像电脑里的程序一样表面看起来各个程序是一直运行的,即各个程序中不能有delay_1ms之类的函数,如果要定时应该申请一个变量在时基里处理,如等待2s可以这么写

if(step==0){

time=2,time_100ms=0,step=1}

if((step==1)&&(time==0)){//2s到

//等待2s后要执行的代码

}

在时基时每1s把time减1,减到0为止即if(time)time--

对按键的写法一般用采集的方法如按键后IO为低

if(!IO){

//低电平,有按键

key_time++

if((key_time==100)&&(!key_flag)){

//已经赋值了就不再赋值了

key_flag=1

key_flag_bak=1

}

else{

//无按键

key_time=0

key_flag_bak=0

}

if(key_flag&&(!key_flag_bak)){

//有按键并松开,即松开响应

time=2

//亮2s

key_flag=0//把键值清0

}

if(time){

LED_ON//灯亮

}

else

LED_OFF


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8063842.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存