<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 探索80C51的三種非常規(guī)的復(fù)位技術(shù)

    • 相關(guān)推薦

    探索80C51的三種非常規(guī)的復(fù)位技術(shù)

    探索80C51的三種非常規(guī)的復(fù)位技術(shù) 標(biāo)準(zhǔn)80C51片內(nèi)現(xiàn)有的復(fù)位邏輯比較簡單,只有通過一條復(fù)位引腳RST進(jìn)行外部擴(kuò)展。技術(shù)手冊中給出了上電復(fù)位(POR,power on reset)和人工復(fù)位(MRST,manual reset)電路的接線方法,借助于一只專用外圍芯片,如MAX813L或DSl323等,來擴(kuò)充欠壓復(fù)位(LVR,low voltage reset)和看門狗復(fù)位(WDR,watch dog timerreset)也有文章介紹。
    本文將介紹三種非常規(guī)擴(kuò)展復(fù)位方式軟件復(fù)位(SWR,software reset)、軟硬件復(fù)位(SHR,software andhardware reset)和非法地址復(fù)位(IAR,illegal address reset)。

    軟件陷阱技術(shù)及其改良方法

    軟件陷阱(software trap)是一種捕捉程序“跑飛”的編程方法。通常可以在程序中設(shè)置軟件陷阱,引導(dǎo)程序失控的單片機(jī)跳轉(zhuǎn)到一個(gè)指定的地址去執(zhí)行,最終回復(fù)到正常軌道上來。軟件陷阱可以設(shè)置在用戶程序的空隙處或者轉(zhuǎn)移指令之后,還可以利用一系列的陷阱指令來填充程序存儲器的空白區(qū)。實(shí)現(xiàn)軟件陷阱功能的指令是一個(gè)“5字節(jié)指令串”,通常包含2條單字節(jié)NOP指令和1條3字節(jié)跳轉(zhuǎn)指令。
    NOP ;利用空操作指令
    NOP ;來增加捕捉有效性
    LJMP SWRST;無條件跳轉(zhuǎn)到指定地址去
    其中“SWRST”可以是一段“軟件復(fù)位程序”的入口地址標(biāo)號,也可以是復(fù)位矢量“0000H”,即主程序入口地址。
    如果S W R S T等于復(fù)位矢量0000H,則會把捕捉到的跑飛程序引導(dǎo)到初始化程序入口地址去執(zhí)行,從而達(dá)到回復(fù)到正常軌道的目的。這種處理方法只適合中斷功能沒有被啟用的場合。可以設(shè)想,假如是在(低級或高級)中斷服務(wù)程序中跑飛的,這時(shí)即使把程序拉回到起點(diǎn),而中斷激活觸發(fā)器不能夠被清除,會影響以后的中斷請求無法被CPU響應(yīng)。
    如果SWRST等于“軟件復(fù)位程序”的入口地址,則會引發(fā)一次“軟件復(fù)位”。關(guān)于軟件復(fù)位程序的設(shè)計(jì)方法,隨后介紹。
    總之,這種方法的指導(dǎo)思想是指,把未使用的ROM空間用跳轉(zhuǎn)引導(dǎo)指令填滿,作為軟件“陷阱”,以捕獲“飛掉”的程序,并強(qiáng)行將捕獲到的跑飛程序引向一個(gè)特定的地址,在那里由一段專門處理錯(cuò)誤的程序進(jìn)行處理,以恢復(fù)系統(tǒng)的正常運(yùn)行。為提高跑飛程序的捕獲率,通常還要在引導(dǎo)指令之前放置上幾條空操作指令NOP。理由是,8051的指令編碼采用的是不等長方式,長度分別為1~3字節(jié),而程序跑飛又是通過非法隨機(jī)改變PC值形成的。假若跑飛后的PC值落到3字節(jié)指令LJMP的中間,就會把操作數(shù)當(dāng)作操作碼來執(zhí)行,將會產(chǎn)生不可預(yù)知的結(jié)果。為了提高捕捉的有效性,就在LJMP指令之前至少填充2條單字節(jié)的NOP指令。
    如果把“5字節(jié)指令串”改換成如下作者新設(shè)計(jì)的“4字節(jié)指令串”,陷阱指令將會更加有效。理由是,該指令對應(yīng)的目標(biāo)碼為“00 20 00 20H”,這段碼無論重復(fù)多少次都是等同的。另外,應(yīng)該在程序存儲器0020H開始的3字節(jié)中再放置一條跳轉(zhuǎn)到“軟件復(fù)位程序”真正入口的中轉(zhuǎn)指令LJMP SWRST。經(jīng)過核查,-0020H~0022H字節(jié)恰好位于定時(shí)器T1中斷矢量區(qū)尾部和串口中斷矢量之前。
    SWRST0 EQU 0020H:定義“軟件復(fù)位程序”的間接入口地址為“0020H”
    NOP ;填充一條單字節(jié)的空操作指令,機(jī)器碼是“00H”
    LJMP SWRST0 ;無條件跳轉(zhuǎn)到指定地址去。對應(yīng)的機(jī)器碼是“20 00 20H”

    軟件復(fù)位技術(shù)

    軟件復(fù)位是一種新技術(shù),目前有越來越多的新型單片機(jī)配備了該功能。例如Philips公司的P 87LPC 700和P89LPC900系列、TI—BB公司的MSCl 200系列和SunPlus公司的SPMC65系列等,內(nèi)部都設(shè)計(jì)了專門用于實(shí)現(xiàn)軟件復(fù)位的控制寄存器或者控制位。
    軟件復(fù)位是在利用軟件陷阱技術(shù)或軟件看門狗技術(shù)時(shí),必需配套實(shí)施的一項(xiàng)后續(xù)處理工作。所謂“軟件復(fù)位”是一種由用戶軟件控制的復(fù)位活動(dòng),就是利用一系列指令來模擬硬件復(fù)位所實(shí)現(xiàn)的各種操作內(nèi)容,并且重新從頭開始執(zhí)行用戶程序。
    其中的操作內(nèi)容應(yīng)該包含:(1)對于標(biāo)準(zhǔn)80C51的21個(gè)特殊功能寄存器SFR的復(fù)位操作,利用MOV指令很容易實(shí)現(xiàn)。全部復(fù)位可能不是必需的,只管那些在用戶程序中用到的SFR即可,可以由用戶自己定制。(2)對于無統(tǒng)一編址的程序計(jì)時(shí)器PC的復(fù)位,利用一條跳轉(zhuǎn)指令即可。(3)中斷激活觸發(fā)器的復(fù)位既容易被人們忽略,也不容易實(shí)現(xiàn)。理由是它們對于用戶程序是不可見的,無法直接讀寫其內(nèi)容。有的編程人員采用LJMP 0000H(機(jī)器碼為20 0000H)作為軟件陷阱,認(rèn)為直接跳轉(zhuǎn)到復(fù)位矢量就完成了軟件復(fù)位,就是這類失誤案例的典型代表。
    清除中斷激活觸發(fā)器有何必要呢?程序的跑飛是隨機(jī)發(fā)生的,其起飛點(diǎn)完全可能發(fā)生在低級或高級中斷服務(wù)子程序中,這時(shí)的中斷激活觸發(fā)器已經(jīng)被置位。如果在程序回復(fù)之后沒有及時(shí)清除它們,將阻止以后出現(xiàn)的所有的同級或低級中斷請求。

    中斷激活觸發(fā)器包含高權(quán)組和低權(quán)組兩個(gè)觸發(fā)器,電路組成如圖1所示,該圖是根據(jù)作者的理解和經(jīng)驗(yàn)繪制的。電路中包括1個(gè)邏輯或門G1、兩個(gè)S-R觸發(fā)器FFl和FF2。當(dāng)CPU響應(yīng)低級中斷請求之后,FFl被置位,其Q=0,封鎖“低權(quán)組”不再受理新的低級中斷請求;當(dāng)CPU響應(yīng)高級中斷請求之后,因?yàn)镚1的作用而使FFl和FF2同時(shí)被置位,FFI的Q=0封鎖“低權(quán)組”,FF2的Q;0封鎖“高權(quán)組”,不再受理新的高級和低級中斷請求。
    如何設(shè)計(jì)“軟件復(fù)位程序”呢?其編寫方法如下。
    SWRST: ;定義軟件復(fù)位程序的實(shí)際入口地址
    CLR EA ;首先關(guān)閉中斷源總使能位
    SETB FO ;設(shè)置一個(gè)軟件復(fù)位標(biāo)志位

    MOV PO,#0FFH;設(shè)定通用端口PO為高阻輸入狀態(tài)
    MOV P1,#0FFH;設(shè)定通用端口P1為高阻輸入狀態(tài)
    MOV P2,#0FFH;設(shè)定通用端口P2為高阻輸入狀態(tài)
    MOV P3,#0FFH, 設(shè)定通用端口P3為高阻輸入狀態(tài)
    MOV PSW,#00H;設(shè)定程序狀態(tài)字寄存器為原始值
    ……

    下一頁

    【探索80C51的三種非常規(guī)的復(fù)位技術(shù)】相關(guān)文章:

    探索現(xiàn)代汽車涂裝技術(shù)03-19

    關(guān)于現(xiàn)代教育技術(shù)的探索與實(shí)踐03-20

    教育技術(shù)裝備的實(shí)踐探索論文05-02

    探索高層建筑沉降觀測技術(shù)的應(yīng)用03-18

    微課在信息技術(shù)教學(xué)中的應(yīng)用探索12-03

    機(jī)電一體化技術(shù)的發(fā)展探索11-16

    運(yùn)用信息技術(shù)探索審計(jì)治理的科學(xué)化03-23

    試論信息技術(shù)課網(wǎng)絡(luò)教學(xué)模式的探索03-16

    探析《電工電子技術(shù)》課程教學(xué)探索和實(shí)踐03-03

    主站蜘蛛池模板: 国产亚洲精品精品国产亚洲综合| 日韩精品成人a在线观看| 黄床大片免费30分钟国产精品| 国产成人精品无码免费看| 无码国模国产在线无码精品国产自在久国产| 国产精品免费精品自在线观看| 在线观看国产精品日韩av| 国产久爱免费精品视频| 精品久久久久久久久中文字幕| 午夜精品乱人伦小说区| 青娱乐国产精品视频| 国产精品区AV一区二区| 欧美精品免费观看二区| 国产在线精品无码二区| 无码国产精品一区二区免费模式| 久久久久亚洲精品无码网址 | 99re6在线精品免费观看| 亚洲综合av永久无码精品一区二区| 精品国产一区二区三区在线观看| 97久久精品人人做人人爽| 久久国产精品99久久久久久老狼| 亚洲αv在线精品糸列| 成人精品一区二区三区免费看 | 999国产精品色在线播放| 精品国产福利久久久| 国产精品亚韩精品无码a在线| 亚洲AV无码国产精品色午友在线| 一区二区日韩国产精品| 在线亚洲精品福利网址导航| 亚洲精品无码AV中文字幕电影网站| 久久精品99无色码中文字幕| 精品视频久久久久| 久久亚洲国产成人精品无码区| 精品中文高清欧美| 欧美XXXX黑人又粗又长精品| 久久综合精品国产一区二区三区| 无码国内精品久久人妻麻豆按摩| 亚洲视频在线精品| 奇米影视7777久久精品| 国产麻豆精品一区二区三区v视界| 国产女主播精品大秀系列|