欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機程序 怎么讓他按下去也只循環一次 觸發一次循環一次 一直觸發也只循環一次
[打印本頁]
作者:
郭龍·
時間:
2019-7-27 09:08
標題:
單片機程序 怎么讓他按下去也只循環一次 觸發一次循環一次 一直觸發也只循環一次
#include <reg52.h>
#include <intrins.h>
sbit KEY_UP=P1^3;
sbit KEY_DW=P1^4;
sbit DIR_UP=P3^2;
sbit DIR_DW=P3^3;
sbit CON_ECU=P3^4;
void DelayUs2x(unsigned char t);
void DelayMs(unsigned char t);
void Delay_ms(unsigned char t);
void main()
{
KEY_UP=1;
KEY_DW=1;
DIR_UP=0;
DIR_DW=0;
CON_ECU=1;
while(1)
{
if(KEY_UP==0)
{
Delay_ms(5);
if(KEY_UP==0)
{
CON_ECU=0;
Delay_ms(10);
DIR_UP=1;
DelayMs(10);
CON_ECU=1;
Delay_ms(10);
DIR_UP=0;
DelayMs(190);
DelayMs(190);
DelayMs(190);
DIR_DW=1;
Delay_ms(10);
DIR_DW=0;
}
continue;
}
if(KEY_DW==0)
{
DelayMs(10);
if(KEY_DW==0)
{
DIR_DW=1;
Delay_ms(10);
DIR_DW=0;
DelayMs(190);
DelayMs(190);
DelayMs(190);
DIR_UP=1;
Delay_ms(10);
DIR_UP=0;
}
continue;
}
if( KEY_UP==1)
{
{
DelayMs(10);
if( KEY_UP==1)
Delay_ms(5);
DIR_UP=0;
}
continue;
}
if(KEY_DW==1)
{
{
DelayMs(10);
if(KEY_DW==1)
Delay_ms(5);
DIR_DW=0;
}
continue;
}
}
}
void DelayUs2x(unsigned char t)
{
while(--t);
}
void DelayMs(unsigned char t)
{
while(t--)
{
DelayUs2x(245);
DelayUs2x(245);
}
}
void Delay_ms(unsigned char t)
{
unsigned char i,j,k;
for(k=0;k<t;k++)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
作者:
ecfuhgdeiuci
時間:
2019-7-27 09:35
break,讓它在按鍵按下執行完循環內的程序后跳出當前循環,這樣就只能循環一次了
一直觸發循環一次,給循環一個結束條件不就能行了嗎?
作者:
C51oo
時間:
2019-7-27 18:39
把break或者continue去掉。
現在程序判斷循環的條件是 “有鍵按下就循環”,
修改為: 檢測按鍵狀態,然后與上一次的按鍵狀態進行比較,當符合“上一次按鍵是松開,這一次是按下”時才進行循環。
作者:
suncat0504
時間:
2019-7-27 22:02
按照以下按鍵觸發處理:
按鍵按下了?
是,延遲20ms,防抖動。
按鍵按下了?
是,按鍵松開了?
是,調用對應這個按鍵的處理。
這個按鍵按下的處理邏輯是,只有按鍵被按下,并在松開后,才執行對應的處理會避免重復調用對應的處理。如果樓主學過windows系統的編程,比如VS,對于按鍵的事件處理有KeyDown,KeuUp,KeyPress,可以借用的,道理是一樣的。
作者:
760656130
時間:
2019-7-29 12:52
添加標志位 按下置1 松開清零 開關按下判斷標志位 是1則不做處理 0則處理并將標志位置1
作者:
cjm82
時間:
2019-7-29 23:04
如果不在乎死等的話,把你觸發功能的代碼,夾在兩個按鍵等待中間就行了,上面的一個如果沒按就死等,下面的一個如果一直按就死等.
void Trigger()
{
/*你要觸發的功能*/
}
void main()
{
while(1)
{
while(鍵沒有按);
Trigger();
while(鍵按下了);
}
}
如果不想死等,那就得設置些標志位,利用定時器中斷隔一段時間檢查你主程序的運行狀態.
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1