怎么一个按键实现三功能C语言程序

怎么一个按键实现三功能C语言程序,第1张

一个按键实现三个功能,可以是点按(按键时间不超过500毫秒),双击(500毫秒内按两次),长按(超过返衡1秒)。具体可以参考马潮老师的按键长短按的程序,或者可以自己研究一下原理。

写一个定时器,每10毫秒读一次按孙吵键端口值。漏凯做如果是按下的值,则在下一个10毫秒时再检测一次按键端口值(消抖)。如果还是按下的值,则开始计数。根据技术值来判断是点按、双击还是长按。

这个可以用定此磨核时器来做,比如检查某键,按键时间超过2秒后一个变量开始累加知道键释放为止。实现森掘方法如下:

#include<reg51.h>

#define uint unsigned int

#define uchar unsigned char

uint v=0,time=0

sbit key=P1^0

void t0isr() interrupt 1

{

TH0=(65536-50000)/256

TL0=(65536-50000)%256

time++

if((key==0)&&(time>40)v++ //如果按键时间超过2秒且键未释放,变量+1

if(key==1)time=0 //如果键释放,时间游卖复位

}

main()

{

TMOD=0x01

TH0=(65536-50000)/256

TL0=(65536-50000)%256

TR0=1

ET0=1

EA=1

while(1)

}

你的程序中,else {strcpy(string1,string2)对应的语句是if (strlen(string1)>strlen(string3))

printf("the largest string is %s",string1),而没派如慎有对应到if(strlen(string1)>strlen(string2))。

当你输入a ab abc时,因为不符合if(strlen(string1)>strlen(string2)),所以程序直接挑到了if (strlen(string1)>strlen(string3)) printf("max=%s",string1),当然这个条件同样也不符合,所以程序什么也不用输出。橡脊

解决方法也很简单,在你的程序加尘敬一对括号即可。运行这个新程序就能输出结果了,改后程序如下:

#include<stdio.h>

#include<string.h>

main()

{char string1[40],string2[30],string3[49]

printf("Enter string1 and string2 string3:")

scanf("%s%s%s",string1,string2,string3)

if(strlen(string1)>strlen(string2))

{ if (strlen(string1)>strlen(string3))

printf("the largest string is %s",string1)}/*在这里加了大括号*/

else {strcpy(string1,string2)

if (strlen(string1)>strlen(string3))

printf("max=%s",string1)

else printf("the largest string is %s",string3)

}

getch()

}


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

原文地址: https://www.outofmemory.cn/yw/12259802.html

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

发表评论

登录后才能评论

评论列表(0条)

保存