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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)