单片机(C51)一个小程序,可以请帮忙在此程序中加入按键长按开机与长按关机功能,谢谢!!!

单片机(C51)一个小程序,可以请帮忙在此程序中加入按键长按开机与长按关机功能,谢谢!!!,第1张

sbit key_st=P3^6;

void main (void)

{

u8 flagqt=0x5a;

u16 tcnt=0;

while(tcnt<3000)

    {

    tcnt++;

    delay(1);

    if(key_st!=0)tcnt=0;

    }

i = 0;

aa = 0;

//fang1 = 1;

IO_Init();

tomd ();

tcnt=0;

while(1)

{

key_i ();

EC ();

}

if(key_st==0)

    {

    tcnt++;

    delay(1);

    if(tcnt>=3000) ((void(code )(void))0x0000)();

    }

    else tcnt=0;

}

#include<reg51h>

#define uchar unsigned char

sbit key=P1^0;

sbit close=P1^1;

uchar times=0;

void t0isr() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

times++;

if(key==1)times=0;

if(times>60)close=0;

}

main()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

ET0=1;

EA=1;

close=1;

while(1)

{

if(key==0){TR0=1;times=0;}

if(key==1)TR0=0;

}

}

短按

用电平变换中端口最好

直接if(rb0)判断就行了

长按

if(rb0)

dealy(100ms);

if(rb0)

do;

抖动,就是一个确定的延时检测时间

if(rb0)

delay(10ms);

if(rb0)

do;

就用keydown和keyup

keydown是首次按下一个键(没有释放)

keyup是释放了之后

你在keydown里写的是走路的代码(用一个条件判断)

keyup里就写停止的代码(刚才的条件为false)

大概就这样就可以搞定了

要不你这样吧

private void Form1_KeyDown(object sender, KeyEventArgs e)

{

if (eKeyCode == KeysD)

textBox1Text = "行走";

}

private void Form1_KeyUp(object sender, KeyEventArgs e)

{

textBox1Text = "停止";

}

例子而已···更复杂的话那就要另外考虑了

记得设置好Form1的属性

每种协议都是不一样的,比如是日立的协议吧,就是通常说的一种,长按时发的第一个32位是对应的地址码,命令码及其反码,但是按键一直按下时,则每隔固定时间发送的是重复码,这个重复是固定一组编码,与你按键对应的的地址和命令没有任何关系,也就是说任何长按的重复码都是一样的;

而连续按则不同,按键松开后再按,则再次发送对应地址码,命令码及其反码,不发送重复码。

程序可以根据具体的编码时序分支处理,若是连续按,则跳入一个分支,否则跳入长按处理,长按里面判断很简单,则将上一次的结果重复一次即可。

每种协议都是不一样的,比如是日立的协议吧,就是通常说的一种,长按时发的第一个32位是对应的地址码,命令码及其反码,但是按键一直按下时,则每隔固定时间发送的是重复码,这个重复是固定一组编码,与你按键对应的的地址和命令没有任何关系,也就是说任何长按的重复码都是一样的;

而连续按则不同,按键松开后再按,则再次发送对应地址码,命令码及其反码,不发送重复码。

程序可以根据具体的编码时序分支处理,若是连续按,则跳入一个分支,否则跳入长按处理,长按里面判断很简单,则将上一次的结果重复一次即可。

以上就是关于单片机(C51)一个小程序,可以请帮忙在此程序中加入按键长按开机与长按关机功能,谢谢!!!全部的内容,包括:单片机(C51)一个小程序,可以请帮忙在此程序中加入按键长按开机与长按关机功能,谢谢!!!、51单片机设计长按开关机程序、单片机大侠 帮帮我 谢谢了!单片机按键短按,长按,弃抖动,松手检测程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/zz/10083701.html

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

发表评论

登录后才能评论

评论列表(0条)

保存