按键精灵如何设置定时按键

按键精灵如何设置定时按键,第1张

用多线程可以解决:

BeginThread "line2" ' 启动另一个线程

Rem start

x=49

While x<57

KeyPress x,1 ' 从1至8循环按

//Delay

x=x+1

EndWhile

Goto start

Sub line2

//Delay

KeyPress 57,1 ' 按9

//Delay

KeyPress 48,1 ' 按0

Delay 610^5

Gosub line2

Return ' 9和0也是循环按的,10分钟一次

键与键之间的延时你大概需要多少我不清楚,你可以自己设置一下;

方法有很多的啊,可利用中断,也可以不用,看你的硬件怎么连接的了,你的按键是自锁式还是那种微动的?你这样的用自锁的更方便,但下程序对按键无要求,我没加防抖动的延时,就是给你讲一下原理,自己应用的时候别忘记加上:

不用中断的:

设你所谓的时钟按键为key_stop,即sbit key_stop=P1^0;并且假设你的按键按下时是接地的(下同)。

时间的显示程序大体如下

void main()

{

while(key_stop==1)

{

display_time();

}

while(key_stop==0);

key_stop=1;

}

display_time();就是你的时间显示的子程序。

这是利用中断的:

假设你用T1作为计时的定时器,将按键连接在单片机的INT0引脚即P3^2上。

sbit key_stop=P3^2;

unsigned char flag_key_stop;

void init_INT0()//外部中断初始化程序

{

IT0=0;//低电平触发

EX0=1;//使能int0中断

EA=1;//使能全局中断

}

void init_T1()//T1初始化程序 就不详细列了 你肯定会的

{

····

}

void main()

{

init_INT0();

init_T1();

while(flag_key_stop==0)

{

display_time();

}

while(flag_key_stop==1);

flag_key_stop=0;

}

void INT0() interrupt 0

{

flag_key_stop=1;

}

我是直接在答案上写的,没有经过KEIL的编译,也不知道哪里会有语法错误,主要就是给你介绍这个思想。

void Key(void)//NXP1778没有用过,我就用51举例了

{

    int t; 

    if(P1 != 0xff)//按键在P0口

    {

        Delay1ms(10); //消抖,延时程序,

        if(P1 != 0xff)//确认按下

        {

            //这里还可以判断按下的是哪一个按键 

            while(1)

           {  

                Delay1ms(1);//每次延时1ms

                t++;//累积延时时间

                if(P1 == 0xff)  break;//按键松开,跳出循环

            }

            if(t > 500)  //代表一次短按,

            if(t > 5000) //一次长按,时间超过5s,  

        }

    }

}

//不足之处,还望包涵

以上就是关于按键精灵如何设置定时按键全部的内容,包括:按键精灵如何设置定时按键、单片机时钟按键长按时,如何实现时间显示继续运行、求单片机最好是NXP1778其他也可以,我参考一下定时5秒长按按键有效进入执行程序否则执行另一程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/10165914.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存