![]() |
發(fā)布時間: 2022-12-8 17:38
正文摘要:單片機程序里只定義了一個按鍵,但是用發(fā)的開發(fā)板做實物,另一個按鍵卻可以暫停秒表,暫停之后無法進行其他操作,只能按總開關(guān)復(fù)位 #include <stc15.h> #include "delay.h" sbit DS = P1^1; //串 ... |
其它地方?jīng)]去看,你實現(xiàn)按鍵功能的中斷函數(shù)應(yīng)該可以優(yōu)化一下,也不知道能不能行,但可以試試 void INT0(void) interrupt 0 { Delay10ms();//延時消抖 if(K1 == 0) { LED = 0; second = 0;//為下一次長按進行初始化 TR0 = 1; //定時器0開始計時 } else { return; } //等待按鍵釋放 while(K1 == 0) { LED = 1; } //表示長按2s if(second > 50) { AUXR &= ~0x10;//定時器2暫停計時 Send(0xff); Send(0xff); ST = 0; ST = 1; //熄屏 m = 0; n = 0; i = 0; //重新初始化 flag = 1; //長按標(biāo)志位 LED = 1; return; } i++; //記錄按鍵次數(shù) //按下一次 啟動計時 if(i == 1) { AUXR |= 0x10; //定時器2開始計時 LED = 0; } //再按一下暫停計時 if(i == 2) { AUXR &= ~0x10; //定時器2暫停計時 LED = 1; i = 0; } } |
做一個標(biāo)記:BJ。你的計時程序依據(jù)BJ計時,BJ=1就計時,BJ=0就不計時。 這樣做暫停,只有將BJ清0,即可。不影響其它東東。而恢復(fù)計時呢?就將BJ置1。 切記:不要用按鍵直接決定計時,因為你的功力不夠,邏輯不清。用個BJ做控制,就簡單了,清晰了。 |
Powered by 單片機教程網(wǎng)