<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 51單片機在微機自動(dòng)交換系統中穩定運行的設計方法

51單片機在微機自動(dòng)交換系統中穩定運行的設計方法

作者: 時(shí)間:2011-09-06 來(lái)源:網(wǎng)絡(luò ) 收藏

  在電力線(xiàn)載波通信中,盤(pán)的功能多,邏輯性強,MCS—51在該中處理任務(wù)時(shí)的實(shí)時(shí)性尤為突出。由于該整機配置的主要服務(wù)對象是電力調度,且它的使用環(huán)境將來(lái)多為無(wú)人值守站,所以工作是否直接影響到電力線(xiàn)載波機的整機性能。針對電力通信特點(diǎn),在考慮方面我們采取了以下幾項措施。

本文引用地址:http://dyxdggzs.com/article/150260.htm

  1 設置上電延時(shí)復位電路

  1.1 為什么要進(jìn)行上電復位46

  計算機在啟動(dòng)時(shí)都要進(jìn)行復位。作為在控制領(lǐng)域中應用最廣泛的,復位處理更是中的關(guān)鍵。內部的各個(gè)功能部件均受特殊功能寄存器控制,程序直接受程序計數器指揮,寄存器的復位狀態(tài)決定了單片機內有關(guān)功能部件工作用的初始狀態(tài),而程序的正常運行就是從這個(gè)狀態(tài)開(kāi)始的。如果上電時(shí)沒(méi)有做到正確復位,就可能使CPU從不定地址開(kāi)始執行指令,系統就得不到正確的初始化,也就不能正常工作。

  1.2 復位條件

  單片機是靠外部電路復位的。上電復位步驟:

 ?。?)必須首先建立電源Vcc;

 ?。?)Vcc后(達到允許值)時(shí)鐘振蕩器起振;

 ?。?)復位腳必須在振蕩器起振后至少保持兩個(gè)機器周期復位電平。也就是說(shuō),復位腳(RST)復位電平維持時(shí)間應包括Vcc的建立時(shí)間、振蕩器起振時(shí)間和至少兩個(gè)機器周期時(shí)間。

  1.3 一般上電復位電路

  在上電時(shí),電源Vcc的建立時(shí)間應小于幾十ms,振蕩器的起振時(shí)間取決于振蕩器頻率,對于10MHz晶體,起振時(shí)間為1ms,對于1MHz晶體,起振時(shí)間一般為10ms。此時(shí)可采用一般上電復位電路(圖1)。

  

  如果對電源Vcc建立運行速度相當緩慢的系統,RC上電復位電路將不能保證系統可靠復位。假如,建立時(shí)間為1s,則RC充電曲線(xiàn)如圖2所示,此時(shí)很難使RC電路輸出正常的復位電平(隨著(zhù)RC的充電,RST腳的電位ΔVc越來(lái)越低,在電源穩定后,ΔVc的幅度不滿(mǎn)足兩個(gè)機器內復位電平的要求,RST腳就可能退出復位狀態(tài))。而且,RST腳因易受電源干擾而產(chǎn)生誤復位。

  1.4 上電延時(shí)復位電路

  雖然電力線(xiàn)載波機電源現都采用開(kāi)關(guān)工作方式,建立速度比以往的串聯(lián)式或并聯(lián)式調整電源快,但由于機器本身使用的電壓等級多,功率要求大,開(kāi)機后各種電源的建立至少還需要500ms時(shí)間才能穩定(+5V電源也不例外),所以在系統中采用一般上電復位在時(shí)間上幾乎不可能滿(mǎn)足復位要求,這是因為 MCS—51采用一般上電復位電路就要求電源至少在20ms內建立才能保證復位。這屬于硬件特性,對于克服這一時(shí)延性困難來(lái)說(shuō),我們不可能做到使所有電力電源都迅速建立(該產(chǎn)品要利用與之配套的設備電源),只有針對MCS—51自身特性在系統上采取相應措施。

  

  MCS—51硬件復位要保證在Vcc穩定、振蕩器起振后至少有兩個(gè)機器周期(24個(gè)振蕩器周期)的高電平出現在RST端,即執行內部復位。為此我們了一個(gè)上電延時(shí)電路,該電路能針對不同電源建立時(shí)間的長(cháng)短,改變R、C參數,可調整延時(shí)時(shí)間。由于采用了該電路,在無(wú)人值守站,系統不會(huì )因停電、再上電而出現“死機”造成通信中斷現象,如圖3所示。R1、R2提供比較電位(2/3Vcc),RC充電時(shí)間由R、C參數決定,R4為復原信號邊緣校正,V1二級管為頻繁上電時(shí)電容C的泄放電路,V2與Watchdog電路在邏輯上成或關(guān)系。開(kāi)機時(shí)同相端電位大于反相端電位,輸出為上升的電位(在電源建立期間),RC充電時(shí)間足夠延遲到電源穩定,當RC充電電壓大于2/3Vcc時(shí),該電路輸出“0”,至此上電復位正常完成。

  2 應用看門(mén)狗電路實(shí)現系統保護

  2.1 復位寬度設計要求

  因為MCS—51內部無(wú)Watchdog功能(8096系列單片機有),所以需在外部擴展此電路,如圖4所示。單穩電路為可再觸發(fā)電路,只要觸發(fā)脈沖(CP)正常地作周期性輸出,單穩一直處于瞬態(tài)階段,輸出低電平。通過(guò)V1嵌位,振蕩電路停振,振蕩器輸出“0”不影響RST腳,CPU處于正常工作狀態(tài),如果因某種原因CP無(wú)輸出,單穩處于穩態(tài),輸出“1”振蕩器起振,輸出方波,送至RST腳。為了保證復位,方波寬度遠大于兩機器周期,且至少應大于CP兩個(gè)周期,以保證程序有時(shí)間作Watchdog

  處理(輸出正常的觸發(fā)脈沖,使振蕩器停振,輸出“0”不影響RST腳)。

  2.2 周期性觸發(fā)脈沖軟件設計考慮

  由軟件產(chǎn)生周期性觸發(fā)信號來(lái)控制該電路工作,以確保系統正常運行。在產(chǎn)生該周期性信號時(shí)應注意以下幾點(diǎn):

 ?。?)信號不采取定時(shí)器中斷方式獲得。這基于以下考慮:在初始化后,定時(shí)中斷即開(kāi)始工作,假如由于某種信號干擾使主程序轉飛,但并未破壞定時(shí)器有關(guān)中斷控制設置,定時(shí)中斷有可能正常工作,則周期性脈沖可能輸出正常,此時(shí)Watchdog則不能使主程序恢復正常。

 ?。?)Watchdog輸出模塊放在主程序中,主程序有幾個(gè)循環(huán)體就應放入幾個(gè)Watchdog輸出模塊,以確保主程序不被破壞。

 ?。?)工作程序部分包括主程序和中斷程序,Watchdog不僅要保護主程序轉飛,而且也要保護中斷程序轉飛。保護流程如圖5所示。設高級中斷運行標志為1,次級中斷運行正常標志為2。

  如果高級中斷不能正常運行,那么無(wú)標志1,雖然次級中斷工作正常,但因無(wú)標志1,則無(wú)標志2,最終主程序因無(wú)標志2,故Watchdog無(wú)輸出,結果導致系統復位。同理,如次級中斷不能正常工作,那么標志2產(chǎn)生,最終導致系統復位;若主程序自身失效,則也無(wú)定時(shí)輸出,最終也導致系統復位,重新使系統恢復正常運行。

  3 被破壞數據的修復

  Watchdog電路只能保證系統失效后能得到復位處理,重新恢復正常工作,但這說(shuō)明以前有的工作狀態(tài)已被破壞,只是不“死機”而已。程序的失效、轉飛往往是因為有關(guān)轉移標志、數據或SFR控制字被破壞所致,不管如何好的系統,要想完全避免這些破壞是不可能的,因為多種多樣的干擾源根本無(wú)法消除,要想保護這些過(guò)程數據不被破壞,只有設法在保護方面盡可能做得更加完善些。

  3.1 特殊功能寄存器(SFR)內容的實(shí)時(shí)刷新

  一般情況下,在初始化程序中SFR已被預置好初值,它代表一定的工作方式。在正常運行后,SFR的內容一般是不變的。因為SFR內容代表特定的工作方式,該內容被破壞也就改變了原來(lái)設定的工作方式,從而使系統失常。比如,系統設置為以中斷方式工作后,就存在中斷返回問(wèn)題,在初始化程序中已設置堆棧(SP)內容,如果由于某種干擾,SP內容被改變,那么中斷返回將不能轉向預定地址,系統工作必然失常。為了盡量減少破壞的機會(huì ),我們將有關(guān)SFR放在主程序Watchdog循環(huán)輸出模塊中,以使其不斷得到刷新,程序示意圖如下:

  

  LOOP:  ·

  ·

  ·

  MOV  SP, ?。?0H

  MOV TMOD, #12H

  MOV SCON, #00H

  ANL PSW, #0E7H

  SETB TR0

  SETB TR1

  SETB IT0

  MOV IE, #8AH

  MOV IP, #02H

  ·

  ·

  ·

  LJMP LOOP

  3.2 數據區以及位區嵌套式保護

  數據RAM區的單元內容多數是運行中經(jīng)運算或經(jīng)各種處理而得到的關(guān)鍵數據,這些數據被破壞的可能性更大些,除了干擾源破壞,另外運算錯誤或處理失誤,也會(huì )造成錯誤數據。比如,要想確切地取得一個(gè)收信標志位01H的值,首先需查尋收信端是否有效,收信處理將作出判斷是否被干擾,如被干擾,則刷新標志(SETB 01H),若有效,則標志為CLR 01H,然后進(jìn)入收信處理。下面的這些處理都是以位01H作前提的,如果該位被破壞(SETB01H),那么收信處理將無(wú)法進(jìn)行,所以一旦確定進(jìn)入收信狀態(tài)后,在處理階段,要經(jīng)常重復確認使標志保持有效,即CLR01H,直到該任務(wù)完成為止。這也就是說(shuō),在完成某一具體任務(wù)時(shí),對相關(guān)的標志或數據要進(jìn)行可靠性診斷,作為實(shí)時(shí)修復,盡量減少被破壞的可能。

  4 結束語(yǔ)

  保證系統穩定運行和設計一種系統的抗干擾方式,手段多種多樣,不能局限于常規,要根據應用系統的具體狀況及干擾源的種類(lèi),采取相應措施。我們所采取的上述,經(jīng)幾年來(lái)的使用表明比較適合WCZ—X型系統,在實(shí)際應用中該產(chǎn)品的可靠性得到了很好的驗征。

  參 考 文 獻

  1 何立民.MCS—51系列單片機應用系統設計、系統配置與接口技術(shù).北京:航空航天大學(xué)出版社,1990

  2 涂時(shí)亮,張友德,陳章龍.單片MCS—51用戶(hù)手冊.上海:復旦大學(xué)出版社,1990

51單片機相關(guān)文章:51單片機教程




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>