




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、LOGO單片機原理單片機原理及接口技術(shù)及接口技術(shù)(高職高專版)(高職高專版) 第第9 9章章 系統(tǒng)實用程序系統(tǒng)實用程序LOGO9.1 主程序和子程序的概念主程序和子程序的概念9.2 數(shù)據(jù)采集及簡單控制程序數(shù)據(jù)采集及簡單控制程序9.3 數(shù)據(jù)處理程序數(shù)據(jù)處理程序9.4 代碼轉(zhuǎn)換程序代碼轉(zhuǎn)換程序9.5 軟件抗干擾軟件抗干擾9.6 最短程序最短程序第第9 9章章 系統(tǒng)實用程序系統(tǒng)實用程序LOGO9.1.1 主程序主程序 主程序是單片機系統(tǒng)控主程序是單片機系統(tǒng)控制程序的主框架。制程序的主框架。 是一個順序執(zhí)行的無限是一個順序執(zhí)行的無限循環(huán)的程序循環(huán)的程序 運行過程必須構(gòu)運行過程必須構(gòu)成一個圈成一個圈。9
2、.1 9.1 主程序和子程序的概念主程序和子程序的概念LOGO9.1.2 子程序及參數(shù)傳遞子程序及參數(shù)傳遞 在程序設(shè)計中,有時需反復(fù)執(zhí)在程序設(shè)計中,有時需反復(fù)執(zhí)行某段程序。通常行某段程序。通常把具有一定功把具有一定功能的公用程序段作為子程序能的公用程序段作為子程序。 在主程序需要執(zhí)行這種操作的在主程序需要執(zhí)行這種操作的地方執(zhí)行一條調(diào)用指令,轉(zhuǎn)到子地方執(zhí)行一條調(diào)用指令,轉(zhuǎn)到子程序去執(zhí)行;程序去執(zhí)行; 完成規(guī)定操作以后,再返回完成規(guī)定操作以后,再返回到原來的程序到原來的程序(主程序主程序)繼續(xù)執(zhí)行。繼續(xù)執(zhí)行。9.1 9.1 主程序和子程序的概念主程序和子程序的概念LOGO子程序調(diào)用中的參數(shù)傳遞問題
3、子程序調(diào)用中的參數(shù)傳遞問題 常用工作寄存器、累加器、地址指針寄存器或堆棧來傳遞參常用工作寄存器、累加器、地址指針寄存器或堆棧來傳遞參數(shù)。數(shù)。 1. 用工作寄存器用工作寄存器 Rn 或累加器或累加器 A 來傳遞參數(shù)來傳遞參數(shù)【例例9-1】用程序?qū)崿F(xiàn)用程序?qū)崿F(xiàn) c=a+b。 設(shè):設(shè):a、b和和c分別存于內(nèi)部分別存于內(nèi)部RAM的的DA、DB和和DC 3個單元中。個單元中。 通過兩次調(diào)用子程序查平方表,結(jié)果在主程序中相加得到。通過兩次調(diào)用子程序查平方表,結(jié)果在主程序中相加得到。 9 9.1.2.1.2 子程序及參數(shù)傳遞子程序及參數(shù)傳遞 LOGO其入口條件是:其入口條件是:(A)=待查表的數(shù);出口條件是
4、待查表的數(shù);出口條件是(A)=平方值。平方值。 主程序片段:主程序片段:STAR:MOV A,DA ;取第一操作數(shù);取第一操作數(shù) ACALL SQR ;調(diào)用查表程序;調(diào)用查表程序 MOV R1,A ;a暫存暫存R1中中 MOV A,DB ;取;取b ACALL SQR ;第;第2次調(diào)用查表程序次調(diào)用查表程序 ADD A,R1 ;a MOV DC,A ;結(jié)果存于;結(jié)果存于DC中中 SJMP ;等待;等待 子程序片段:子程序片段:SQR:INC A ;偏移量調(diào)整;偏移量調(diào)整(RET一字節(jié)一字節(jié)) MOVC A,A+PC ;查平方表;查平方表 RET TAB:DB 0,1,4,9,16 DB 25,
5、36,49,64,81 END9 9.1.2.1.2 子程序及參數(shù)傳遞子程序及參數(shù)傳遞 LOGO2. 用指針寄存器來傳遞參數(shù)用指針寄存器來傳遞參數(shù) 如果參數(shù)在片內(nèi)如果參數(shù)在片內(nèi)RAM中,則可用中,則可用 R0 或或 R1 作指針;作指針; 如參數(shù)在片外如參數(shù)在片外RAM或程序存儲器中,則可用或程序存儲器中,則可用 DPTR 作作指針。指針?!纠?-2】 將將R0和和R1指出的內(nèi)部指出的內(nèi)部RAM中兩個中兩個3字節(jié)無符號整字節(jié)無符號整數(shù)相加,結(jié)果送到由數(shù)相加,結(jié)果送到由R0指出的內(nèi)部指出的內(nèi)部RAM中。中。 9 9.1.2.1.2 子程序及參數(shù)傳遞子程序及參數(shù)傳遞 LOGO 入口時,入口時,R
6、0和和R1分別指向加數(shù)和被加數(shù)的低位字節(jié);分別指向加數(shù)和被加數(shù)的低位字節(jié); 出口時,出口時,R0指向結(jié)果的高位字節(jié)。低字節(jié)在低地址。指向結(jié)果的高位字節(jié)。低字節(jié)在低地址。 NADD: MOV R7,#3 ;3字節(jié)加法字節(jié)加法 CLR C NADD1:MOV A,R0 ;取加數(shù)低字節(jié);取加數(shù)低字節(jié) ADDC A,R1 ;取被加數(shù)低字節(jié)并加到;取被加數(shù)低字節(jié)并加到A MOV R0,A DEC R0 DEC R1 DJNZ R7,NADD1 INC R0 RET 9 9.1.2.1.2 子程序及參數(shù)傳遞子程序及參數(shù)傳遞 LOGO9.1.3 中斷服務(wù)子程序中斷服務(wù)子程序 主程序調(diào)用子程序與主程序被中斷而
7、去執(zhí)行主程序調(diào)用子程序與主程序被中斷而去執(zhí)行中斷服務(wù)子程序的過程是中斷服務(wù)子程序的過程是不同不同的:的:v 調(diào)用子程序是當(dāng)主程序運行到調(diào)用子程序是當(dāng)主程序運行到 “LCALL DIS” 指令時,指令時,先自動壓入斷點先自動壓入斷點2003H,再進(jìn)入中斷服務(wù)子程序;,再進(jìn)入中斷服務(wù)子程序;v 程序中斷是隨機的。當(dāng)主程序運行時,遇到中斷申請,則程序中斷是隨機的。當(dāng)主程序運行時,遇到中斷申請,則CPU執(zhí)行完當(dāng)前指令后,首先自動壓入斷點執(zhí)行完當(dāng)前指令后,首先自動壓入斷點1002H,然,然后轉(zhuǎn)去執(zhí)行中斷服務(wù)子程序。后轉(zhuǎn)去執(zhí)行中斷服務(wù)子程序。9.1 9.1 主程序和子程序的概念主程序和子程序的概念LOGO
8、上述兩個過程的上述兩個過程的共同點共同點都是自動壓入斷點。都是自動壓入斷點。v 當(dāng)執(zhí)行子程序到最后一條指令當(dāng)執(zhí)行子程序到最后一條指令RET時,自動彈出斷點時,自動彈出斷點2003H送送PC,返回主程序;,返回主程序;v 當(dāng)中斷服務(wù)程序執(zhí)行到最后一條指令當(dāng)中斷服務(wù)程序執(zhí)行到最后一條指令RETI 時,同樣彈時,同樣彈出斷點出斷點1002H送送PC,返回主程序。,返回主程序。v 除此之外,兩種子程序都需要保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場。除此之外,兩種子程序都需要保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場。9.1.3 9.1.3 中斷服務(wù)子程序中斷服務(wù)子程序本節(jié)結(jié)束本節(jié)結(jié)束LOGO9.2 9.2 數(shù)據(jù)采集及簡單控制程序數(shù)據(jù)采集及簡單控制
9、程序9.2.1數(shù)據(jù)數(shù)據(jù)采集采集程序程序LOGO9.2.2 航標(biāo)燈控制程序航標(biāo)燈控制程序【例例9-3】用用89C2051單片機試制一個單片機試制一個“航標(biāo)燈航標(biāo)燈”。 fOSC12 MHZ要求:要求: 黑夜定時周期循環(huán)發(fā)光黑夜定時周期循環(huán)發(fā)光,定時間隔為定時間隔為2 s,即亮即亮2 s,滅滅2 s。 當(dāng)白天到來時,航標(biāo)燈應(yīng)熄滅,停止定時器工作。當(dāng)白天到來時,航標(biāo)燈應(yīng)熄滅,停止定時器工作。 采用定時加計數(shù)的方法定時采用定時加計數(shù)的方法定時2 s。 如圖如圖9-5所示的光敏三極管來區(qū)分所示的光敏三極管來區(qū)分白天與黑夜。白天與黑夜。 黑夜時黑夜時,無光照,無光照,T1和和T2均截止,均截止,使使INT
10、00,發(fā)出中斷請求。,發(fā)出中斷請求。CPU進(jìn)進(jìn)入外部中斷處理程序入外部中斷處理程序,啟動定時器工啟動定時器工作,利用定時器中斷控制燈定時閃閃作,利用定時器中斷控制燈定時閃閃發(fā)光。用軟件查詢發(fā)光。用軟件查詢INT0引腳,只要引腳,只要INT00,定時器便繼續(xù)工作。定時器便繼續(xù)工作。 白天時白天時,日光使日光使T1導(dǎo)通導(dǎo)通,T2輸出低電輸出低電平平,INT01,立即關(guān)閉定時器,結(jié)束立即關(guān)閉定時器,結(jié)束外部中斷處理并返回到主程序。外部中斷處理并返回到主程序。9.2 9.2 數(shù)據(jù)采集及簡單控制程序數(shù)據(jù)采集及簡單控制程序LOGO設(shè)設(shè): T0定時和定時和R7 軟件計數(shù)可以延時軟件計數(shù)可以延時2 s。 R7
11、 軟件計數(shù)為軟件計數(shù)為40次;次;T0定時定時50ms,模式模式1,計數(shù)初值為計數(shù)初值為:212501000123CB0H主程序:主程序: ORG 0000H AJMP MAIN ORG 0003H AJMP WBINT ;外部中斷;外部中斷0入口地址入口地址 ORG 000BH AJMP T0INT ;T0中斷入口地址中斷入口地址 ORG 0100H MAIN: MOV SP,#30H ;設(shè)置堆棧指針;設(shè)置堆棧指針 CLR P1.7 ;設(shè)燈的初態(tài)為;設(shè)燈的初態(tài)為“滅滅” CLR IT0 ;外部中斷;外部中斷0為電平觸發(fā)方式為電平觸發(fā)方式 CLR PX0 ;外部中斷;外部中斷0為低優(yōu)先級為低優(yōu)
12、先級 SETB EX0 ;允許外部中斷;允許外部中斷0中斷中斷 SETB EA ;CPU允許中斷允許中斷 HERE: AJMP HERE ;等待外部中斷請求;等待外部中斷請求9.2.2 9.2.2 航標(biāo)燈控制程序航標(biāo)燈控制程序LOGO外部中斷外部中斷0中斷服務(wù)程序中斷服務(wù)程序(由由0003H轉(zhuǎn)來轉(zhuǎn)來): WBINT:MOV TMOD,#01H ;T0定時,模式定時,模式1 MOV TL0,#0B0H ;T0計數(shù)初值計數(shù)初值 MOV TH0,#3CH SETB PT0 ;設(shè);設(shè)T0為高優(yōu)先級中斷為高優(yōu)先級中斷 SETB TR0 ;啟動;啟動T0 SETB ET0 ;T0開中斷開中斷 MOV R7
13、, #40 ;軟件計數(shù)值;軟件計數(shù)值 HERE1:JNB P3.2,HERE1 ;查詢;查詢INT0,為低為低(黑夜黑夜),等待等待T0中斷中斷 CLR ET0 ;為高;為高(白天白天),禁止,禁止T0中斷中斷 CLR TR0 ;關(guān);關(guān)T0 CLR P1.7 ;熄燈;熄燈 RETI ;返回主程序;返回主程序定時器定時器0中斷服務(wù)程序中斷服務(wù)程序(由由000BH轉(zhuǎn)來轉(zhuǎn)來): T0INT:MOV TL0,#0B0H ;重賦;重賦T0初值初值 MOV TH0,#3CH DJNZ R7,EXIT ;軟件計數(shù)為;軟件計數(shù)為0嗎嗎? MOV R7, #40H ;計數(shù)已到,重賦初值;計數(shù)已到,重賦初值 CP
14、L P1.7 ;輸出取反控制燈;輸出取反控制燈“亮亮”或或“滅滅” EXIT:RETI ;中斷返回;中斷返回 END9.2.2 9.2.2 航標(biāo)燈控制程序航標(biāo)燈控制程序LOGO9.2.3 水位控制程序水位控制程序 水位控制原理水位控制原理u 單片機控制電機轉(zhuǎn)動單片機控制電機轉(zhuǎn)動,電機帶動水泵供水供水電機帶動水泵供水供水時時,水位上升水位上升,當(dāng)當(dāng)達(dá)到上限時達(dá)到上限時,由于水導(dǎo)電,由于水導(dǎo)電,B、C棒連通棒連通+5V。b和和c兩端均為兩端均為”1”.這時,應(yīng)這時,應(yīng)停止電機工作,不再供水。停止電機工作,不再供水。l 當(dāng)水位當(dāng)水位降到下限時降到下限時,B、C棒都不能與棒棒都不能與棒導(dǎo)通,導(dǎo)通,b和
15、和c兩端均為兩端均為”0”。啟動電機供水啟動電機供水.l 當(dāng)水位處于當(dāng)水位處于上下限之間上下限之間,棒與棒與A棒導(dǎo)通棒導(dǎo)通.棒不能與棒導(dǎo)通,棒不能與棒導(dǎo)通,b端為端為”1”,c端為端為“0”狀態(tài)。應(yīng)繼續(xù)維持原有的工作狀態(tài)。狀態(tài)。應(yīng)繼續(xù)維持原有的工作狀態(tài)。u 圖圖9-6中虛線表示允許水位變化的上、下限。水塔安裝固定的中虛線表示允許水位變化的上、下限。水塔安裝固定的3根金屬棒。其中,根金屬棒。其中,A棒處于下限水位,棒處于下限水位,A棒接棒接+5V電源,電源,C棒處于上限水位,棒處于上限水位,B棒在上、下限水位之間。棒在上、下限水位之間。B棒、棒、C棒各通過一個電阻與地相連。棒各通過一個電阻與地相
16、連。9.2 9.2 數(shù)據(jù)采集及簡單控制程序數(shù)據(jù)采集及簡單控制程序LOGO2. 水位控制電路水位控制電路圖圖9-7 水塔水位控制水塔水位控制電路電路9.2.3 9.2.3 水位控制程序水位控制程序LOGO3. 信號輸入與輸出信號輸入與輸出 水位信號由水位信號由P1.0和和P1.1輸入輸入 由由P1.2端輸出,去控制電機。端輸出,去控制電機。 由由P1.3輸出報警信號,驅(qū)動一輸出報警信號,驅(qū)動一 只發(fā)光二極管進(jìn)行光報警。只發(fā)光二極管進(jìn)行光報警。C (P1.1)B (P1.0)操操 作作00電機運轉(zhuǎn)電機運轉(zhuǎn)01維持原狀維持原狀10故障報警故障報警11電機停轉(zhuǎn)電機停轉(zhuǎn)9.2.3 9.2.3 水位控制程
17、序水位控制程序LOGO4. 控制程序控制程序主程序清單:主程序清單: ORG 0030H LOOP: ORL R1,#03H ;為檢查水位狀態(tài)作準(zhǔn)備;為檢查水位狀態(tài)作準(zhǔn)備 MOV A,P1 JNB ACC.0,ONE ;P1.0=0則轉(zhuǎn)則轉(zhuǎn) JB ACC.1, TWO ;P1.1=1則轉(zhuǎn)則轉(zhuǎn) BACK: ACALL D10S ;延時;延時10 s AJMP LOOP ONE: JNB ACC.1,THREE ;P1.1=0則轉(zhuǎn)則轉(zhuǎn) CLR 93H ;0P1.3,啟動報警裝置,啟動報警裝置 SETB 92H ;1P1.2,停止電機工作,停止電機工作 FOUR: SJMP FOUR THREE:C
18、LR 92H ;啟動電機;啟動電機 AJMP BACK TWO: SETB 92H ;停止電機工作;停止電機工作 AJMP BACK延時子程序延時子程序D10 S(延時延時10 s): ORG 0100H D10S: MOV R3, #19H LOOP3:MOV R1, #85H LOOP1:MOV R2, #0FAH LOOP2:DJNZ R2,LOOP2 DJNZ R1,LOOP1 DJNZ R3,LOOP3 RET 9.2.3 9.2.3 水位控制程序水位控制程序LOGO9.2.4 蜂鳴音報警子程序蜂鳴音報警子程序 壓電式蜂鳴器約需壓電式蜂鳴器約需10 mA的的驅(qū)動電流驅(qū)動電流 當(dāng)當(dāng)P1
19、.0輸出高電平輸出高電平1時,壓時,壓電蜂鳴器兩端獲得約電蜂鳴器兩端獲得約+5V電壓電壓而鳴叫;而鳴叫; 當(dāng)當(dāng)P1.0輸出低電平輸出低電平0時,壓時,壓電蜂鳴器兩引線間的直流電電蜂鳴器兩引線間的直流電壓降至接近于壓降至接近于0 V,蜂鳴器停,蜂鳴器停止發(fā)聲。止發(fā)聲。9.2 9.2 數(shù)據(jù)采集及簡單控制程序數(shù)據(jù)采集及簡單控制程序LOGO連續(xù)鳴音連續(xù)鳴音30 ms的控制子程序清單:的控制子程序清單: SND:SETB P1.0 ;P1.0輸出高電平,啟動蜂鳴器鳴叫輸出高電平,啟動蜂鳴器鳴叫 MOV R7,#1EH ;延時;延時30 ms DL:MOV R6, #0F9H DL1:DJNZ R6,DL
20、1 ;小循環(huán)延時;小循環(huán)延時1 ms DJNZ R7,DL CLR P1.0 ;P1.0輸出低電平,停止蜂鳴器鳴叫輸出低電平,停止蜂鳴器鳴叫 RET9.2.4 9.2.4 蜂鳴音報警子程序蜂鳴音報警子程序本節(jié)結(jié)束本節(jié)結(jié)束LOGO9.3 9.3 數(shù)據(jù)處理程序數(shù)據(jù)處理程序采樣到的數(shù)據(jù)要經(jīng)過采樣到的數(shù)據(jù)要經(jīng)過必要的處理,才能用必要的處理,才能用于控制和顯示。一般于控制和顯示。一般單片機小系統(tǒng)的系統(tǒng)單片機小系統(tǒng)的系統(tǒng)軟件應(yīng)按圖軟件應(yīng)按圖9-11所示所示流程處理。流程處理。 LOGO 9.3.1 排序程序排序程序【例例9-4】將片內(nèi)將片內(nèi)RAM 50H59H中的數(shù)據(jù)按從小到大中的數(shù)據(jù)按從小到大的順序排序
21、。的順序排序。 解解: 這是一個排序問題。這是一個排序問題。l 按從小到大排列稱升序排列,反之稱降序排列。按從小到大排列稱升序排列,反之稱降序排列。l 根據(jù)題意,排序程序在執(zhí)行時,取前數(shù)與后數(shù)比較:根據(jù)題意,排序程序在執(zhí)行時,取前數(shù)與后數(shù)比較: p 如果前數(shù)小于后數(shù),則繼續(xù)順序比較下去;如果前數(shù)小于后數(shù),則繼續(xù)順序比較下去;p 如果前數(shù)大于后數(shù),則前數(shù)和后數(shù)交換后再繼續(xù)比較下去。如果前數(shù)大于后數(shù),則前數(shù)和后數(shù)交換后再繼續(xù)比較下去。l 第一次循環(huán)將在最后單元中得到最大的數(shù)第一次循環(huán)將在最后單元中得到最大的數(shù)(冒泡法冒泡法)。l 得到所有數(shù)據(jù)的升序排列需要經(jīng)過多重循環(huán)。得到所有數(shù)據(jù)的升序排列需要經(jīng)
22、過多重循環(huán)。9.3 9.3 數(shù)據(jù)處理程序數(shù)據(jù)處理程序LOGO程序清單如下:程序清單如下: CLR 00H ;清除交換標(biāo)志位;清除交換標(biāo)志位 QUE:MOV R3,#9H ;10個數(shù)據(jù)循環(huán)次數(shù)個數(shù)據(jù)循環(huán)次數(shù) MOV R0,#50H ;數(shù)據(jù)存放區(qū)首址;數(shù)據(jù)存放區(qū)首址 MOV A,R0 ;取前數(shù);取前數(shù) L2:INC R0 MOV R2,A ;保存前數(shù);保存前數(shù) SUBB A,R0 ;前數(shù)減后數(shù);前數(shù)減后數(shù) MOV A,R2 ;恢復(fù)前數(shù);恢復(fù)前數(shù) JC L1 ;順序則繼續(xù)比較;順序則繼續(xù)比較 SETB 00H ;逆序則建立標(biāo)志位;逆序則建立標(biāo)志位 XCH A,R0 ;前數(shù)與后數(shù)交換;前數(shù)與后數(shù)交換
23、DEC R0 XCH A,R0 INC R0 ;仍指向后數(shù)單元;仍指向后數(shù)單元 L1:MOV A, R0 DJNZ R3,L2 ;依次重復(fù)比較;依次重復(fù)比較 JB 00H,QUE ;交換后重新比較;交換后重新比較 RET 9.3.1 9.3.1 排序程序排序程序LOGO9.3.2 數(shù)字濾波程序數(shù)字濾波程序u 前向通道中,必須消除被測信號中的噪音和干擾。前向通道中,必須消除被測信號中的噪音和干擾。u 噪音有兩大類:噪音有兩大類: l 一類為周期性的。典型為一類為周期性的。典型為50 Hz的工頻干擾。采用硬件濾的工頻干擾。采用硬件濾波電路能有效地消除其影響。波電路能有效地消除其影響。l 另一類為不
24、規(guī)則隨機性的,可以用數(shù)字濾波方法予以削弱另一類為不規(guī)則隨機性的,可以用數(shù)字濾波方法予以削弱或濾除。或濾除。u 數(shù)字濾波,就是通過程序計算或判斷來減少干擾在有用數(shù)字濾波,就是通過程序計算或判斷來減少干擾在有用信號中的比重,實際是一種信號中的比重,實際是一種程序濾波程序濾波。u 經(jīng)常采用的經(jīng)常采用的中值法、去極值法中值法、去極值法可對采樣信號進(jìn)行數(shù)字濾可對采樣信號進(jìn)行數(shù)字濾波,以消除常態(tài)干擾。波,以消除常態(tài)干擾。9.3 9.3 數(shù)據(jù)處理程序數(shù)據(jù)處理程序LOGOu 中值濾波是對某一參數(shù)連續(xù)采樣中值濾波是對某一參數(shù)連續(xù)采樣n次次(n一般取奇數(shù)一般取奇數(shù)),然后,然后把把n次的采樣值從小到大或從大到小排
25、列,再取中間值作為本次的采樣值從小到大或從大到小排列,再取中間值作為本次采樣值。次采樣值。u 該算法的采樣次數(shù)常為該算法的采樣次數(shù)常為3次或次或5次。對于變化很慢的參數(shù),次。對于變化很慢的參數(shù),有時也可增加次數(shù),例如有時也可增加次數(shù),例如15次。次。 u 中值濾波對于去掉由于偶然因素引起的波動或采樣器不穩(wěn)中值濾波對于去掉由于偶然因素引起的波動或采樣器不穩(wěn)定而造成的脈動干擾比較有效。變量變化比較緩慢定而造成的脈動干擾比較有效。變量變化比較緩慢,效果比較好。效果比較好。對于變化較為劇烈的參數(shù),此法不宜。對于變化較為劇烈的參數(shù),此法不宜。現(xiàn)以現(xiàn)以3次采樣為例。次采樣為例。 3次采樣值分別存放在次采樣
26、值分別存放在R2、R3和和R4中,程序運行之后,中,程序運行之后,將將3個數(shù)據(jù)從小到大順序排列,仍然存放在個數(shù)據(jù)從小到大順序排列,仍然存放在R2、R3和和R4中,中,中值在中值在R3中。中。 9.3.2 9.3.2 數(shù)字濾波程數(shù)字濾波程序序LOGO程序清單:程序清單: FILT2: MOV A,R2 ;R2R3嗎嗎? CLR C SUBB A,R3 JC FILT21 MOV A,R2 ;R2R3時,交換時,交換R2和和R3 XCH A,R3 MOV R2,A FILT21:MOV A,R3 ;R3R4嗎嗎? CLR C SUBB A,R4 JC FILT22 ;R3R4時,排序結(jié)束時,排序結(jié)
27、束 MOV A,R4 ;R3R4時,交換時,交換R3和和R4 XCH A,R3 XCH A,R4 ;R3R2嗎嗎? CLR C SUBB A,R2 JNC FILT22 ;R3R2時,排序結(jié)束時,排序結(jié)束 MOV A,R2 ;R3R2時,以時,以R2為中值為中值 MOV R3,A ;中值在;中值在R3中中 FILT22:RET9.3.2 9.3.2 數(shù)字濾波程數(shù)字濾波程序序LOGO9.3.3 標(biāo)度變換標(biāo)度變換(工程量變換工程量變換)u 生產(chǎn)現(xiàn)場的各種參數(shù)都有不同的數(shù)值和量綱,例如,溫生產(chǎn)現(xiàn)場的各種參數(shù)都有不同的數(shù)值和量綱,例如,溫度單位用度單位用,壓力用,壓力用Pa(帕帕),流量用,流量用ms
28、。u 這些參數(shù)經(jīng)轉(zhuǎn)換后,統(tǒng)一變?yōu)檫@些參數(shù)經(jīng)轉(zhuǎn)換后,統(tǒng)一變?yōu)?個數(shù)碼,例個數(shù)碼,例如,如,8位轉(zhuǎn)換器輸出的數(shù)碼為位轉(zhuǎn)換器輸出的數(shù)碼為0255。u 這些數(shù)碼雖然代表參數(shù)值的大小,但是并不表示帶有量這些數(shù)碼雖然代表參數(shù)值的大小,但是并不表示帶有量綱的參數(shù)值,必須將其轉(zhuǎn)換成有量綱的數(shù)值,才能進(jìn)行顯綱的參數(shù)值,必須將其轉(zhuǎn)換成有量綱的數(shù)值,才能進(jìn)行顯示和打印。這種轉(zhuǎn)換稱為示和打印。這種轉(zhuǎn)換稱為標(biāo)度變換標(biāo)度變換或或工程量轉(zhuǎn)換工程量轉(zhuǎn)換。9.3 9.3 數(shù)據(jù)處理程序數(shù)據(jù)處理程序LOGO前提條件是參數(shù)值與轉(zhuǎn)換結(jié)果前提條件是參數(shù)值與轉(zhuǎn)換結(jié)果(采樣值采樣值)之間應(yīng)呈線性關(guān)系。之間應(yīng)呈線性關(guān)系。l 當(dāng)輸入信號為當(dāng)輸入
29、信號為0(即參數(shù)值起點值即參數(shù)值起點值),輸出值不為,輸出值不為0時,標(biāo)度變換公式為:時,標(biāo)度變換公式為:式中:式中: 參數(shù)量程起點值,一次測量儀表的下限;參數(shù)量程起點值,一次測量儀表的下限; 參數(shù)量程終點值,一次測量儀表的上限;參數(shù)量程終點值,一次測量儀表的上限; 參數(shù)測量值,實際測量值參數(shù)測量值,實際測量值(工程量工程量); N量程起點對應(yīng)的量程起點對應(yīng)的A/D轉(zhuǎn)換后的值,儀表下限所對應(yīng)的數(shù)字量;轉(zhuǎn)換后的值,儀表下限所對應(yīng)的數(shù)字量; N量程終點對應(yīng)的值,儀表上限所對應(yīng)的數(shù)字量;量程終點對應(yīng)的值,儀表上限所對應(yīng)的數(shù)字量; N測量值對應(yīng)的測量值對應(yīng)的A/D值值(采樣值采樣值),是經(jīng)數(shù)字濾波后確
30、定的采樣值。,是經(jīng)數(shù)字濾波后確定的采樣值。 其中,、和對一個檢測系統(tǒng)來說是常數(shù)。其中,、和對一個檢測系統(tǒng)來說是常數(shù)。9.3.3 9.3.3 標(biāo)度變換標(biāo)度變換( (工程量變換工程量變換) )LOGOl 在參數(shù)量程起點在參數(shù)量程起點(輸入信號為輸入信號為0),值為,值為0(即即)。標(biāo)度變換:。標(biāo)度變換:l 很多測量系統(tǒng)中,參數(shù)量程起點值很多測量系統(tǒng)中,參數(shù)量程起點值(即儀表下限值即儀表下限值)00,對應(yīng)的,對應(yīng)的0。可進(jìn)一步簡化為:可進(jìn)一步簡化為:上述上述3個公式即為在不同情況下,線性刻度儀表測量參數(shù)的標(biāo)度變換公式。個公式即為在不同情況下,線性刻度儀表測量參數(shù)的標(biāo)度變換公式。9.3.3 9.3.3
31、 標(biāo)度變換標(biāo)度變換( (工程量變換工程量變換) )LOGO9.3.3 9.3.3 標(biāo)度變換標(biāo)度變換( (工程量變換工程量變換) )例如例如:某測量點的溫度量程為某測量點的溫度量程為200400, 采用采用8位位A/D 轉(zhuǎn)換器。轉(zhuǎn)換器。那么,那么,0200 , 400 , 00, 255,采樣值為。其標(biāo)度變換公式為:采樣值為。其標(biāo)度變換公式為: 200 200 只要把這一算式編成程序,將轉(zhuǎn)只要把這一算式編成程序,將轉(zhuǎn)換后經(jīng)數(shù)字濾波處理后的值換后經(jīng)數(shù)字濾波處理后的值代入,即可代入,即可計算出溫度的真實值。計算出溫度的真實值。LOGO如果傳感器輸出特性是非線性的,可采用如果傳感器輸出特性是非線性的,
32、可采用查表法查表法進(jìn)行標(biāo)度變換。進(jìn)行標(biāo)度變換。例:用熱敏電阻組成的惠斯頓電橋測溫電路。例:用熱敏電阻組成的惠斯頓電橋測溫電路。 R1是熱敏電阻是熱敏電阻,當(dāng)溫度當(dāng)溫度T0時時,R1取值取值R1(T0) 電橋達(dá)到平衡。平衡條件為:電橋達(dá)到平衡。平衡條件為: R1(T0)24此時,電橋輸出電壓此時,電橋輸出電壓出出 V。 若溫度改變?nèi)魷囟雀淖?則則R1的阻值改變的阻值改變,電橋平衡遭到破壞電橋平衡遭到破壞,產(chǎn)生輸出電壓產(chǎn)生輸出電壓出出。通過測量電壓。通過測量電壓出出值就能推得值就能推得R1的阻值變化的阻值變化,測得環(huán)境溫度的變化。測得環(huán)境溫度的變化。9.3.3 9.3.3 標(biāo)度變換標(biāo)度變換( (工
33、程量變換工程量變換) )本節(jié)結(jié)束本節(jié)結(jié)束LOGO9.4 9.4 代碼轉(zhuǎn)換程序代碼轉(zhuǎn)換程序【例例9-5】單字節(jié)二翻十子程序。單字節(jié)二翻十子程序。 將將00HFFH內(nèi)二進(jìn)制數(shù)轉(zhuǎn)換為內(nèi)二進(jìn)制數(shù)轉(zhuǎn)換為BCD數(shù)數(shù)(0256)。 解:解: 入口:入口: (A)=二進(jìn)制數(shù)。二進(jìn)制數(shù)。 出口出口:百、十和個位分別存入百、十和個位分別存入R0指出的兩個指出的兩個RAM單元。單元。程序清單:程序清單:BINBCD:MOV B,#100 DIV AB ;(A)=百位數(shù)百位數(shù) MOV R0 ,A ;百位;百位BCD存入存入RAM INC R0 MOV A,#10 XCH A,B DIV AB ;(A)=十位數(shù),十位數(shù)
34、,(B)=個位數(shù)個位數(shù) SWAP A ADD A,B ;(A)=壓縮壓縮BCD碼碼(十位個位十位個位) MOV R0 ,A ;存入;存入RAM RETLOGO【例例9-6】單字節(jié)十翻二子程序。單字節(jié)十翻二子程序。 將將2位位BCD數(shù)數(shù)(壓縮為壓縮為1字節(jié)字節(jié))轉(zhuǎn)換成二進(jìn)制數(shù)。轉(zhuǎn)換成二進(jìn)制數(shù)。解:解: 將累加器將累加器A中的壓縮中的壓縮BCD碼轉(zhuǎn)換成二進(jìn)制數(shù),結(jié)果仍在碼轉(zhuǎn)換成二進(jìn)制數(shù),結(jié)果仍在A中。中。 方法是將方法是將A中的高位乘以中的高位乘以10,再加上,再加上A的低位字節(jié)。的低位字節(jié)。DTOB:MOV R2,A ;暫存;暫存 ANL A,#0F0H ;屏蔽低;屏蔽低4位位 SWAP A M
35、OV B,#10 MUL AB ;高位乘以;高位乘以10 MOV R3,A ;暫存;暫存 MOV A,R2 ;?。蝗CD數(shù)數(shù) ANL A,#0FH ;取;取BCD數(shù)個位數(shù)個位 ADD A,R3 ;得轉(zhuǎn)換結(jié)果;得轉(zhuǎn)換結(jié)果 RET9.4 9.4 代碼轉(zhuǎn)換程序代碼轉(zhuǎn)換程序LOGO【例例9-7】一位十六進(jìn)制數(shù)轉(zhuǎn)換成一位十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼碼。 解:解: 本程序中,由本程序中,由R0指出十六進(jìn)制數(shù)存放單元,指出十六進(jìn)制數(shù)存放單元, 經(jīng)轉(zhuǎn)換后結(jié)果仍存于原處。經(jīng)轉(zhuǎn)換后結(jié)果仍存于原處。HEXASC1:MOV A,R0 ;取十六進(jìn)制數(shù);取十六進(jìn)制數(shù) ANL A,#0FH ;屏蔽高;屏蔽高4位位 ADD
36、 A, #03H ;修正偏移量;修正偏移量 MOVC A, A+PC ;查表,??;查表,取ASCII代碼代碼 XCH A,R0 ;存儲;存儲 INC R0 ;更新地址;更新地址 RET ASCTAB: DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H DB 41H,42H,43H,44H,45H,46H9.4 9.4 代碼轉(zhuǎn)換程序代碼轉(zhuǎn)換程序LOGO【例例9-8】十六進(jìn)制數(shù)的十六進(jìn)制數(shù)的ASCII代碼轉(zhuǎn)換成二進(jìn)制數(shù)代碼轉(zhuǎn)換成二進(jìn)制數(shù)。 解:解: 對于小于或等于對于小于或等于9的數(shù)的的數(shù)的ASCII代碼,減去代碼,減去30H得得4位二進(jìn)制數(shù);位二進(jìn)制數(shù);
37、 對于大于對于大于 9的十六進(jìn)制數(shù)的的十六進(jìn)制數(shù)的ASCII代碼,減去代碼,減去37H得得4位二進(jìn)制數(shù)。則位二進(jìn)制數(shù)。則正好是正好是0AH0FH的結(jié)果。的結(jié)果。 程序以程序以R2作為入口和出口。程序清單如下:作為入口和出口。程序清單如下:ASCHEX:MOV A,R2 ;取操作數(shù);取操作數(shù) CLR C SUBB A,#30H ;09的轉(zhuǎn)換的轉(zhuǎn)換 MOV R2,A ;暫存結(jié)果;暫存結(jié)果 SUBB A,#0AH ;結(jié)果是否;結(jié)果是否9? JC SBIO ;9則轉(zhuǎn)換正確,返回則轉(zhuǎn)換正確,返回 XCH A,R2 SUBB A,#37H ;9,則減,則減37HSBIO: MOV R2,A ;存放結(jié)果;存
38、放結(jié)果 RET9.4 9.4 代碼轉(zhuǎn)換程序代碼轉(zhuǎn)換程序本節(jié)結(jié)束本節(jié)結(jié)束LOGO9.5 9.5 軟件抗干擾軟件抗干擾l 干擾可以沿各種線路侵入,也可以以場的形式干擾可以沿各種線路侵入,也可以以場的形式( (高電壓、大電流、電火高電壓、大電流、電火花等花等) )從空間侵入微機系統(tǒng);電網(wǎng)中各種浪涌電壓入侵,系統(tǒng)的接地裝置不從空間侵入微機系統(tǒng);電網(wǎng)中各種浪涌電壓入侵,系統(tǒng)的接地裝置不良或不合理等,也是引入干擾的重要途徑。良或不合理等,也是引入干擾的重要途徑。l 干擾對微機系統(tǒng)的影響有干擾對微機系統(tǒng)的影響有3 3個部位:個部位: 前向通道、前向通道、CPUCPU內(nèi)核及后向通道。內(nèi)核及后向通道。對前向通道
39、的干擾會使輸入的模擬信號失真,數(shù)字信號出錯。對這一部位對前向通道的干擾會使輸入的模擬信號失真,數(shù)字信號出錯。對這一部位的抗干擾,硬件方面可采用光電隔離、硬件濾波電路等措施,在軟件方面的抗干擾,硬件方面可采用光電隔離、硬件濾波電路等措施,在軟件方面可采用前面講的數(shù)字濾波方法??刹捎们懊嬷v的數(shù)字濾波方法。l 干擾可使微機系統(tǒng)內(nèi)核三總線上的數(shù)字信號錯亂,從而引發(fā)一系列無法干擾可使微機系統(tǒng)內(nèi)核三總線上的數(shù)字信號錯亂,從而引發(fā)一系列無法預(yù)料的后果,形成一系列錯誤。預(yù)料的后果,形成一系列錯誤。CPUCPU得到錯誤的地址信號后,引起程序計數(shù)得到錯誤的地址信號后,引起程序計數(shù)器出錯,使程序運行離開正常軌道,導(dǎo)
40、致程序失控、飛跑或死循環(huán),進(jìn)而器出錯,使程序運行離開正常軌道,導(dǎo)致程序失控、飛跑或死循環(huán),進(jìn)而使后向通道的輸出信號混亂,不能正常反映微機系統(tǒng)的真實輸出,從而導(dǎo)使后向通道的輸出信號混亂,不能正常反映微機系統(tǒng)的真實輸出,從而導(dǎo)致一系列嚴(yán)重后果。致一系列嚴(yán)重后果。l 本節(jié)主要討論軟件抗干擾的問題,關(guān)于硬件的抗干擾措施這里不再論述。本節(jié)主要討論軟件抗干擾的問題,關(guān)于硬件的抗干擾措施這里不再論述。LOGO9.5.1 軟件陷阱技術(shù)軟件陷阱技術(shù)l 當(dāng)當(dāng)CPU受到干擾后,會將一些操作數(shù)當(dāng)作指令碼來執(zhí)行,造成程序執(zhí)受到干擾后,會將一些操作數(shù)當(dāng)作指令碼來執(zhí)行,造成程序執(zhí)行混亂。這時,首先要盡快將程序納入正軌行混亂
41、。這時,首先要盡快將程序納入正軌(執(zhí)行真正的指令序列執(zhí)行真正的指令序列)。l l 真正的軟件陷阱由真正的軟件陷阱由3條指令構(gòu)成:條指令構(gòu)成: NOP NOP LJMP ERRERR:一段專門對程序出錯進(jìn)行處理的程序,以使程序:一段專門對程序出錯進(jìn)行處理的程序,以使程序 按既定目標(biāo)執(zhí)行。按既定目標(biāo)執(zhí)行。9.5 9.5 軟件抗干擾軟件抗干擾LOGO 在未使用的中斷在未使用的中斷向量區(qū)設(shè)置陷阱,向量區(qū)設(shè)置陷阱,就能及時捕捉到錯就能及時捕捉到錯誤中斷。誤中斷。設(shè):使用了設(shè):使用了3個中個中斷:斷:INT0、T0和和T1, 可以按如左方式可以按如左方式來設(shè)置中斷向量區(qū)。來設(shè)置中斷向量區(qū)。 未使用的中斷向
42、量區(qū)未使用的中斷向量區(qū) ORG 0000H START:LJMP MAIN ;引向主程序入口;引向主程序入口 LJMP PGINT0 ;INT0中斷正常入口中斷正常入口 NOP ;冗余指令;冗余指令 NOP LJMP ERR ;陷阱;陷阱 LJMP PGT0 ;T0中斷正常入口中斷正常入口 NOP ;冗余指令;冗余指令 NOP LJMP ERR ;陷阱;陷阱 LJMP ERR ;未使用;未使用INT1,設(shè)陷阱,設(shè)陷阱 NOP ;冗余指令;冗余指令 NOP LJMP ERR ;陷阱;陷阱 LJMP PGT1 ;T1中斷正常入口中斷正常入口 NOP ;冗余指令;冗余指令 NOP LJMP ERR
43、;陷阱;陷阱 LJMP ERR ;未用串口中斷,設(shè)陷阱;未用串口中斷,設(shè)陷阱 NOP ;冗余指令;冗余指令 NOP LJMP ERR ;陷阱;陷阱9.5.1 9.5.1 軟件陷阱技術(shù)軟件陷阱技術(shù)LOGOl 未編程未編程ROM,都維持都維持(0FFH),是一條單字節(jié)指令是一條單字節(jié)指令“MOV R7,A”,l 只要每隔一段設(shè)置一個陷阱,就能捕捉到彈飛的程序。只要每隔一段設(shè)置一個陷阱,就能捕捉到彈飛的程序。 軟件陷阱要指向出錯處理過程軟件陷阱要指向出錯處理過程ERR才穩(wěn)妥,才穩(wěn)妥, ERR可安排在可安排在0030H開始的地方。開始的地方。l 可以用可以用“00 00 20 00 30” 5字節(jié)作為
44、陷阱來填充字節(jié)作為陷阱來填充ROM中的未使中的未使用用 空間。即指令:空間。即指令: NOP / NOP / LJMP 0030H, 或隔一段設(shè)置一個陷阱或隔一段設(shè)置一個陷阱“02 00 30”,即指令:,即指令: LJMP 0030H, 其它單元保持其它單元保持0FFH不變。不變。9.5.1 9.5.1 軟件陷阱技術(shù)軟件陷阱技術(shù)LOGO 表格有表格有兩類兩類:一類是數(shù)據(jù)表格,供:一類是數(shù)據(jù)表格,供“MOVC A,A+PC”指指令或令或“MOVC A,A+DPTR”指令使用;指令使用; 另一類是散轉(zhuǎn)表格,供另一類是散轉(zhuǎn)表格,供“JMP A+DPTR”指令使用,其內(nèi)容指令使用,其內(nèi)容為一系列的為
45、一系列的3字節(jié)指令字節(jié)指令LJMP或兩字節(jié)指令或兩字節(jié)指令A(yù)JMP。 只能在表格的最后安排只能在表格的最后安排5字節(jié)陷阱字節(jié)陷阱 (NOP / NOP / LJMP ERR)。9.5.1 9.5.1 軟件陷阱技術(shù)軟件陷阱技術(shù)LOGO 程序區(qū)的指令串中間常有一些斷裂點,正常執(zhí)行程序到不會繼續(xù)往下執(zhí)程序區(qū)的指令串中間常有一些斷裂點,正常執(zhí)行程序到不會繼續(xù)往下執(zhí)行了,這類指令有行了,這類指令有LJMP、SJMP、AJMP、RET和和RETI。在這種地方安排。在這種地方安排陷阱后,就能有效地捕獲到它,而又不會影響正常執(zhí)行的程序流程。陷阱后,就能有效地捕獲到它,而又不會影響正常執(zhí)行的程序流程。例如例如:
46、根據(jù):根據(jù)A中內(nèi)容的正、負(fù)、零情況進(jìn)行三分支的程序中,軟件陷阱的中內(nèi)容的正、負(fù)、零情況進(jìn)行三分支的程序中,軟件陷阱的安置方式如下:安置方式如下: JNZ XYZ ;零處理;零處理 AJMP ABC ;斷裂點;斷裂點 NOP NOP LJMP ERR ;陷阱;陷阱 XYZ: JB ACC.7,VUW ;正處理;正處理 AJMP ABC ;斷裂點;斷裂點 NOP NOP LJMP ERR ;陷阱;陷阱 VUW: ;負(fù)處理;負(fù)處理 ABC: MOV A,R0 ;取結(jié)果;取結(jié)果 RET ;斷裂點;斷裂點 NOP NOP LJMP ERR ;陷阱;陷阱9.5.1 9.5.1 軟件陷阱技術(shù)軟件陷阱技術(shù)LO
47、GO9.5.2 軟件看門狗軟件看門狗程序運行監(jiān)視系統(tǒng)程序運行監(jiān)視系統(tǒng) (WATCHDOG)特性:特性: uu 本身能獨立工作,基本上不依賴于本身能獨立工作,基本上不依賴于CPU; uu CPU在一個固定的時間間隔內(nèi)和該系統(tǒng)打一次交道在一個固定的時間間隔內(nèi)和該系統(tǒng)打一次交道 (喂一次狗喂一次狗),以表明系統(tǒng)目前尚正常;,以表明系統(tǒng)目前尚正常; uu 當(dāng)當(dāng)CPU陷入死循環(huán)后,能及時發(fā)覺并使系統(tǒng)復(fù)位。陷入死循環(huán)后,能及時發(fā)覺并使系統(tǒng)復(fù)位。9.5 9.5 軟件抗干擾軟件抗干擾LOGO 在在8096系列單片機和增強型系列單片機和增強型89C51系列單片機芯片內(nèi)已經(jīng)系列單片機芯片內(nèi)已經(jīng)內(nèi)嵌了程序運行監(jiān)視系
48、統(tǒng),使用起來很方便。內(nèi)嵌了程序運行監(jiān)視系統(tǒng),使用起來很方便。 在普通型在普通型51系列單片機中,必須由用戶自己建立。如果要系列單片機中,必須由用戶自己建立。如果要實現(xiàn)實現(xiàn)WATCHDOG的真正目標(biāo),該系統(tǒng)還必須包括完全獨立于的真正目標(biāo),該系統(tǒng)還必須包括完全獨立于CPU之外的硬件電路,有時為了簡化硬件電路,也可以采用之外的硬件電路,有時為了簡化硬件電路,也可以采用純軟件的純軟件的WATCHDOG系統(tǒng)。系統(tǒng)。軟件軟件WATCHDOG是一個比較好是一個比較好的補救措施,只是其可靠性稍差一些。的補救措施,只是其可靠性稍差一些。9.5.2 9.5.2 軟件看門狗軟件看門狗LOGO純軟件的純軟件的WATC
49、HDOG系統(tǒng)系統(tǒng)l 當(dāng)系統(tǒng)陷入死循環(huán)后,只有比它更高級的中斷才能奪走對當(dāng)系統(tǒng)陷入死循環(huán)后,只有比它更高級的中斷才能奪走對CPU的控制。為此,用一個定時器來作的控制。為此,用一個定時器來作WATCHDOG,將它的溢出中,將它的溢出中斷設(shè)定為高優(yōu)先級中斷,其他中斷均設(shè)為低優(yōu)先級中斷。斷設(shè)定為高優(yōu)先級中斷,其他中斷均設(shè)為低優(yōu)先級中斷。l 例如:用例如:用T0,作定時約為,作定時約為16 ms,在初始化時建,在初始化時建WATCHDOG: MOV TMOD, #01H ;設(shè)置;設(shè)置T0為為16位定時器位定時器 SETB ET0 ;允許;允許T0中斷中斷 SETB PT0 ;設(shè)置;設(shè)置T0為高級中斷為高
50、級中斷 MOV TH0, #0E0H ;定時約;定時約16 ms(6 MHz晶振晶振) SETB TR0 ;啟動;啟動T0 SETB EA ;開中斷;開中斷9.5.2 9.5.2 軟件看門狗軟件看門狗LOGOl WATCHDOG啟動以后,工作程序必須經(jīng)常啟動以后,工作程序必須經(jīng)?!拔顾顾?,執(zhí)行一,執(zhí)行一條條 “MOV TH0,#0E0H”指令,且每兩次間隔不大于指令,且每兩次間隔不大于16 ms (如可如可以每以每10 ms“喂喂”一次一次)。l 當(dāng)程序陷入死循環(huán)后,當(dāng)程序陷入死循環(huán)后,16 ms之內(nèi)即可引起一次之內(nèi)即可引起一次T0溢出,產(chǎn)生溢出,產(chǎn)生高優(yōu)先級中斷,從而跳出死循環(huán)。高優(yōu)先級
51、中斷,從而跳出死循環(huán)。 T0中斷直接轉(zhuǎn)向出錯處理程序中斷直接轉(zhuǎn)向出錯處理程序,在中斷向量區(qū)放置一條在中斷向量區(qū)放置一條“LJMP ERR”指令即可。由出錯處理程序完成善后,并用軟件方法使系統(tǒng)指令即可。由出錯處理程序完成善后,并用軟件方法使系統(tǒng)復(fù)位。復(fù)位。9.5.2 9.5.2 軟件看門狗軟件看門狗LOGO完整的看門狗程序完整的看門狗程序,它包括模擬主程序,喂狗,它包括模擬主程序,喂狗(DOG)程序和空彈返回程序和空彈返回(TOP)程序。程序。 ORG 0000H AJMP MAIN ORG 000BH LJMP TOP MAIN:MOV SP, #60H MOV PSW,#00H MOV SC
52、ON,#00H MOV IE, #00H MOV IP, #00H ;模擬硬件復(fù)位,這部分可根據(jù)系統(tǒng)對資源使用情況增減;模擬硬件復(fù)位,這部分可根據(jù)系統(tǒng)對資源使用情況增減 MOV TMOD,#01H LCALL DOG ;調(diào)用;調(diào)用DOG程序的時間間隔應(yīng)小于定時器定時時間程序的時間間隔應(yīng)小于定時器定時時間 DOG: MOV TH0, #0B1H ;喂狗程序;喂狗程序 MOV TL0, #0E0H SETB TR0 RET TOP: POP ACC ;空彈斷點地址;空彈斷點地址 POP ACC CLR A PUSH ACC ;將返回地址換成;將返回地址換成0000H,以便實現(xiàn)軟件復(fù)位,以便實現(xiàn)軟件
53、復(fù)位 PUSH ACC RETI9.5.2 9.5.2 軟件看門狗軟件看門狗LOGO9.5.3 硬件(專用芯片)看門狗硬件(專用芯片)看門狗u 有的單片機片內(nèi)嵌入監(jiān)視定時器有的單片機片內(nèi)嵌入監(jiān)視定時器T3(看門狗),當(dāng)(看門狗),當(dāng)T3溢出時,溢出時,使使MCU系統(tǒng)復(fù)位。設(shè)計程序時,必須在監(jiān)視間隔內(nèi)執(zhí)行對監(jiān)視定時系統(tǒng)復(fù)位。設(shè)計程序時,必須在監(jiān)視間隔內(nèi)執(zhí)行對監(jiān)視定時器再裝入的指令,即調(diào)看門狗器再裝入的指令,即調(diào)看門狗WATCHDOG子程序。如果程序運行時子程序。如果程序運行時出了問題,沒能在監(jiān)視間隔內(nèi)執(zhí)行對監(jiān)視定時器裝入的指令,那么監(jiān)出了問題,沒能在監(jiān)視間隔內(nèi)執(zhí)行對監(jiān)視定時器裝入的指令,那么監(jiān)視
54、定時器視定時器T3就會溢出使系統(tǒng)復(fù)位。就會溢出使系統(tǒng)復(fù)位。u 看門狗電路專用芯片本身是一個帶清除端和溢出觸發(fā)器的定時看門狗電路專用芯片本身是一個帶清除端和溢出觸發(fā)器的定時器。如果不清除它,它就以固定頻率發(fā)出溢出觸發(fā)脈沖。實際使用中,器。如果不清除它,它就以固定頻率發(fā)出溢出觸發(fā)脈沖。實際使用中,把觸發(fā)輸出引入到把觸發(fā)輸出引入到MCU的復(fù)位端,使用的復(fù)位端,使用MCU的一個的一個I/O口線控制它的口線控制它的清除端。清除端。u 看門狗的監(jiān)控思路是看門狗的監(jiān)控思路是: MCU正常運行時,軟件被設(shè)計成定時清正常運行時,軟件被設(shè)計成定時清除看門狗定時器;而一旦除看門狗定時器;而一旦MCU死機或程序跑飛,這時死機或程序跑飛,這時MCU不再發(fā)出不再發(fā)出清除脈沖,看門狗定時器溢出,則自動復(fù)位清除脈沖,看門狗定時器溢出,則自動復(fù)位MCU。u 看門狗的設(shè)計一般采用硬件和軟件兩種方式,這里我們主要介看門狗的設(shè)計一般采用硬件和軟件兩種方式,這里我們主要介紹硬件看門狗的設(shè)計方法。紹硬件看門狗的設(shè)計方法。9.5 9.5 軟件抗干擾軟件抗干擾LOGO型號型號復(fù)位門限復(fù)位門限/V低電平低電平復(fù)位復(fù)位高電平高電平復(fù)位復(fù)位看門狗看門狗周期周期/s手動手動復(fù)位復(fù)位功能功能E2PROM容量容量接口接口類型類
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025學(xué)校教職工合同范本
- 2024年節(jié)能型泵及環(huán)保用泵項目資金申請報告代可行性研究報告
- 2025公寓租賃合同
- 2025土地使用權(quán)出讓合同土地征收補償協(xié)議
- 2024年電子涂料項目資金申請報告代可行性研究報告
- 2024年表面處理機械項目投資申請報告代可行性研究報告
- 2025短期用工合同范本 管理資料
- 2025企業(yè)間借款合同法律關(guān)系
- 2025煤炭采購合同范本
- 2025成都房屋租賃合同范本AA
- SL631水利水電工程單元工程施工質(zhì)量驗收標(biāo)準(zhǔn)第1部分:土石方工程
- 2023年綏濱縣社區(qū)工作者招聘考試筆試題庫及答案解析
- 雙心治療課件
- 廣東省肇慶市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細(xì)及行政區(qū)劃代碼
- 緩和醫(yī)療精品課件
- 2022國家自然科學(xué)基金委員會公開招聘應(yīng)屆畢業(yè)生9人模擬卷含答案
- 兒童功能性獨立評定量表(WeeFIM)
- 工程(產(chǎn)品)交付后顧客滿意度調(diào)查表
- 體育市場營銷(第三版)整套課件完整版電子教案課件匯總(最新)
- 新形勢下的處方審核工作-處方審核培訓(xùn)
- T∕CHAS 10-4-9-2019 中國醫(yī)院質(zhì)量安全管理 第4-9部分:醫(yī)療管理危急值管理
評論
0/150
提交評論