<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 智能手機(jī)全鍵盤控制器及其編程

          智能手機(jī)全鍵盤控制器及其編程

          作者: 時間:2009-09-03 來源:網(wǎng)絡(luò) 收藏

          ②MAX7359初始化MAX7359初始化過程如下(假設(shè)MAX7359設(shè)置I2C地址的AD0引腳接地,將MAX7359的I2C讀/寫地址設(shè)為Ox71/0x70);
          /*MAX7359初始化開始*/
          I2C_Write(0x70,0x01,0x08); //關(guān)斷,開始初始化
          I2C_Write(0x70,0x02,0x01); //10 ms去抖,可調(diào)
          I2C_Write(0x70,0x03,0x01); //按鍵消息FIFO非空則觸發(fā)中斷
          I2C_Wirte(0x70,0x04,0); //防止錯誤觸發(fā)GPIO
          I2C_Write(0x70,0x05,0); //關(guān)閉自動重復(fù)功能
          I2C_Write(0x70,0x06,0); //關(guān)閉自動關(guān)斷功能,可根據(jù)需要打開自動關(guān)斷功能,關(guān)斷前的等待時間可設(shè)。
          I2C_Write(0x70,0x01,0x88); //啟動器件正常功能
          /*MAX7359初始化結(jié)束*/

          本文引用地址:http://www.ex-cimer.com/article/166882.htm


          3 讀取按鍵消息
          3.1 設(shè)置FIFO寄存器
          收到硬件中斷后,先通過一次寫操作設(shè)置FIFO寄存器地址:0x00。
          I2C_Write(0x70,0x00)://如果寫一次FIFO地址之后沒有對MAX7359其他控制寄存器的讀寫,則下次讀FIFO寄存器,可不用再寫FIFO地址。
          I2C_Read(0x71,字節(jié)變量);
          …… //重復(fù)讀FIFO直至讀到代表
          FIFO為空的0x3f,可以沒一個最大次數(shù),如256次,如果一次中斷后讀了256次FIFO里還有沒讀到0x3f,則軟重啟軟重啟過程如下:
          I2C_Write(0x70,0x0 1,0x08);
          I2C_Write(0x70,0x01,0x88);
          3.2 FIFO消息的處理
          處理讀到的FIFO字節(jié)變量(假設(shè)變量名為:FIFO_BYTE)后,軟件處理方法如下:
          (1)將從FIFO收到的非0x3f的字節(jié)變量FIFO_BYTE和0x3f取與(AND 0x3f),結(jié)果值為按鍵值(即0至63號鍵中某一個被按下或釋放)。
          (2)再將該FIFO_BYTE和0x40取與(AND 0x40),結(jié)果為0則說明按鍵被按下,結(jié)果非0則說明按鍵被釋放。如果硬件布線時使用了63號和62號鍵,F(xiàn)IFO_BYTE處理復(fù)雜,請軟件設(shè)計(jì)工程師參考MAX7359指南的62號和63號鍵處理方法。
          3.3 長按鍵處理
          通常需要起一個定時器,定時檢查還未收到釋放信息的按下信息都是何時發(fā)生的,如果是當(dāng)前時間減去按鍵按下的時間滿足長按鍵時間,就可向上層軟件發(fā)長按鍵消息。


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();