找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2652|回復(fù): 1
收起左側(cè)

用2ms定時(shí)器處理按鍵消隱問題

[復(fù)制鏈接]
ID:138343 發(fā)表于 2016-9-27 14:55 | 顯示全部樓層 |閱讀模式
使用stc15w404as單片機(jī),定時(shí)器2做中斷源,定時(shí)器測(cè)試過確定有效。

定時(shí)器中斷處理,定時(shí)器間隔2ms
void timer2_int (void) interrupt 12
{
    static unsigned char keybuf = 0xFF;
    keybuf = (keybuf << 1) | key;
    if (keybuf == 0x00)
    {
        key_state = 0;
    }
    else if (keybuf == 0xff)
    {
        key_state = 1;
    }
}

在main中掃描key_state狀態(tài)
void main(void)
{
    while (1)
    {
      if (key_state != key_backup)
      {
          key_backup = key_state;
          if (key_state == 0)
              mode = !mode;
      }

       if (mode == 1)
         P21=1;
       else
         P21=0;
    }
}

按測(cè)試目的應(yīng)該是按一次就切換燈開關(guān),但不起作用,請(qǐng)大家?guī)兔纯础?br />

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:138343 發(fā)表于 2016-9-27 19:41 | 顯示全部樓層
問題已經(jīng)解決了,問題出在定時(shí)器上

由于使用stc的庫(kù)函數(shù)進(jìn)行定時(shí)器的初始化,沒有在最后置EA=1導(dǎo)致定時(shí)器中斷不會(huì)觸發(fā)。
大家如果同樣使用stc15庫(kù)進(jìn)行開發(fā)中如果一樣使用定時(shí)需要注意以下幾點(diǎn):
1、定時(shí)器的數(shù)量,如stc15w404as只有兩個(gè)定時(shí)器分別為0和2,而stc15庫(kù)時(shí)支持的定時(shí)器不止這兩個(gè),要注意,否則比如在404as上用定時(shí)器1是無論如何也沒有結(jié)果的
2、庫(kù)的示例有關(guān)定時(shí)器初始化Timer_config中沒有把EA=1幫你寫好,在函數(shù)末尾自己手動(dòng)加一下,否則會(huì)出和我一樣的問題,測(cè)試stc的示例時(shí)定時(shí)器ok,自己寫的時(shí)候沒有注意到原來示例在main里多了一句EA=1
3、關(guān)于定時(shí)器的精度,由于stc15系列內(nèi)置有晶振,通過isp軟件可以檢測(cè)到晶振的參數(shù),在設(shè)置定時(shí)器時(shí)注意自己使用的芯片內(nèi)部晶振參數(shù),如404as用的是11059200,需要手動(dòng)修改stc15庫(kù)的MAIN_Fosc定義達(dá)到高精度
4、最后說一下stc的isp軟件帶有定時(shí)器計(jì)算工具非常好用,stc的isp工具用好了就是百寶箱啊

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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