自動(dòng)化儀器儀表里的數(shù)控線路問題勘驗(yàn)
ROM的檢測ROM中固化了儀器的監(jiān)控程序、工作程序和常數(shù)表格。ROM的檢測就是要考核各存儲(chǔ)單元的代碼或常數(shù)在讀出時(shí)是否會(huì)出錯(cuò)。采用的方法是驗(yàn)證所有讀出的存儲(chǔ)單元各對(duì)應(yīng)位代碼的異或和是否正確。將用于校驗(yàn)的正確的代碼和預(yù)先與程序一起固化在ROM中。自檢時(shí),依次讀ROM的存儲(chǔ)單元。每讀一次代碼值,要與前面各項(xiàng)讀數(shù)的代碼和進(jìn)行按位相加。最后獲得的總的代碼和與標(biāo)準(zhǔn)的代碼和做比較,如一致,說明ROM正常,下面具體說明對(duì)ROM的檢測。
設(shè)datal為程序的起始地址, data2為程序的結(jié)束地址, data3為代碼校驗(yàn)和的存儲(chǔ)單元地址,儀器采用的是MCS 51系列單片機(jī),則可用下列匯編程序自診斷ROM的工作情況。
TROM: MOV DPTR, data2 PUSH DPH PUSH DPL MOV DPTR, datal CLR B LP1: CLR A MOVC A, @ A + DPTR XRL B, A POP A MOV R1, A CJNE A, DPL, LP3 POP A MOV R2, A 25CJNE A, DPH, LP2 A JM P LP4 LP2: PUSH R2 LP3: PUSH R1 INC DPTR A JM P LP1 LP4: MOV DPTR, data3 CLR A MOVC A, @ A+ DPTR XRL A, B JNZ ERR RET ERR: ERR是ROM出錯(cuò)處理程序的入口。
I/O端口的自檢I/O端口的自檢,可采用環(huán)繞技術(shù),即將輸出端口和輸入端口連接起來,給輸出口寫入測試矢量,從輸入口讀入,然后進(jìn)行比較,即可確定有無故障。以MCS 51系列芯片為例進(jìn)行說明。串行I/O的自檢M CS 51機(jī)的串行口為全雙工接口,發(fā)送和接收可以同時(shí)進(jìn)行,可將其輸出TXD和輸入RXD連接起來進(jìn)行自檢。如所示,當(dāng)多路分配器的開關(guān)位于a時(shí),RXD和TXD與原電路相接,電路處于正常工作方式。位于d時(shí), RXD與TXD互聯(lián),用于串行口自檢。位于b和c時(shí),用于并行口和總線的自檢。
串行I/O口的自檢原理圖在串行口自檢時(shí),先開放RXD,然后給TXD寫測試矢量。最后從RXD讀入數(shù)據(jù),與剛才寫入的測試矢量比較,確定有無故障。下面的程序只測試了串行口的工作方式1,工作方式2和3的測試方法類同,只需改變串行口的控制寄存器SCON的初始值即可。
STRT: MOV TMOD, 20H; T1初始化,確定串行口MOV TL1, 0E8H;傳送速率為1200波特MOV TH1, 0E8H MOV SCON, 50H;串行口設(shè)置工作方式1,允許RXD接收SETB TR1;啟動(dòng)定時(shí)器工作MOV R4, 0H MOV DPTR, MVCT LP1: MOV A, R4 MOV A, @ A + DPTR MOV SBUF, A;由TXD發(fā)送串行數(shù)據(jù)MOV R5, A LP2: JBC R I, LP3;接收寄存器SBUF滿否SJM P LP2 LP3: MOV A, SBUF;讀取由RXD接收的數(shù)據(jù)CJNE A, B, SERR INC R4 CJNE RE, 5H, LP1 RET MVCT: DB 00H, OFFH, OAAH, 55H SERR: SERR為出錯(cuò)處理程序的入口4 2并行口P 1的自檢MCS 51機(jī)的并行口有4個(gè), P 0、P 2、P 3都是專用口,只有P 1口可供用戶作并行輸入輸出口編程使用。為了測試P 1口,可以利用串行口RXD和TXD,如所示。此圖即為中多路分配器開關(guān)位于b和c時(shí)的情況。當(dāng)串行口工作方式0時(shí), RXD既可作串行輸出口使用,給外部移位寄存器輸出數(shù)據(jù),又可作串行輸入口使用,從外部移位寄存器接收數(shù)據(jù)。而TXD可為外部移位寄存器提供移位脈沖。
P 1口的自檢原理圖當(dāng)RXD作為輸出口工作時(shí),先將數(shù)據(jù)串行移入74LS164中,再由P 1口并行讀入,進(jìn)行比較。當(dāng)RXD作為輸入口工作時(shí),先將數(shù)據(jù)并行寫入P 1口,然后并行輸入74LS166中,再串行地移入RXD中進(jìn)行比較,便可以確定串行口在方式0時(shí)是否工作正常,或者P 1口并行輸入輸出功能是否正常�?偩的自檢若RAM和ROM的自檢能順利進(jìn)行,則可以確定地址總線和數(shù)據(jù)總線工作正常。但當(dāng)ROM和RAM的自檢同時(shí)有毛病,則可能是總線有問題。中國糧油儀器網(wǎng) http://www.pfyin.com/