久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機怎么防止一個按鍵單獨按和兩個按鍵同時按下發生沖突?
[打印本頁]
作者:
zzccll
時間:
2022-7-9 10:46
標題:
單片機怎么防止一個按鍵單獨按和兩個按鍵同時按下發生沖突?
怎么防止一個按鍵單獨按和兩個按鍵同時按下發生沖突?
單片機源程序如下:
if((A6==0)&&(A7!=0))
{
delay_ms(10);
if((A6==0)&&(A7!=0))
{
while(!A6);TNUM=0;
OLED_ShowChar(x,y,table[8*y+x/8-16]);
if(x==0)x=120;
else if(x>0)x-=8;
}
}
if((A7==0)&&(A6!=0))
{
delay_ms(10);
if((A7==0)&&(A6!=0))
{
while(!A7);TNUM=0;
OLED_ShowChar(x,y,table[8*y+x/8-16]);
x+=8;if(x>120)x=0;
}
}
if((A6==0)&&(A7==0))
{
delay_ms(10);
if((A6==0)&&(A7==0))
{
while((!A6)&&(!A7));
flag2=0;
P1|=(1<<0);
P1|=(1<<1);
P1|=(1<<4);
P1|=(1<<5);
P1|=(1<<6);
P1|=(1<<7);
OLED_Clear();
OLED_ShowChinese(20,0,0);//接
OLED_ShowChinese(44,0,1);//收
OLED_ShowChinese(68,0,4);//消
OLED_ShowChinese(93,0,5);//息
memset(table,0,50);
flag=0;
REN=1;
}
復制代碼
作者:
haiyang201
時間:
2022-7-9 13:29
參考這個,寫的很清楚
作者:
haiyang201
時間:
2022-7-9 13:29
參考這個
http://www.zg4o1577.cn/bbs/dpj-212678-1.html
作者:
yelk'
時間:
2022-7-9 14:38
為了編程方便,盡量使用同一序列的口,如果不同序列的口,那端口號也要能錯開,如用了P01,就不要用P11了。
這樣的話,才能方便計算,提高掃描效率,如果非要用,只能通過移位處理
作者:
datouyuan
時間:
2022-7-9 15:07
A7 A6
1 1 鍵值3
1 0 鍵值2
0 1 鍵值1
0 0 鍵值0
用鍵值來表示按鍵狀態更好。
unsigned char key_value_get()
{
unsigned char i=0;
if(A6) i|=1;
if(A7) i|=2;
return i;
}
{
unsigned char key_v=key_value_get();
if(key_v==2)//((A6==0)&&(A7!=0))
{
}
else if(key_v==1)
{
}
else if(key_v==0)
{
}
}
復制代碼
作者:
Hephaestus
時間:
2022-7-9 20:55
看上去A6、A7不是單片機端口,那就是掃描鍵盤了,這種鍵盤要有硬件支持(二極管隔離)才能支持兩個鍵同時按下。
作者:
lkc8210
時間:
2022-7-9 22:24
新加兩個標志位記錄有鍵按下,如A6_Flag和A7_Flag
然后放開按鍵時才檢測這兩個標志位
作者:
dwb123
時間:
2022-7-9 23:59
搞一個優先級
作者:
zzccll
時間:
2022-7-10 07:10
yelk' 發表于 2022-7-9 14:38
為了編程方便,盡量使用同一序列的口,如果不同序列的口,那端口號也要能錯開,如用了P01,就不要用P11了。 ...
和我都主題有什么關系嗎?我用的就是一個序列的接口。
作者:
zzccll
時間:
2022-7-10 07:32
感謝各位,解決了單獨按下的防抖延時弄長一點就行了。
作者:
wulin
時間:
2022-7-10 08:32
嚴格講,兩個按鍵基本不可能做到同時按下,所以判斷單鍵或組合鍵只能等松手后才能準確識別。給你一個簡單,易懂、可靠的示例參考。
#include <reg52.h>
sbit key_A = P3^0;
sbit key_B = P3^1;
unsigned char key_value;
void Timer0Init() //1毫秒@12.000MHz
{
TMOD= 0x01; //設置定時器模式
TL0 = 0x18; //設置定時初始值
TH0 = 0xFC; //設置定時初始值
TR0 = 1; //定時器0開始計時
ET0 = 1;
EA = 1;
}
void key_scan()
{
static unsigned char count_A=0,count_B=0;
static bit sign_A=0,sign_B=0;
if(!key_A||!key_B)
{
if(!key_A)
{
if(++count_A>=10 && sign_A==0)sign_A=1;
}
if(!key_B)
{
if(++count_B>=10 && sign_B==0)sign_B=1;
}
}
else//松手
{
if(sign_A && sign_B)key_value=3;
else if(!sign_A && sign_B)key_value=2;
else if(sign_A && !sign_B)key_value=1;
count_A=0;count_B=0;
sign_A=0;sign_B=0;
}
}
void main()
{
Timer0Init();
while(1)
{
switch(key_value)
{
case 1: P1=0x0f; key_value=0; break;
case 2: P1=0xf0; key_value=0; break;
case 3: P1=0x55; key_value=0; break;
}
}
}
void Timer0Interrupt(void) interrupt 1
{
TH0 = 0xFC;
TL0 = 0x18;
key_scan();
}
復制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久精品—区二区三区
|
日韩国产精品一区二区三区
|
视频二区国产
|
亚洲狠狠
|
亚洲成人福利在线观看
|
欧美日韩综合视频
|
亚洲欧美第一视频
|
日韩国产在线
|
国产福利资源在线
|
免费观看av
|
欧美日韩一区二区在线
|
欧美久久一级特黄毛片
|
在线免费观看毛片
|
亚洲精品久久久久中文字幕欢迎你
|
欧美黄在线观看
|
高清国产午夜精品久久久久久
|
精品视频一区二区三区在线观看
|
91精品一区二区三区久久久久
|
99国产精品视频免费观看一公开
|
二区三区视频
|
亚洲电影一区二区三区
|
国产成人午夜高潮毛片
|
欧美电影免费观看高清
|
一区二区高清在线观看
|
毛片一级网站
|
精品www
|
九九热国产精品视频
|
成人在线免费看
|
国产精品免费观看
|
国产视频1区
|
欧美精选一区二区
|
成人免费观看男女羞羞视频
|
日韩国产中文字幕
|
亚洲福利视频网
|
国产日韩一区二区
|
99精品国产一区二区三区
|
色播久久久
|
99re视频在线
|
日韩淫片免费看
|
亚洲精品一区二区三区蜜桃久
|
日韩免费视频一区二区
|