日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
兩種“軟件陷阱技術(shù)”的比較
兩種“軟件陷阱技術(shù)”的比較
 更新時(shí)間:2008-8-17 19:39:55  點(diǎn)擊數(shù):9
【字體: 字體顏色

    為了解決上述兩個(gè)隱患,有如下具體編程。其中,START0為系統(tǒng)上電復(fù)位完全初始化于程序入口,ER-ROR為程序跑飛后軟件陷阱回復(fù)應(yīng)進(jìn)行的系統(tǒng)部分初始化和相關(guān)資源的檢查與修復(fù)程序入口,LOOP是用戶應(yīng)用程序功能模塊入口。
    ORG0000H
    LJMP START
    ORG 0100H
    START: MOV C,PSW.5
    JC ERROR
    SETB C
    MOV PSW.5,C
    LCALL STARTO
    LJMP LOOP
    ERROR: ……
    L00P: …… ;應(yīng)用程序功能模塊
    LJMP LOOP
    ORG 0200H
    NOP
    NOP
    MOV DPTR,#ERRl
    PUSH DPL
    PUSH DPH
    RETl ;關(guān)閉第1級(jí)中斷,并跳轉(zhuǎn)到ERRl處
    CRRl: CLR A
    PUSH ACC
    PUSH ACC
    RETI ;關(guān)閉第2級(jí)中斷,軟件回復(fù)到0000H處


3 軟件陷阱在用戶應(yīng)用程序中的安排位置
    軟件陷阱程序段可以插入到主程序中或者中斷服務(wù)子程序中。根據(jù)實(shí)際應(yīng)用情況,對(duì)軟件陷阱程序段的位置安排可以有5種方式。
(1)在主程序的應(yīng)用功能模塊之間
    在單片機(jī)應(yīng)用系統(tǒng)程序設(shè)計(jì)時(shí),將軟件陷阱程序段分散地放在各應(yīng)用功能模塊之間空余的程序存儲(chǔ)器單元里。當(dāng)用戶應(yīng)用程序正常運(yùn)行時(shí),這些軟件陷阱程序段并不會(huì)執(zhí)行,但是,當(dāng)單片機(jī)應(yīng)用系統(tǒng)的CPU受干擾而使程序失控時(shí),程序計(jì)數(shù)器PC指針一旦落入這些陷阱區(qū),就可以馬上將跑飛的程序拉回到正確的軌道。這種方法的確很有效。軟件陷阱的多少一般依據(jù)用戶應(yīng)用程序大小而定,一般1KB的用戶應(yīng)用程序有2~3個(gè)軟件陷阱就可以了,具體方法如下:
    應(yīng)用功能模塊1
    軟件陷阱程序段
    應(yīng)用功能模塊2
    軟件陷阱程序段
(2)在閑置未使用的EPROM/Flash ROM空間
   
在閑置未使用的EPROM/Flash ROM空間設(shè)置軟件陷阱,即在這些閑置未使用的EPROM/Flash ROM空間寫滿代碼“0000020202H”。值得注意的是,最后兩個(gè)存儲(chǔ)單元一定要分別寫入代碼“OOH”。當(dāng)程序跑飛而進(jìn)入此區(qū)后,便會(huì)被軟件陷阱迅速拉回正常軌道。
(3)在中斷服務(wù)子程序中
    軟件看門狗(soltware watchdog)實(shí)際上是軟件陷阱的一個(gè)應(yīng)用實(shí)例。以MCS-5l系列單片機(jī)為例,在系統(tǒng)初始化時(shí)將MCU內(nèi)部的定時(shí)器/計(jì)數(shù)器T0設(shè)置為定時(shí)器,并將TO定時(shí)溢出中斷設(shè)置為高級(jí)中斷.如果系統(tǒng)采用6 MHz時(shí)鐘,可以用如下的初始化程序段使TO定時(shí)約130 ms來形成軟件看門狗:
    MOV TMOD, #01H ;將T0設(shè)置為16位定時(shí)器
    SETB ETO ;允許TO中斷
    SETB PTO ;將TO定時(shí)溢出中斷設(shè)置為高級(jí)中斷
    MOV TH0,#0;給TO賦初值,定時(shí)約130/ms
    MOV TLO,#0
    SETB TR0 ;啟動(dòng)T0開始定時(shí)
    SETB EA ;允許CPU中斷
    另外,TO定時(shí)溢出中斷服務(wù)子程序編程如下:
    INTO-PRo; MOV A,#02H
    PUSH ACC
    PUSH ACC
    RET1 ;中斷返回到0202H單元
    當(dāng)用戶應(yīng)用程序運(yùn)行正常時(shí),在小于130 ms的時(shí)間內(nèi),CPU應(yīng)該及時(shí)“喂狗”一一執(zhí)行清狗指令“MOV THO,#0”和“MOV TLO,#0”。這樣,TO就不會(huì)產(chǎn)生定時(shí)溢出,從而T0定時(shí)溢出中斷服務(wù)子程序不會(huì)被執(zhí)行。但是,當(dāng)單片機(jī)應(yīng)用系統(tǒng)的CPU受干擾而使程序失控時(shí),CPU就不會(huì)及時(shí)執(zhí)行清狗指令,以致于產(chǎn)生TO定時(shí)溢出中斷,就可以馬上將跑飛的程序拉回到正確的軌道。實(shí)現(xiàn)及時(shí)“喂狗”的具體方法是在用戶應(yīng)用程序中的適當(dāng)位置插入指令“MOV TH0,#0”和“MOV TLO,#O”。實(shí)際上,TO定時(shí)溢出中斷服務(wù)子程序就是一個(gè)軟件陷阱,一旦執(zhí)行T0定時(shí)溢出中斷服務(wù)子程序,就是把跑飛的程序強(qiáng)行拉回到0202H程序存儲(chǔ)器單元。由前面的分析可知,已經(jīng)跑飛的程序可以迅速地被納入正確的軌道。
