
程序運(yùn)行監(jiān)控系統(tǒng):
(1)防止程序進(jìn)入死循環(huán),。為了提高系統(tǒng)的抗干擾性,,防止程序進(jìn)入死循環(huán),,系統(tǒng)采用計數(shù)器構(gòu)成的WATCHDOG電路,。將555接成一個多諧振蕩器,,周期為t0,,將74LS93接成16進(jìn)制計數(shù)器,,當(dāng)數(shù)到第8個脈沖時,,QD端變成高電平,,單片機(jī)用P3.7輸出清零脈沖,,只要每次清零脈沖的時間間隔短于8個脈沖周期,計數(shù)器就永遠(yuǎn)計不到8,,QD端保持低電平,。當(dāng)CPU受干擾而掉入死循環(huán)時,就不能送出復(fù)位脈沖了,,計數(shù)器很快數(shù)到8,,QD端立即變?yōu)楦唠娖剑?jīng)過微分電路C2,、R3輸出一個正脈沖,,使CPU復(fù)位。該電路CPU有上電復(fù)位(C1,、R1),、人工復(fù)位(KA,、R2、R3)和WATCHDOG復(fù)位(C2,、R3)3個復(fù)位信號,。通過或門后加到RESET端,74LS93的清零信號為高電平,,為防止CPU掉人死循環(huán)前將P3.7變?yōu)楦唠娖?,使WATCHDOG失效,故在P3.7和計數(shù)器的清零端之間加一個微分隔離電路,。
(2) 顯示部分,。系統(tǒng)選用4只七段共陽LED數(shù)碼管、9015三極管和電阻等組成顯示電路,。系統(tǒng)檢測信號經(jīng)AT89C2051單片機(jī)處理后通過P1口直接驅(qū)動LED數(shù)碼管,,LED顯示已蓋章的證件數(shù)目。另外,,選用一個紅色發(fā)光二極管作為電源指示燈,。
(3)軟件設(shè)計。系統(tǒng)軟件采用匯編語言編制,,包括主程序和中斷巡回檢測子程序,、動態(tài)顯示子程序。主程序的功能是完成系統(tǒng)自檢,、系統(tǒng)初始化,。系統(tǒng)初始化包括硬件初始化和軟件初始化,后者包括對中斷的安排,、系統(tǒng)時鐘的初始化,、堆棧的設(shè)置、狀態(tài)變量的初始化等,。中斷巡回檢測程序如下圖所示,。
由于單片機(jī)系統(tǒng)工作在電磁鐵的強(qiáng)磁場附近區(qū)域,承受強(qiáng)大的干擾,,系統(tǒng)除了應(yīng)用WATCHDOG監(jiān)控系統(tǒng)外,,還采用了軟件抗干擾陷阱技術(shù),當(dāng)CPU受到干擾后,,往往將一些操作數(shù)當(dāng)作指令碼來執(zhí)行,,引起程序混亂。這時首先要盡快將程序納入正軌(執(zhí)行真正的指令系列),。為了去掉彈飛的程序自動形成的死循環(huán),,系統(tǒng)設(shè)立了軟件陷阱,將其安排在程序區(qū),、表格,、未使用的ROM區(qū),、未使用的中斷向量區(qū)。由于軟件陷阱都安排在正常程序執(zhí)行不到的區(qū)域,,故不會影響程序的執(zhí)行效率,。