新聞中心

        EEPW首頁 > 消費電子 > MSP430的軟硬件C延時程序設計

        MSP430的軟硬件C延時程序設計

        ——
        作者:太原理工大學 賀虎 秦建敏 時間:2007-12-10 來源:單片機及嵌入式系統應用 收藏

          是超低功耗16位單片機,越來越受到電子工程師親睞并得到廣泛應用。C程序直觀,可讀性好,易于移植和維護,已被很多單片機編程人員所采用。集成開發環境(如IAR Embedded Workbench和AQ430)都集成了C編譯器和C語言級調試器C—SPY。但是C語言難以實現精確延時,這一直困擾著很多單片機程序員。筆者在實際項目開發過程中,遇到很多需要嚴格時序控制的接口器件,如單總線數字溫度傳感器DSl8820、實時時鐘芯片PCF8563(需要用普通]/o模擬12C總線時序)、三線制數字電位器AD8402、CF卡(Compact Flash Card)等都需要μs級甚至納ns級精確延時;而一些慢速設備只需要ms到s級的延時。為此,筆者提出了適合于不同延時級別需要的軟件或硬件精確延時方法,并已實際應用,效果良好,大大縮短了開發周期。

        1  硬件延時

            MSP430單片機系統程序多采用事件驅動機制,即在沒有外部事件觸發的情況下CPU休眠于低功耗模式中。當外部事件到來時,產生中斷激活CPU,進入相應的中斷服務程序(ISR)中。中斷響應程序只完成兩個任務,一是置位相應事件的標志,二是使MCU退出低功耗模式。主程序負責使MCU在低功耗模式和事件處理程序之間切換,即在主程序中設一個無限循環,系統初始化以后直接進入低功耗模式。MCU被喚醒后,判斷各標志是否置位。如果是單一標志置位,那么MCU執行相應的事件處理程序,完成后轉入低功耗模式;若是有多個標志同時置位,主程序按照事先排好的消息隊列對它們依次判別并進行處理,所有事件處理完畢以后MCU休眠,系統進入低功耗狀態(該消息隊列的順序是按照任務的重要性設定的優先級)。在這種前后臺系統中,由于主程序是無限循環,就必須關閉看門狗,與其閑置,不如用其定時器的功能作硬件延時。使用MSP430單片機看門狗定時器實現任意時長精確延時,既滿足了系統實時低功耗的要求,也彌補了使用無限循環延時的時間難確定和占用CPU時間長的缺點。通過下例,講解在同一WDT ISR中完成不同時長延時的技巧。


          #pragma vector=WD_r_VECTOR

          interrupt void WDT_Delay(void){

        //看門狗中斷服務程序

        if((DelayTime&Delay500ms)==Delay500ms){

        //判斷需要500 ms延時的標志是否置位

        static unsigned int n250MS=O;

        n250MS++;

        if(n250MS==2){    //延時250ms



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 迁安市| 富顺县| 谢通门县| 凌海市| 白山市| 张掖市| 东源县| 安龙县| 汉寿县| 陆良县| 武清区| 陈巴尔虎旗| 墨玉县| 无为县| 淄博市| 兴安县| 阳东县| 新乡市| 普兰店市| 延庆县| 永登县| 贵州省| 陇川县| 北流市| 五台县| 崇信县| 长丰县| 乐安县| 和顺县| 潍坊市| 邯郸市| 荥阳市| 策勒县| 都昌县| 万山特区| 遂昌县| 永春县| 金沙县| 自贡市| 文山县| 玉环县|