找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機定時器控制按鍵秒表程序 暫停之后無法進行其他操作

查看數(shù): 1593 | 評論數(shù): 2 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2022-12-8 17:38

正文摘要:

單片機程序里只定義了一個按鍵,但是用發(fā)的開發(fā)板做實物,另一個按鍵卻可以暫停秒表,暫停之后無法進行其他操作,只能按總開關(guān)復(fù)位 #include <stc15.h> #include "delay.h" sbit DS = P1^1; //串 ...

回復(fù)

ID:77589 發(fā)表于 2022-12-9 10:01
其它地方?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;
    }
}
ID:123289 發(fā)表于 2022-12-9 08:57
做一個標(biāo)記:BJ。你的計時程序依據(jù)BJ計時,BJ=1就計時,BJ=0就不計時。
這樣做暫停,只有將BJ清0,即可。不影響其它東東。而恢復(fù)計時呢?就將BJ置1。
切記:不要用按鍵直接決定計時,因為你的功力不夠,邏輯不清。用個BJ做控制,就簡單了,清晰了。

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表