(4)在未使用的程序存儲(chǔ)器地址空間
    對(duì)MCS-51系列單片機(jī)而言,程序計(jì)數(shù)器PC的尋址范圍是0000H~FFFFH,共64 KB;然而,在實(shí)際的單片機(jī)應(yīng)用系統(tǒng)中,一般沒有使用到64 KB的程序存儲(chǔ)器,這樣就會(huì)余下大量的程序存儲(chǔ)器地址空間。例如,系統(tǒng)中僅選用了1片2764作為程序存儲(chǔ)器,其地址空間為8 KB。那么將有56 KB程序存儲(chǔ)器地址空間被閑置。當(dāng)CPU受到干擾而使程序計(jì)數(shù)器PC指向這些被閑置的程序存儲(chǔ)器地址空間時(shí),CPU取指令得到的指令代碼為“0FFH”(這個(gè)結(jié)論可以根據(jù)圖3所示電路分析后得出)。該代碼是“MOV R7,A”指令的機(jī)器碼。顯而易見,當(dāng)單片機(jī)應(yīng)用系統(tǒng)的CPU受干擾而使程序失控時(shí),程序計(jì)數(shù)器PC指針一旦落入這些被閑置的程序存儲(chǔ)器地址空間時(shí),CPU執(zhí)行該指令不僅將錯(cuò)誤地修改寄存器R7的內(nèi)容,而且無法將跑飛的程序納入正確的軌道?梢允褂孟旅娴能浖葳寮夹g(shù)解決這個(gè)問題。
    如圖3所示,EPROM芯片2764的地址空間為0000H~lFFFH,譯碼器74LSl38的輸出Y0為其片選信號(hào),2000H~FFFFH為未使用的程序存儲(chǔ)器空間。當(dāng)程序計(jì)數(shù)器PC的值落入2000H~FFFFH空間時(shí),一定有Y0為高電乎;當(dāng)取指令操作時(shí),PSEN為低電平,則74LS244的選通信號(hào)有效,所以74LS244被選中。進(jìn)一步分析圖3所示電路可知,當(dāng)用戶應(yīng)用程序失控而程序計(jì)數(shù)器PC指向被閑置的程序存儲(chǔ)器地址空間2000H~FFFFH時(shí),總線驅(qū)動(dòng)器74LS244被選通,這時(shí)CPU通過總線讀入的指令機(jī)器碼為020202H,正好是一條轉(zhuǎn)移指令“LJMP0202H”,這樣,使程序計(jì)數(shù)器PC指向0202H程序存儲(chǔ)器單元。由前面的分析可知,已經(jīng)跑飛的程序可以迅速地被納入正確的軌道。

(5) 對(duì)外部RAM寫操作實(shí)旆監(jiān)控保護(hù)而設(shè)置軟件陷阱
    在單片機(jī)應(yīng)用系統(tǒng)的外部數(shù)據(jù)存儲(chǔ)器RAM中,一般保存了大量的預(yù)置數(shù)據(jù)和程序運(yùn)行時(shí)產(chǎn)生的中間數(shù)據(jù)。外部數(shù)據(jù)存儲(chǔ)器RAM的寫入是由“MOVX@DPTR,A”指令來完成的。當(dāng)CPU受干擾程序跑飛而誤執(zhí)行了該指令時(shí),就會(huì)改寫RAM中內(nèi)容,導(dǎo)致RAM中的重要數(shù)據(jù)丟失。為了減小這種RAM中數(shù)據(jù)丟失的可能性,應(yīng)在外部RAM寫操作之前,對(duì)寫操作進(jìn)行條件判斷。如果條件滿足才執(zhí)行寫入操作;如果條件不滿足,則將寫入操作屏蔽,并使程序落入陷阱,進(jìn)入死循環(huán)。在程序落人死循環(huán)陷阱后,便只能由其他軟、硬件抗干擾技術(shù)(如看門狗技術(shù))使系統(tǒng)退出死循環(huán)陷阱,從而使系統(tǒng)恢復(fù)正常。具體源程序代碼如下(不妨設(shè)要寫入外部RAM的內(nèi)容存放在累加器A中,要寫入數(shù)據(jù)的外部RAM單元地址存放在DPTR中):
    MOV 6EH, #55H
    MOV 6FH, #OAAH
    LCALL WRlTE
    RET
    WRITE:NOP
    CINE 6EH,#55H,TRAP
    ;寫入條件是(6EH)=#55H
    CJNE 6FH,#OAAH,TRAP且(6FH)=#OAAH
    MOVX @DPTR,A
    NOP
    M0V 6EH,#00H
    M0V 6FH,#OOH
    RET
    TRAP, SJMP TRAP ;落入死循環(huán)陷阱

4 結(jié) 論
    與第1種形式的軟件陷阱技術(shù)比較,第2種形式的軟件陷阱技術(shù)消除了兩個(gè)嚴(yán)重的隱患,因此,第2種形式的軟件陷阱技術(shù)是一種有效實(shí)用的單片機(jī)應(yīng)用系統(tǒng)抗干擾技術(shù)。本文所介紹的軟件陷阱技術(shù)已成功地使用在多個(gè)實(shí)際的單片機(jī)應(yīng)用系統(tǒng)中,保證了系統(tǒng)的可靠運(yùn)行。


 

  • 上一篇: 單片機(jī)C環(huán)境下位操作的實(shí)現(xiàn)方法
  • 下一篇: A51 4.1.2 普通段(Generic Segment)
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1