單片機(jī)應(yīng)用中的幾種軟件抗干擾方法:在單片機(jī)應(yīng)用系統(tǒng)中,軟件的可靠性是最重要的指標(biāo)之一。它要求:1. 運(yùn)行參數(shù)環(huán)境發(fā)生變化時(shí)(如溫度漂移等),軟件都能可靠運(yùn)行并給出正確結(jié)果,即軟件具有自適應(yīng)性;2. 工業(yè)環(huán)境極其惡劣,干擾嚴(yán)重,軟件必須保證在嚴(yán)重干擾條件下也能可靠運(yùn)行。
軟件抗干擾是當(dāng)系統(tǒng)受干擾后使系統(tǒng)恢復(fù)正常運(yùn)行,或輸入信號(hào)受干擾后去偽求真的一種輔助方法。軟件抗干擾是被動(dòng)措施,硬件抗干擾是主動(dòng)措施。由于軟件設(shè)計(jì)靈活性、節(jié)省硬件資源,所以軟件抗干擾技術(shù)越來(lái)越受到人們的重視。
一、指令冗余法
單片機(jī)操作時(shí)序完全由程序計(jì)數(shù)器PC控制,一旦PC因干擾出現(xiàn)錯(cuò)誤,程序便脫離正常軌道,出現(xiàn)“亂飛”、改變操作數(shù)數(shù)值以及將操作數(shù)誤認(rèn)為操作碼等。為了使“亂飛”程序迅速納入正軌,應(yīng)該多用單字節(jié)指令,并在關(guān)鍵地方插入一些空操作指令NOP或?qū)⒂行巫止?jié)指令重寫(xiě),這就叫做指令冗余。
1. NOP指令的使用。 在雙字節(jié)指令或三字節(jié)指令之后插入兩條NOP指令,可保證其后的指令不被拆散。在對(duì)程序流向起決定作用的指令(如RET、ACALL、LJMP、JZ、JNZ、JC、JNC、DJNZ等)和對(duì)系統(tǒng)狀態(tài)起決定作用的指令(如SETB、EA等)之前插入兩條NOP指令,使“亂飛”程序迅速納入正軌。
2. 重要指令冗余。 在對(duì)程序流向起決定作用的指令(如RET、ACALL、LCALL、LJMP、JZ、JNZ、JC、JNC等)和某些對(duì)系統(tǒng)狀態(tài)起決定作用的指令(如SETB、EA等)的后面可重復(fù)寫(xiě)這些指令,以確保這些指令的正確執(zhí)行。采用冗余法使PC納入正軌的條件是:跑飛的PC必須指向程序運(yùn)行區(qū),并且必須執(zhí)行到冗余指令。