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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PIC單片機捕捉模塊的程序設(shè)計

          PIC單片機捕捉模塊的程序設(shè)計

          作者: 時間:2013-03-15 來源:網(wǎng)絡(luò) 收藏
            由于本設(shè)計測試4種參數(shù),并且可以利用鍵盤選擇顯示其中的任何一種,因此編程設(shè)定S9為加1鍵、S11為減1鍵、S10為確定鍵、S12為功能鍵。

            當(dāng)按下S9鍵時,寄存器COUNTER可以從1連續(xù)或點動步進地加到4;同理按下S11鍵時,COUNTER從4減到1,并且把顯示在LED上,不同的對應(yīng)不同的測試參數(shù)。

            程序根據(jù)不同的把相應(yīng)的參數(shù)(已轉(zhuǎn)換成BCD碼)送到顯示緩沖區(qū),此時按下確定鍵,則LED上顯示出該COUNTER值對應(yīng)的測試參數(shù)。

            按下功能鍵時,LED上示出當(dāng)前的COUNTER值,又可以對其講行加減操作。從而選擇顯示不同的參數(shù),COUNTER值與其對應(yīng)的測試參數(shù)關(guān)系如下。

            · COUNTER=1,對應(yīng)測試參數(shù)為頻率。

            · COUNTER=2,對應(yīng)測試參數(shù)為周期。

            · COUNTER=3,對應(yīng)測試參數(shù)為占空比。

            · COUNTER=4,對應(yīng)測試參數(shù)為脈寬。

            程序中有5個不同的顯示任務(wù)(顯示COUNTER、頻率、周期、占空比、脈寬),如果編寫5個不同的顯示子程序,會使程序復(fù)雜化。

            本例引入一個顯示緩沖區(qū),如果沒有按下確定鍵,則把COUNTER的值送到顯示緩沖區(qū);如果按下確定鍵,則根據(jù)COUNTER的實際值把相應(yīng)的測試參數(shù)的結(jié)果送到顯示緩沖區(qū)。

            利用此方法,可以編制一個顯示程序,該程序只執(zhí)行從顯示緩沖區(qū)取數(shù)顯示的任務(wù)。是COUNTER,還是參數(shù)測試結(jié)果,只需將顯示緩沖區(qū)的內(nèi)容顯示出來即可。

            中斷服務(wù)程序中“把CCP1模塊變成捕捉相反的脈沖邊沿”的含義為:若在本次中斷以前,CCP1捕捉脈沖的上升沿,則把它改成捕捉脈沖下降沿;若在本次中斷以前,CCP1捕捉脈沖的下降沿,則把它改成捕捉脈沖的上升沿。

            實際編寫程序時,為了充分提高CPU的工作效率,可以利用等待CCP1中斷的時問進行鍵盤的消抖動延時,程序設(shè)計流程如圖1和圖2所示。

            圖1 主程序流程及中斷服務(wù)程序流程

            圖2 鍵盤服務(wù)子程序流程

            (1)首先包含必要的頭文件,定義程序用到的全局變量及宏。

           ?。?)SPI顯示初始化子程序,首先初始化SPI模塊,設(shè)置在時鐘下降沿發(fā)送數(shù)據(jù)。設(shè)置RA5引腳為輸出端口,用以輸出顯示鎖存信號。

            (3)對CCP模塊進行初始化,使其工作在捕捉方式,打開CCP1中斷,設(shè)置RC2端口為輸入口。

           ?。?)對系統(tǒng)其他部分進行初始化,包括COUNT及與鍵盤有關(guān)的寄存器的初始化,建立鍵盤掃描的初始條件。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: PIC單片機 捕捉模塊 COUNTER值

          評論


          相關(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); })();