版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第十章
單片機(jī)應(yīng)用系統(tǒng)開發(fā)與設(shè)計通常,開發(fā)一個單片機(jī)應(yīng)用系統(tǒng)需要經(jīng)過以下幾個過程:·系統(tǒng)方案總體設(shè)計;·硬件電路設(shè)計;·軟件設(shè)計;·系統(tǒng)硬、軟件連機(jī)調(diào)試;·系統(tǒng)局部修改、再調(diào)試;·生成正式產(chǎn)品。單片機(jī)應(yīng)用系統(tǒng)的開發(fā)過程10.1單片機(jī)系統(tǒng)的開發(fā)設(shè)計10.1.1總體設(shè)計1.明確設(shè)計任務(wù)和技術(shù)指標(biāo)在開始設(shè)計前,設(shè)計者必須明確單片機(jī)系統(tǒng)所要完成的任務(wù)、控制對象的狀況及所要達(dá)到的技術(shù)指標(biāo)。2.建立被控對象的數(shù)學(xué)模型所謂被控對象的數(shù)學(xué)模型是指對被控對象的變化規(guī)律或控制過程客觀真實(shí)地描述,從而決定單片機(jī)系統(tǒng)需要檢測哪些變量,采用怎樣的控制算法等。3.總體方案的設(shè)計總體方案的設(shè)計就是根據(jù)單片機(jī)系統(tǒng)要實(shí)現(xiàn)的功能和技術(shù)指標(biāo),對單片機(jī)系統(tǒng)各部分的構(gòu)成進(jìn)行一個總體的構(gòu)想,對各部分的具體實(shí)現(xiàn)有一個初步的方案。總體方案設(shè)計中主要考慮以下幾個方面:
(1)系統(tǒng)構(gòu)成:
根據(jù)設(shè)計任務(wù)和技術(shù)要求,確定整個單片機(jī)系統(tǒng)應(yīng)由哪幾部分組成,如顯示、鍵盤、檢測電路、輸入通道、輸出通道、打印、通信等。(2)單片機(jī)機(jī)型的選擇:目前單片機(jī)機(jī)型很多,如本書介紹的AT89系列,Intel公司的MCS-51和MCS-96/98系列等。其主要原則是:機(jī)型的選擇應(yīng)適應(yīng)系統(tǒng)的要求和功能的要求。對該機(jī)型要有性能良好的開發(fā)工具。應(yīng)選擇設(shè)計人員最熟悉的機(jī)型,以利于縮短研制周期。選擇的機(jī)型和電子元件要有充分的市場供貨。(3)單片機(jī)硬件/軟件的功能分配:一個單片機(jī)應(yīng)用系統(tǒng)的硬件和軟件之間有著密切的相互制約關(guān)系,有的可能會從硬件的角度對軟件提出一些特殊要求;也有的會從軟件的角度對硬件提出一些特殊要求;在某些情況下,硬件和軟件又具有一定的互換性。
通常一個系統(tǒng)的硬件越復(fù)雜則編程就相對簡單,而硬件越簡單則編程就相對要復(fù)雜。(4)開發(fā)研制的周期:根據(jù)系統(tǒng)的復(fù)雜程度和實(shí)現(xiàn)的難易度,確定一個合理的研制進(jìn)度時間表,使設(shè)計者在規(guī)定的時間內(nèi)完成設(shè)計任務(wù)。10.1.2硬件設(shè)計
硬件設(shè)計就是在總體方案的指導(dǎo)下,對構(gòu)成單片機(jī)系統(tǒng)的所有功能部分進(jìn)行詳細(xì)具體的電路設(shè)計。首先要設(shè)計出各部分硬件電路原理圖,然后在面包板上搭出電路進(jìn)行具體實(shí)驗(yàn)(一些簡單、成熟的方案可不用單獨(dú)實(shí)驗(yàn))。在硬件設(shè)計和調(diào)試過程中,當(dāng)按總體方案的設(shè)想滿足不了要求時,可更改設(shè)計方案并進(jìn)行實(shí)驗(yàn),直到滿足技術(shù)指標(biāo)要求為止。
硬件電路設(shè)計一般包括兩部分內(nèi)容:一是系統(tǒng)組成,也稱系統(tǒng)擴(kuò)展。如當(dāng)ROM、RAM、I/O口等不能滿足應(yīng)用系統(tǒng)要求時,就需要設(shè)計相應(yīng)的擴(kuò)展電路。二是接口擴(kuò)展,也稱系統(tǒng)配置。如系統(tǒng)要求配置一定的外圍設(shè)備,如鍵盤、顯示器、A/D和D/A轉(zhuǎn)換器等,要設(shè)計出合適的接口電路。硬件電路設(shè)計要遵循以下原則:盡可能選擇結(jié)構(gòu)完整的單片機(jī),以簡化系統(tǒng)硬件,減少設(shè)計工作量。盡可能選擇典型的電路,并符合所選芯片的常規(guī)用法,為硬件系統(tǒng)標(biāo)準(zhǔn)化、模塊化打下良好基礎(chǔ)。系統(tǒng)的擴(kuò)展與外圍設(shè)備的配置水平應(yīng)在充分滿足應(yīng)用系統(tǒng)功能要求的前提下適當(dāng)留有余地,以便方案更改或進(jìn)行二次開發(fā)。(4)硬件結(jié)構(gòu)應(yīng)結(jié)合軟件方案一并考慮,做到軟、應(yīng)、硬件功能相匹配。(5)整個系統(tǒng)中相關(guān)器件要盡可能做到性能匹配。(6)可靠性設(shè)計及抗干擾設(shè)計是硬件系統(tǒng)設(shè)計不可缺少的一部分,它包括芯片、器件選擇、去藕電路、印刷電路板布線、通道屏蔽、隔離等措施。
硬件線路越復(fù)雜,系統(tǒng)的可靠性就越差。一般盡可能減少硬件線路在應(yīng)用系統(tǒng)中的比例,采用以軟件代替硬件功能,是提高可靠性的一個好方法。
此外,為了加快單片機(jī)應(yīng)用系統(tǒng)的研制速度,應(yīng)盡量考慮采用各種標(biāo)準(zhǔn)軟、硬件或利用已有的成熟的軟硬件來完成應(yīng)用系統(tǒng)的設(shè)計,這將起到事半功倍的效果。
10.1.3軟件設(shè)計軟件設(shè)計就是在總體設(shè)計和硬件設(shè)計的基礎(chǔ)上,對單片機(jī)系統(tǒng)的應(yīng)用程序進(jìn)行具體設(shè)計。它包括程序的總體結(jié)構(gòu),程序流程圖,具體程序的編制以及程序的檢查修改等方面。1.程序的結(jié)構(gòu)設(shè)計應(yīng)根據(jù)系統(tǒng)軟、硬件的功能分工,確定出軟件應(yīng)完成什么功能。作為實(shí)現(xiàn)控制功能的軟件應(yīng)明確控制對象、控制信號及控制時序;作為實(shí)現(xiàn)處理功能的軟件應(yīng)明確輸入是什么、要做什么樣的處理(即處理算法)、產(chǎn)生何種輸出。軟件結(jié)構(gòu)設(shè)計與程序設(shè)計技術(shù)密切相關(guān)。在單片機(jī)應(yīng)用系統(tǒng)中,最常用的程序設(shè)計方法是模塊程序設(shè)計。為了編制模塊程序,先要將軟件功能劃分為若干子功能模塊,然后再確定出各模塊的輸入、輸出及相互間的聯(lián)系。設(shè)計一個軟件,應(yīng)考慮如下的一些原則:軟件在結(jié)構(gòu)上應(yīng)清晰、簡潔、流程合理。各功能子程序應(yīng)實(shí)現(xiàn)模塊化、子程序化,以便于調(diào)試、連接、移植和修改。程序存儲區(qū)、數(shù)據(jù)存儲區(qū)應(yīng)合理規(guī)劃,做到既節(jié)約內(nèi)存容量,有方便操作。運(yùn)行狀態(tài)應(yīng)實(shí)現(xiàn)標(biāo)志化管理,對各功能程序的運(yùn)行狀態(tài)、運(yùn)行結(jié)果以及運(yùn)行要求都要設(shè)置狀態(tài)標(biāo)志以便查詢。對需要特殊抗干擾的系統(tǒng)應(yīng)采用軟件抗干擾措施,以提高系統(tǒng)的可靠性。2.程序流程圖不論采用何種程序設(shè)計方法,程序總體結(jié)構(gòu)確定后,一般以程序流程框圖的形式對其進(jìn)行描述,主流程圖中的某個模塊還可用子流程圖進(jìn)一步說明。
程序流程圖通過簡明、直觀的方式對任務(wù)及編程思路進(jìn)行描述,具體編程時可容易地根據(jù)流程圖編寫程序。3.程序的編制程序流程圖繪制成后,整個程序的輪廓和思路已十分清楚,便可開始編寫實(shí)用程序。具體編寫程序時,應(yīng)注意下面兩個問題:①合理分配系統(tǒng)資源。合理分配系統(tǒng)資源包括ROM、RAM、定時器/計數(shù)器、中斷源等。其中最關(guān)鍵的是片內(nèi)RAM的分配。②加強(qiáng)軟件抗干擾設(shè)計,它是提高計算機(jī)應(yīng)用系統(tǒng)可靠性的有力措施4.程序的檢查與修改一個實(shí)用程序編好后,往往會有許多書寫、語法、指令等錯誤,這些錯誤的出現(xiàn)有時是不可避免的,通過匯編軟件的編譯平臺可逐條查出程序中的語法錯誤。
10.1.4系統(tǒng)的仿真調(diào)試與運(yùn)行系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試,而且兩者是密不可分的。我們設(shè)計好的硬件電路和軟件程序,只有經(jīng)過聯(lián)合調(diào)試,才能驗(yàn)證其正確性;軟硬件的配合情況以及是否達(dá)到設(shè)計任務(wù)的要求,也只有經(jīng)過調(diào)試,才能發(fā)現(xiàn)問題并加以解決、完善,最終開發(fā)成實(shí)用產(chǎn)品。1.硬件調(diào)試
硬件調(diào)試是利用開發(fā)系統(tǒng)、基本測試儀器(萬用表、示波器等),通過執(zhí)行開發(fā)系統(tǒng)有關(guān)命令或運(yùn)行適當(dāng)?shù)臏y試程序(也可以是與硬件有關(guān)的部分用戶程序段),檢查用戶系統(tǒng)硬件中存在的故障。硬件調(diào)試可分靜態(tài)調(diào)試與動態(tài)調(diào)試兩步進(jìn)行。1)靜態(tài)調(diào)試
靜態(tài)調(diào)試是在用戶系統(tǒng)未工作時的一種硬件檢查,即在樣機(jī)加電之前,先用萬用表等工具根據(jù)硬件電路的原理圖和裝配圖仔細(xì)檢查樣機(jī)線路的正確性,并核對元器件的型號、規(guī)格和安裝是否符合要求。2)動態(tài)調(diào)試
動態(tài)調(diào)試是在用戶系統(tǒng)工作的情況下發(fā)現(xiàn)和排除用戶系統(tǒng)硬件中存在的器件內(nèi)部故障、器件間連接邏輯錯誤等的一種硬件檢查。由于單片機(jī)應(yīng)用系統(tǒng)的硬件動態(tài)調(diào)試是在開發(fā)系統(tǒng)的支持下完成的,故又稱為聯(lián)機(jī)仿真或聯(lián)機(jī)調(diào)試。2.軟件調(diào)試
軟件調(diào)試是通過對用戶程序的匯編、連接、執(zhí)行來發(fā)現(xiàn)程序中存在的邏輯錯誤或功能錯誤并加以排除糾正的過程。軟件調(diào)試的一般方法是先獨(dú)立后聯(lián)機(jī)、先分塊后組合、先單步后連續(xù)。全部調(diào)試、檢驗(yàn)、修改完成后,將用戶軟件固化在程序存儲器中,插入用戶樣機(jī)后,單片機(jī)系統(tǒng)就可獨(dú)立單機(jī)運(yùn)行。至此,系統(tǒng)研制工作已告完成。10.2單片機(jī)應(yīng)用系統(tǒng)的開發(fā)工具10.2.1單片機(jī)開發(fā)系統(tǒng)的功能1.在線仿真功能在線仿真功能是通過開發(fā)系統(tǒng)中的在線仿真器來實(shí)現(xiàn)的。仿真時,在線仿真器中的單片機(jī)資源通過仿真插座暫時出借給目標(biāo)系統(tǒng),且不占用目標(biāo)系統(tǒng)單片機(jī)的任何資源,仿真器中的存儲器(包括ROM和RAM)也出借給目標(biāo)系統(tǒng),相當(dāng)于目標(biāo)系統(tǒng)所具有的存儲器。2.調(diào)試功能
在開發(fā)系統(tǒng)上可對應(yīng)用程序進(jìn)行單步運(yùn)行、斷點(diǎn)運(yùn)行、連續(xù)運(yùn)行的控制,并能查詢程序運(yùn)行結(jié)果和各工作寄存器的狀態(tài),給軟件調(diào)試帶來了極大的方便。在聯(lián)機(jī)調(diào)試中還可檢查出硬件電路故障和軟件錯誤。3.軟件輔助設(shè)計功能
單片機(jī)開發(fā)系統(tǒng)都能與PC機(jī)連接,允許用戶在PC機(jī)上用匯編語言或高級語言編輯程序,并配有匯編、反匯編、子程序庫等編程軟件,使設(shè)計者軟件研制的工作量大為減輕。4.程序固化功能單片機(jī)開發(fā)系統(tǒng)能將調(diào)試好的應(yīng)用程序匯編成目標(biāo)程序的機(jī)器碼,并固化到單片機(jī)自身的ROM中或外部擴(kuò)展的ROM中,使單片機(jī)系統(tǒng)能獨(dú)立運(yùn)行。10.2.2開發(fā)系統(tǒng)的類型單片機(jī)開發(fā)系統(tǒng)的類型大致可分為以下幾種:(1)通用型單片機(jī)開發(fā)系統(tǒng):這是使用最普及的一類開發(fā)裝置,它具有獨(dú)立的仿真結(jié)構(gòu),通過RS-232串行接口與PC機(jī)相連,配有仿真插頭和EPROM讀出/寫入器。(2)實(shí)用型開發(fā)系統(tǒng):這類裝置的特點(diǎn)是硬件按典型應(yīng)用系統(tǒng)配置,采用模塊結(jié)構(gòu),并配有監(jiān)控程序,具有自開發(fā)能力。(3)通用機(jī)開發(fā)系統(tǒng):這是一種在通用計算機(jī)中加開發(fā)模板的開發(fā)系統(tǒng)。(4)模擬開發(fā)系統(tǒng):這是一種完全依靠軟件手段進(jìn)行開發(fā)的系統(tǒng)。例:數(shù)碼管數(shù)字時鐘電路的設(shè)計LED數(shù)碼管電子時鐘電路采用24h計時方式,時、分、秒采用六位數(shù)碼管顯示。該電路具有顯示時間、調(diào)整時間、省電狀態(tài)(數(shù)碼管不亮,時鐘不停)三種功能。采用AT89C51單片機(jī)實(shí)現(xiàn)。10.3單片機(jī)開發(fā)系統(tǒng)應(yīng)用實(shí)例1.系統(tǒng)硬件電路的設(shè)計單片機(jī)控制的數(shù)碼管時鐘電路如圖1所示,它采用的是AT89C51單片機(jī),只用了P1口和P2口,P0、P3口可用于擴(kuò)展顯示年、月、日等功能。為了簡化硬件電路,LED顯示采用動態(tài)掃描方式實(shí)現(xiàn),P1口輸出段碼數(shù)據(jù),P2.0~P2.5端作掃描輸出控制端,P2.7作功能轉(zhuǎn)換按鍵輸入端。LED采用共陽極數(shù)碼管,由三極管9012提供驅(qū)動電流。為了提高計時精度,所采用的晶振頻率為12MHz。圖1AT89C51數(shù)字時鐘電路圖(圖中三極管極性畫反)2.系統(tǒng)軟件的設(shè)計1)主程序主程序功能主要是初始化、正常顯示時間和判斷功能轉(zhuǎn)換鍵。顯示時間調(diào)用顯示子程序。當(dāng)P2.7端口按鍵按下時,轉(zhuǎn)入調(diào)時功能程序。主程序流程圖如圖10-7所示。圖10-7主程序流程圖2)顯示子程序數(shù)碼管顯示的數(shù)據(jù)存放在50H~55H內(nèi)存單元中,其中50H、51H單元存放秒數(shù)據(jù),52H、53H單元存放分?jǐn)?shù)據(jù),54H、55H單元存放時數(shù)據(jù)。時間數(shù)據(jù)采用BCD碼表示,對應(yīng)的顯示用段碼表存放在ROM中。十時時十分分十秒秒55H54H53H52H51H50H顯示緩沖區(qū)3)定時器T0中斷服務(wù)程序時鐘的最小計時單位是秒,60s進(jìn)位1min,60min進(jìn)位1h。定時器T0用于產(chǎn)生最小單位1s,定時時間為50ms(時間初值為3CB0H),中斷累計20次即為1s。計數(shù)單元中的十進(jìn)制BCD數(shù)每逢60進(jìn)位。程序流程圖如圖10-8所示。計時單元十時時十分分十秒秒59H58H57H56H51H50H圖10-8T0中斷服務(wù)程序4)定時器T1中斷服務(wù)程序進(jìn)行時間調(diào)整時,正在被調(diào)整的時間以閃爍形式表現(xiàn),定時器T1用于產(chǎn)生閃爍的時間間隔,定時時間為50ms(時間初值為3CB0H),中斷累計6次即為0.3s。即每隔0.3s閃爍一次(設(shè)置閃爍位標(biāo)志02H,02H為0時顯示單元正常,02H為1時顯示單元熄滅,)。程序流程圖略。5)調(diào)時功能程序
調(diào)整時間程序的方法是:按下功能鍵,當(dāng)按下時間小于1s時,進(jìn)入省電狀態(tài),大于1s時,進(jìn)入調(diào)分狀態(tài),等待操作,此時計時器停止走動。當(dāng)再次按鍵時,若按鍵時間小于0.5s,則時間加1min(置調(diào)分鐘位標(biāo)志01H為0);若按鍵時間大于0.5s,則進(jìn)入小時調(diào)整狀態(tài)(置調(diào)小時位標(biāo)志01H為1)。在小時調(diào)整狀態(tài)下,若按鍵時間小于0.5s,則時間加1h,若按鍵時間大于0.5s,則退出調(diào)整狀態(tài),時鐘繼續(xù)走動。程序流程圖略。6)延時程序系統(tǒng)使用三個延時程序。因?yàn)橄到y(tǒng)是動態(tài)顯示,為了確保系統(tǒng)在有效顯示時間范圍內(nèi)(約50ms)必須執(zhí)行顯示程序,所以0.5s的延時程序是通過執(zhí)行顯示程序約81遍實(shí)現(xiàn)的。程序如下: ORG0000H AJMPMAINT ;轉(zhuǎn)主程序 NOP ORG000BH AJMPINT01 ;轉(zhuǎn)定時器T0中斷程序NOPORG001BHAJMPINT11;轉(zhuǎn)定時器T1中斷程序NOP******主程序******MAINT: MOVR0,#7FH;00H~7FH單元清零CLRAWZ1:MOV@R0,ADJNZR0,WZ1MOVSP,#30H;置堆棧指針MOV 5AH,#0AH;放入“熄滅符”數(shù)據(jù)MOVTMOD,#11H;設(shè)T0,T1為16位定時器MOVTL0,#0B0H ;置50ms定時初值MOV TH0,#3CHMOV TL1,#0B0HMOV TH1,#3CHSETB EA ;開中斷SETB ET0 ;允許T0中斷SETB TR0 ;啟動T0MOVR4,#14H;用于產(chǎn)生1s定時MAINT1: LCALL XSZCX ;調(diào)用顯示子程序JNBP2.7,SJTZ0;功能鍵按下,進(jìn)入調(diào)時程序SJMP MAINT1SJTZ0: LCALL XSZCX;通過調(diào)用顯示時間程序延時消抖動JNB P2.7,SJTZ1SJMP MAINT1;功能鍵沒有按下,顯示時間SJTZ1:CLRET0;關(guān)閉T0中斷 CLRTR0;關(guān)閉T0LCALLYS1S;調(diào)用1s延時程序JBP2.7,KMTES;按鍵時間小于1s,進(jìn)入省電狀態(tài)MOV R2,#06H;進(jìn)入調(diào)時狀態(tài),置閃爍定時初值SETB ET1;允許T1中斷SETB TR1 ;啟動T1XYZ2:JNBP2.7,XYZ1;P2.7端為0,等待CLR01H ;置調(diào)分標(biāo)志位為1XYZ4:JBP2.7,XYZ3;等待鍵按下LCALLYS05S ;延時0.5s JNBP2.7,XYZHH;按鍵時間大于0.5s,轉(zhuǎn)到調(diào)小時狀態(tài)MOVR0,#53H;按鍵時間小于0.5s,進(jìn)入調(diào)分狀態(tài)LCALLADD1;調(diào)時間加1子程序MOVA,R3;取要調(diào)整的單元數(shù)據(jù)CLRCCJNEA,#60H,QWE;調(diào)整單元數(shù)據(jù)與60比較QWE:JCXYZ4;小于60轉(zhuǎn)到XYZ4循環(huán)CLR A;大于或等于60,清零MOV @R0,ADEC R0MOV @R0,ACLR CAJMP XYZ4 ;轉(zhuǎn)到XYZ4循環(huán)KMTES:SETBET0;省電狀態(tài),開T0中斷SETBTR0;啟動T0(開時鐘)KMA:JBP2.7,$;無按鍵按下,等待LCALLXSZCX;通過調(diào)用顯示時間程序延時消抖動JBP2.7,KMA;是干擾返回等待KMA1: JNBP2.7,$;等待鍵釋放LJMPMAINT1;返回主程序,顯示時間XYZHH: JNBP2.7,XYZ5;等待鍵釋放SETB01H;置調(diào)小時標(biāo)志位XYZ6:JBP2.7,XYZ7;等待鍵按下LCALLYS05S;有鍵按下,延時0.5sJNBP2.7,XYZOUT;按下時間大于0.5s,退出調(diào)整狀態(tài)MOVR0,#55H;小于0.5s,調(diào)整小時LCALLADD1;調(diào)加1子程序MOVA,R3CLRCCJNEA,#24H,KMB1;計時單元與24比較KMB1:JCXYZ6,;小于24轉(zhuǎn)XYZ6循環(huán)CLRA;大于或等于24,則清零MOV@R0,ADECR0MOV@R0,AAJMPXYZ6 ;轉(zhuǎn)XYZ6循環(huán)XYZOUT: JNBP2.7,XYZOUT1;退出調(diào)時狀態(tài),等待鍵釋放LCALL XSZCX;通過調(diào)用顯示程序延時消抖動JNBP2.7,XYZOUT ;是抖動,返回XYZOUT等待MOV 20H,#00H;清調(diào)時標(biāo)志位CLR TR1 ;關(guān)閉T1CLR ET1 ;關(guān)T1中斷SETB TR0 ;啟動T0SETB ET0 ;開T0中斷LJMP MAINT1 ;返回主程序XYZ1:LCALLXSZCX ;鍵釋放等待時,調(diào)用顯示子程序AJMP XYZ2;防止此時無時鐘顯示XYZ3:LCALL XSZCXAJMP XYZ4XYZ5:LCALL XSZCXAJMP XYZHHXYZ7:LCALL XSZCXAJMP XYZ6XYZOUT1:LCALLXSZCXAJMP XYZOUT
******顯示子程序******XSZCX:MOVR1,#50H;顯示數(shù)據(jù)首址 MOVR5,#0FEH;掃描控制字初值MAXY:MOVA,R5;掃描控制字送AMOVP2,A;輸出掃描控制字MOVA,@R1;取顯示數(shù)據(jù)MOVDPTR,#ABC;取段碼表首地址MOVCA,@A+DPTR;取對應(yīng)段碼MOVP1,A;P1口輸出段碼LCALLYS1MS;延時1ms
INCR1;顯示地址增1MOVA,R5;掃描控制字送AJNB ACC.5,ENDOUT;ACC.5為0時一;次顯示結(jié)束RLA ;控制字左移MOV R5,A;制字送回R5中AJMP MAXY;循環(huán)顯示下一個數(shù)據(jù)ENDOUT:MOVP2,#0FFH;一次顯示結(jié);束,P2口復(fù)位MOVP1,#0FFH;P1口復(fù)位RET ;子程序返回
******T0中斷服務(wù)程序******INT01:PUSHACC;保護(hù)現(xiàn)場PUSHPSWCLRET0;關(guān)T0中斷CLRTR0;關(guān)定時器T0MOV A,#0B7H;修正中;斷響應(yīng)時間ADD A,TL0MOV TL0,A
MOVA,#3CHADDCA,TH0SETBTR0 ;啟動定時器T0DJNZR4,INT0U;20次中斷未到退出中;斷AD1:MOVR4,#14H;R4重新賦值MOVR0,#51H;指向秒計時單元(50H,51H)LCALLADD1;調(diào)用加1s程序MOVA,R3 ;秒數(shù)據(jù)放入ACLR C ;清進(jìn)位標(biāo)志CJNEA,#60H,AD2;小于60s嗎AD2:JC INT0U ;小于60s退出中斷CLRA;大于或等于60s,清秒計數(shù)單元MOV@R0,ADECR0MOV@R0,AMOVR0,#57H;指向分計時單元;(56H,57H)ACALLADD1;調(diào)用加1min程序MOVA,R3;分?jǐn)?shù)據(jù)放入ACLRCCJNEA,#60H,AD3;小于60min嗎AD3:JCINT0U;小于60min退出中斷CLRA;大于或等于60min,清分計數(shù)單元MOV@R0,ADECR0MOV@R0,AMOVR0,#59H;指向小時計時單元;(58H,59H)ACALLADD1 ;調(diào)用加1h程序MOVA,R3 ;小時數(shù)據(jù)放入ACLRCCJNEA,#24H,AD4 ;小于24h嗎AD4:JCINT0U ;小于24h退出中斷CLRA;大于或等于24h清小時計數(shù)單元MOV@R0,ADECR0MOV@R0,AINT0U:MOV52H,56H;中斷退出時將MOV53H,57H;分、時計時單元數(shù)MOV54H,58H;據(jù)移入對應(yīng)顯示MOV55H,59H;單元
POPPSW ;恢復(fù)現(xiàn)場POPACCSETBET0 ;開放T0中斷RETI ;中斷返回******T1中斷服務(wù)程序******INT11:PUSH ACC;保護(hù)現(xiàn)場PUSH PSWMOVTL1,#0B0H ;裝定時器T1初值MOVTH1,#3CHDJNZR2,INT1U;0.3s未到退出中斷MOVR2,#06H;重裝0.3s定時用初值CPL02H;0.3s定時到,對閃爍標(biāo)志取反JB02H,CCC1;02H位為1時顯示單元“熄滅”MOV52H,56H;02H位為0時顯示正常MOV 53H,57HMOV54H,58HMOV55H,59HINT1U:POPPSW ;恢復(fù)現(xiàn)場POPACCRETI ;退出中斷CCC1:JB01H,CCC2;01H位為1時轉(zhuǎn)小時熄滅控制MOV52H,5AH;01H位為0時“熄滅符”放入分計時單元MOV53H,5AHMOV54H,58HMOV55H,59HAJMPINT1U ;轉(zhuǎn)中斷退出CCC2:MOV52H,56H;01H位為1時“熄滅符”放入小時計時單元 MOV53H,57HMOV54H,5AHMOV55H,5AHAJMPINT1U ;轉(zhuǎn)中斷退出ADD1:MOVA,@R0;取出現(xiàn)計時數(shù)據(jù)放入ADECR0;指向前一單元
SWAP A;A中高4位與低4位互換ORLA,@R0;前一單元中數(shù)據(jù)放入A中低4位ADDA,#01H ;A加1 DAA ;十進(jìn)制調(diào)整MOVR3,A ;移入R3寄存器ANLA,#0FH ;高4位變0MOV@R0,A;放回前一地址單元MOVA,R3;取回R3中暫存數(shù)據(jù)INCR0 ;指向當(dāng)前地址單元SWAPA;A中高4位與低4位互換ANLA,#0FH ;高4位變0
MOV@R0,A;數(shù)據(jù)存入當(dāng)前地址單元RET ;子程序返回******延時子程序******YS1MS:MOVR6,#14H;延時1ms子程序YS1:MOVR7,#19HYS2:DJNZR7,YS2DJNZR6,YS1RETYS1S:LCALLYS05S;延時1s子程序LCALLYS05SRETYS05S:MOVR3,#51H;延時0.5s子程序YS05S1:LCALL XSZCXDJNZR3,YS05S1RETABC:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH END例:單片機(jī)低頻頻率測量儀
思路:利用片內(nèi)定時器完成1s定時,在此時間內(nèi)計量被測信號的周期數(shù)。單片機(jī)采用89C51,用4位數(shù)碼管顯示頻率值,被測信號經(jīng)整形后送入單片機(jī)外部中斷1,在被測信號下降沿或低電平時引起中斷,以累計被測脈沖。晶振選用6MHZ。
1、硬件電路
2、程序編制設(shè)計思想:
程序分為三部分,各完成相應(yīng)的任務(wù)。主程序任務(wù):
初始化,顯示緩沖區(qū)頻率值。
T0中斷服務(wù)程序任務(wù):
定時1s時間,將測量值送顯示緩沖區(qū)。
INT1外部中斷服務(wù)程序:
對被測信號下降沿計數(shù)。
①主程序設(shè)計:初始化包括設(shè)置T0的工作方式、定時時間初值、中斷優(yōu)先級、外部中斷方式、中斷允許等。顯示根據(jù)電路采用動態(tài)掃描顯示方式。②T0中斷服務(wù)程序設(shè)計:要實(shí)現(xiàn)1S定時,由于機(jī)器周期為2us,需計量5×105個機(jī)器周期。但單片機(jī)用16位定時器最大也只能定時131ms,不能滿足定時要求。為此,必須借助軟件來擴(kuò)展。采用定時10ms,定時倍數(shù)為100倍的方法定時1s。為使定時更加準(zhǔn)確,可把T0設(shè)置成高中斷優(yōu)先級。定時數(shù)10ms的定時數(shù)是5000D,時間初為0EC78H。③/INT1中斷服務(wù)程序設(shè)計:外部中斷工作于計數(shù)方式,每檢測到被測信號的下跳沿就引起一次中斷。在中斷服務(wù)程序中,把指定寄存器內(nèi)容加一,并作十進(jìn)制調(diào)整。本例中,選用R5、R4作為4位十進(jìn)制(BCD)計數(shù)器,用于INT1服務(wù)程序中計數(shù)。R5存放千位和百位數(shù),R4存
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧中醫(yī)藥大學(xué)《C程序設(shè)計及醫(yī)學(xué)應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 蘭州理工大學(xué)《醫(yī)學(xué)實(shí)驗(yàn)基本技術(shù)與設(shè)備》2023-2024學(xué)年第一學(xué)期期末試卷
- 集美大學(xué)《口腔人文醫(yī)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南文理學(xué)院芙蓉學(xué)院《社會保障發(fā)展前沿》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南高速鐵路職業(yè)技術(shù)學(xué)院《世界建筑裝飾風(fēng)格與流派》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶郵電大學(xué)《計算機(jī)學(xué)科課程教學(xué)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶健康職業(yè)學(xué)院《工程造價及管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 中原工學(xué)院《軟件質(zhì)量保證與測試實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江農(nóng)林大學(xué)暨陽學(xué)院《野生動植物保護(hù)與管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 中國石油大學(xué)(華東)《表演基礎(chǔ)元素訓(xùn)練》2023-2024學(xué)年第一學(xué)期期末試卷
- 建設(shè)項目施工現(xiàn)場春節(jié)放假期間的安全管理方案
- TSEESA 010-2022 零碳園區(qū)創(chuàng)建與評價技術(shù)規(guī)范
- GB/T 19867.5-2008電阻焊焊接工藝規(guī)程
- 2023年市場部主管年終工作總結(jié)及明年工作計劃
- 國有資產(chǎn)出租出借審批表(學(xué)校事業(yè)單位臺賬記錄表)
- 30第七章-農(nóng)村社會治理課件
- 考研考博-英語-東北石油大學(xué)考試押題三合一+答案詳解1
- 出國學(xué)生英文成績單模板
- 植物細(xì)胞中氨基酸轉(zhuǎn)運(yùn)蛋白的一些已知或未知的功能
- 山東省高等學(xué)校精品課程
- 三菱張力控制器LE-40MTA-E說明書
評論
0/150
提交評論