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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于MSP430的低功耗儀表系統(tǒng)設計

          基于MSP430的低功耗儀表系統(tǒng)設計

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

          3 低部分

            單片機應用和一般的程序不同,既有各種計算程序、控制策略程序的設計,還要結合具體的硬件電路進行各種輸入輸出程序設計。本采用模塊化結構設計,將各功能模塊設計為獨立的編程調試程序塊,這樣有利于今后實現(xiàn)功能擴展,而且便于調試和連接,更有利于程序的移植和修改。

            本系統(tǒng)的軟件設計使用的是適用于系列的C語言,這種C語言與標準C語言兼容程度很高。開發(fā)平臺使用的是IAR公司專為系列提供的集成調試環(huán)境Embedded Workbench和C語言調試器C-SPY。

            3.1 時間觸發(fā)的混合式調度介紹

            調度器就像是一個簡單的操作系統(tǒng),可以周期的或單次的調用任務。實際上,調度器就是一個許多不同任務共享的定時中斷服務程序,只要初始化一個定時器,就可以調度多個任務。任務的特征分為4部分:任務函數(shù)的指針,延遲時間,任務執(zhí)行周期和任務可否執(zhí)行標記。調度器通過定時器產生一定的時間間隔,根據(jù)任務可否執(zhí)行標記來判斷并調度要執(zhí)行的任務。

            本通用智能終端中,任務AD轉換、開關量采集、LCD顯示、輸出控制等是合作式任務,按照延遲時間和周期來順序執(zhí)行;鍵盤掃描分解成短任務處理;485通信為中斷式任務,執(zhí)行上位機命令任務,實際上大部分命令任務都是根據(jù)命令要求,改變某些變量或寄存器的內容,執(zhí)行速度很快,可以每來一次命令執(zhí)行一次,屬于單次任務。由系統(tǒng)任務和調度器設計原則,給出調度器任務的屬性列表如表2所示。

            表2 任務屬性表

          3.2 主程序設計

            本設計采用時間觸發(fā)的混合式調度器系統(tǒng),調度器根據(jù)任務的執(zhí)行周期和延遲時間來順序調度并執(zhí)行任務,保證一次只處理一個事件,降低了CPU的負荷,減少了存儲器的使用量,從而增強了系統(tǒng)的可靠性和擴展性,并使得系統(tǒng)低設計易于實現(xiàn)。系統(tǒng)主程序主要包括系統(tǒng)初始化子程序和任務函數(shù)調度子程序。系統(tǒng)主程序流程如圖5所示

          4 總結

            通過對影響系統(tǒng)的各種因素的分析,確定了要從硬件選擇和軟件設計兩方面同時考慮、軟硬結合來最大限度的降。本文研究的多用途系統(tǒng), 可作為我國的水表、燃氣表、熱量表、電能表以及各種檢測儀、監(jiān)控器等急需電子智能化的實現(xiàn)方案。

            本文作者創(chuàng)新點: 本文以降作為主要目標,所研究的多用途低功耗系統(tǒng),是便攜式、低功耗設備的一個比較具體的通用型實現(xiàn)方案。只要根據(jù)實際需要加上相應的傳感器和修改一下具體軟件,該系統(tǒng)能夠方便的應用于需要電池供電的多種檢測設備。


          電能表相關文章:電能表原理

          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();