




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、沈陽理工大學(xué)學(xué)士學(xué)位論文第一章緒論11.1課題的背景及意義11.2 主要工作及論文結(jié)構(gòu)21.2.1 主要工作21.2.2本文結(jié)構(gòu)安排2第二章 硬件設(shè)計(jì)32.1 總體方案的設(shè)計(jì)32. 2電源電路52. 3時(shí)鐘電路62. 4 復(fù)位電路72. 5 鍵盤電路8第三章 系統(tǒng)所使用芯片的介紹103.1 tg12864液晶顯示器103.1.1 概述103.1.2 特性103.1.3 外形尺寸113.1.4 硬件說明113.2 sm8952單片機(jī)簡介163.2.1程序存儲(chǔ)器163.2.2 數(shù)據(jù)存儲(chǔ)器173.2.3特殊功能寄存器(sfr)173.2.4 sm8952單片機(jī)輸入輸出口203.2.5 sm8952定
2、時(shí)/計(jì)數(shù)器213.2.6看門狗定時(shí)器(wdt)223.2.7 sm8962的中斷系統(tǒng)22第四章 系統(tǒng)軟件設(shè)計(jì)244.1 單片機(jī)變成軟件的發(fā)展244.2 程序的設(shè)計(jì)254.2.1 主程序254.2.2波形發(fā)生程序264.2.3 鍵盤掃描程序284.2.4 顯示程序29第五章 系統(tǒng)調(diào)試305.1 硬件調(diào)試305.1.1 保證電源的穩(wěn)定可靠305.1.2 對(duì)受損芯片的判斷305.1.3 結(jié)合軟件檢查短路與虛焊305.2 軟件調(diào)試305.2.1 軟件的開發(fā)環(huán)境medwin315.2.2 程序調(diào)試315.2.3 調(diào)式結(jié)果32結(jié)論34致 謝35參考文獻(xiàn)36附錄37外文文獻(xiàn)及翻譯37第一章緒論1.1課題的背
3、景及意義目前工廠使用大量的非同步電氣設(shè)備,無功功率損耗變化大、不穩(wěn)定,如塑料工廠使用的擠塑機(jī)、注塑機(jī),以及其他行業(yè)的升降機(jī)、沖壓機(jī)、電梯、破碎機(jī)、電焊機(jī)、礦山傳送帶等。負(fù)載具有快速或極快的無功功率變化,如汽車制造廠、船舶制造廠等點(diǎn)焊機(jī)、縫焊機(jī)、焊接機(jī)的無功補(bǔ)償。汽車制造廠點(diǎn)焊機(jī)負(fù)荷變化極為快速,并且引發(fā)大量的無功功率,總電壓值的減少會(huì)導(dǎo)致電焊質(zhì)量差并影響焊接的生產(chǎn)效率,穩(wěn)定電流能提高焊接質(zhì)量、消除閃爍,并充分地利用現(xiàn)有設(shè)備、減少基本費(fèi)用開支。無功功率補(bǔ)償裝置在電子供電系統(tǒng)中所承擔(dān)的作用是提高電網(wǎng)的功率因數(shù),穩(wěn)定電流,降低供電變壓器及輸送線路的損耗,提高供電效率,改善供電環(huán)境。所以無功功率補(bǔ)償裝
4、置在電力供電系統(tǒng)中處在一個(gè)不可缺少的非常重要的位置。合理的選擇補(bǔ)償裝置,可以做到最大限度的減少網(wǎng)絡(luò)的損耗,使電網(wǎng)質(zhì)量提高。反之,如選擇或使用不當(dāng),可能造成供電系統(tǒng),電壓波動(dòng),諧波增大等諸多因素。7無功功率補(bǔ)償裝置按投切方式分類可分為延時(shí)投切方式和瞬時(shí)投切方式兩種。延時(shí)投切方式即人們熟稱的靜態(tài)補(bǔ)償方式。這種投切依靠于傳統(tǒng)的接觸器的動(dòng)作,當(dāng)然用于投切電容的接觸器專用的,它具有抑制電容的涌流作用,延時(shí)投切的目的在于防止接觸器過于頻繁的動(dòng)作時(shí),電容器造成損壞,更重要的是防備電容不停的投切導(dǎo)致供電系統(tǒng)振蕩,這是很危險(xiǎn)的。當(dāng)電網(wǎng)的負(fù)荷呈感性時(shí),如電動(dòng)機(jī)、電焊機(jī)等負(fù)載,這時(shí)電網(wǎng)的電流滯后電壓一個(gè)角度。當(dāng)負(fù)荷
5、呈容性時(shí),如過量的補(bǔ)償裝置的控制器,這是電網(wǎng)的電流超前于電壓的一個(gè)角度,即功率因數(shù)超前或滯后是指電流與電壓的相位關(guān)系。通過補(bǔ)償裝置的控制器檢測供電系統(tǒng)的物理量,來決定電容器的投切,這個(gè)物理量可以是功率因數(shù)或無功電流或無功功率。下面就功率因數(shù)型舉例說明。當(dāng)這個(gè)物理量滿足要求時(shí),如cos超前且0.98,滯后且0.95,在這個(gè)范圍內(nèi),此時(shí)控制器沒有控制信號(hào)發(fā)出,這時(shí)已投入的電容器組不退出,沒投入的電容器組也不投入。當(dāng)檢測到cos不滿足要求時(shí),如cos滯后且0.95,那么將一組電容器投入,并繼續(xù)監(jiān)測cos如還不滿足要求,控制器則延時(shí)一段時(shí)間(延時(shí)時(shí)間可整定),再投入一組電容器,直到全部投入為止。當(dāng)檢測
6、到超前信號(hào)如cos0.98,即呈容性載荷時(shí),那么控制器就逐一切除電容器組。要遵循的原則就是:先投入的那組電容器組在切除時(shí)就要先切除。綜上所述可知功率因數(shù)檢測的準(zhǔn)確與否是一臺(tái)功率因數(shù)補(bǔ)償器好壞與否的重要標(biāo)準(zhǔn)之一,本設(shè)計(jì)的目的就是為一臺(tái)功率因數(shù)補(bǔ)償器提供基準(zhǔn)功率因數(shù),從而測試率因數(shù)補(bǔ)償器檢測的功率因數(shù)是否準(zhǔn)確。1.2 主要工作及論文結(jié)構(gòu)1.2.1 主要工作本文基于目前功率因數(shù)補(bǔ)償技術(shù),提出了自己的設(shè)計(jì)方案,并作了可行性分析后,開發(fā)功率因數(shù)發(fā)生器。本人的具體工作如下:1設(shè)計(jì)出了功率因數(shù)發(fā)生器的整個(gè)硬件電路,包括顯示電路的設(shè)計(jì)、控制鍵盤的設(shè)計(jì)、電源電路的設(shè)計(jì)等,并進(jìn)行原理圖的設(shè)計(jì)。2 基于medwin
7、的開發(fā)環(huán)境,進(jìn)行了功率因數(shù)發(fā)生器的應(yīng)用軟件設(shè)計(jì)。3 在硬件軟件完成的基礎(chǔ)上進(jìn)行了功率因數(shù)發(fā)生器的總調(diào)。1.2.2本文結(jié)構(gòu)安排本文是按照工程的進(jìn)展順序來安排章節(jié)的內(nèi)容,一共分為五章,各章的內(nèi)容安排如下:第一章,對(duì)課題的研究意義和工作內(nèi)容進(jìn)行了介紹。第二章,具體介紹了功率因數(shù)發(fā)生器的硬件設(shè)計(jì)及開發(fā)過程。第三章,具體介紹了應(yīng)用各芯片的功能。第四章,具體介紹了應(yīng)用軟件的開發(fā)過程。第五章,總體調(diào)試的過程46第二章 硬件設(shè)計(jì)2.1 總體方案的設(shè)計(jì)功率因數(shù)型無功功率補(bǔ)償控制器的信號(hào)采集過程基本上如圖2.1所示。首先強(qiáng)正弦電壓變送器電流變送器uacib檢波裝置弱正弦信號(hào)檢波裝置信號(hào)采集裝置方波信號(hào)方波信號(hào)cp
8、u液晶顯示屏控制電容投切弱正弦信號(hào)圖2.1 功率因數(shù)的采集交流電uac和ib分別經(jīng)過電壓變送器和電流變送器轉(zhuǎn)換成弱正弦交流電信號(hào)。然后經(jīng)過檢波裝置的處理弱正弦交流電信號(hào)就被轉(zhuǎn)換成了接近于方波信號(hào)。再然后這些接近于方波的信號(hào)電信號(hào)經(jīng)過無功功率補(bǔ)償控制器的信號(hào)采集裝置的處理傳送給了功功無率補(bǔ)償控制器的cpu 。cpu對(duì)這些信號(hào)進(jìn)行處理和計(jì)算后,將采集到的功率因數(shù)的信息悉數(shù)顯示到液晶顯示器上并同時(shí)對(duì)功功無率補(bǔ)償控制器的電容投切裝置進(jìn)行控制,使其能夠投切大小合適的電容。 綜上所述可知,要想得知一臺(tái)無功功率補(bǔ)償控制器測得的功率因數(shù)是否準(zhǔn)確那么就需要為其提供一臺(tái)能夠產(chǎn)生標(biāo)準(zhǔn)功率因數(shù)的儀器。跟據(jù)功率因數(shù)型無
9、功功率補(bǔ)償控制器的信號(hào)采集過程可知,要想檢測一臺(tái)無功功率補(bǔ)償控制器測得的功率因數(shù)是否準(zhǔn)確功率因數(shù)發(fā)生器產(chǎn)生的信號(hào)有三種。第一種方法是讓功率因數(shù)發(fā)生器產(chǎn)生強(qiáng)正弦交流信號(hào)讓無功功率補(bǔ)償控制器來檢測。這種方法的好處是比較直接,接近無功功率補(bǔ)償控制器真實(shí)工作時(shí)所采集的信號(hào)。其缺點(diǎn)是,產(chǎn)生標(biāo)準(zhǔn)的強(qiáng)正弦交流信號(hào)在技術(shù)上要求比較高,即使能夠制造那么它的成本也是相當(dāng)高昂的,所以我們不采用這種方法。第二種方法是讓功率因數(shù)發(fā)生器產(chǎn)生弱正弦交流信號(hào)讓無功功率補(bǔ)償控制器來檢測。這種方法的技術(shù)要求和成本同上一種方法相比雖然較低,但其成本總體上看仍然較高,所以仍不采用。最后一種一種方法是我們所采用的,即讓功率因數(shù)發(fā)生器產(chǎn)
10、生方波信號(hào)讓無功功率補(bǔ)償控制器來檢測。這種方法雖然簡單但十分有效,因?yàn)闊o功功率補(bǔ)償控制器的電壓變送器和電流變送器和檢波裝置對(duì)無功功率補(bǔ)償控制器檢測功率因數(shù)的精度的影響比較少,所以可以忽略 。這種方法不但簡單有效而且其成本也低較低只有幾十塊錢,所以確實(shí)可行。功率因數(shù)補(bǔ)償器的基本結(jié)構(gòu)如圖2.2控制鍵盤sm8952tg12864液晶顯示屏uacib 圖2.2 功率因數(shù)發(fā)生器該設(shè)備基本具備以下功能:1、由單片機(jī)產(chǎn)生兩列周期相同相位差可調(diào)的方波,用以表示uac和ib。2、能夠在tg12864液晶屏上顯示器顯示uac和ib的相角,uac和ib的波形,功率因數(shù)cos,uac超前 ib的時(shí)間。3、擁有一個(gè)23
11、鍵盤能對(duì)單片機(jī)產(chǎn)生的波形和和顯示器顯示的內(nèi)容進(jìn)行控制。2. 2電源電路由于sm8952單片機(jī)需要為其提供電壓為5v的直流電來維持它正常工作,而通常我們所用的220v交流電,所以必須設(shè)計(jì)一個(gè)電源裝置將220v交流電轉(zhuǎn)換成單片機(jī)正常工作所需要的5v直流電 。具體電源電路詳見下圖2.3。圖2.3 電源電路220v交流電經(jīng)過小型變壓器轉(zhuǎn)換成7.5低壓交流電由ac1端和ac2端輸入,然后經(jīng)過整流電路整流。整流電路的任務(wù)是將ac1端和ac2端接入的正弦波交流電變換成直流電。完成這一電路主要是靠二極管的單向?qū)щ娮饔?,因此二極管是構(gòu)成整流電路的關(guān)鍵元件。在小功率整流電路中,常見的幾種整流電路有半波、全波、橋式
12、和倍壓整流電路。為了取得更好的整流效果,我們采用了橋式整流電路,整流器件我 們選擇整流芯片db107。8由于經(jīng)過整流裝置轉(zhuǎn)換成的直流電其脈動(dòng)成分仍然較大所以在db107后加了一個(gè)電容c01用來消除電流中的脈動(dòng)。然后在c01后面接了一個(gè)7805穩(wěn)壓模塊,經(jīng)過7805輸出的直流電便是單片機(jī)工作時(shí)所需要的5v直流電了。2. 3時(shí)鐘電路sm8952單片機(jī)的時(shí)鐘信號(hào)通常用兩種電路形式得到:內(nèi)部振蕩方式和外部振蕩方式。在引腳xtal1和xtal2外接晶體振蕩器(簡稱晶振)或陶瓷諧振器,就構(gòu)成了內(nèi)部振蕩方式。由于單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)生振蕩時(shí)鐘脈沖。內(nèi)部振蕩方
13、式的外部電路如下圖2.4示。 圖2.4 時(shí)鐘電路圖中,電容器c4,c3起穩(wěn)定振蕩頻率、快速起振的作用,其電容值一般在5-30pf。在此電路中我們選用22pf的電容。晶振頻率的典型值為12mhz,我們采用11.0592 mhz。內(nèi)部振蕩方式所得的時(shí)鐘情號(hào)比較穩(wěn)定,實(shí)用電路中使用較多。sm8952單片機(jī)的指令時(shí)序 時(shí)序是用定時(shí)單位來描述的,sm8952的時(shí)序單位有四個(gè),它們分別是節(jié)拍、狀態(tài)、機(jī)器周期和指令周期,接下來我們分別加以說明。(1) 節(jié)拍與狀態(tài): 我們把振蕩脈沖的周期定義為節(jié)拍(為方便描述,用p表示),振蕩脈沖經(jīng)過二分頻后即得到整個(gè)單片機(jī)工作系統(tǒng)的時(shí)鐘信號(hào),把時(shí)鐘信號(hào)的周期定義為狀態(tài)(用s
14、表示),這樣一個(gè)狀態(tài)就有兩個(gè)節(jié)拍,前半周期相應(yīng)的節(jié)拍我們定義為1(p1),后半周期對(duì)應(yīng)的節(jié)拍定義為2(p2)。(2) 機(jī)器周期: mcs-51有固定的機(jī)器周期,規(guī)定一個(gè)機(jī)器周期有6個(gè)狀態(tài),分別表示為s1-s6,而一個(gè)狀態(tài)包含兩個(gè)節(jié)拍,那么一個(gè)機(jī)器周期就有12個(gè)節(jié)拍,我們可以記著s1p1、s1p2s6p1、s6p2,一個(gè)機(jī)器周期共包含12個(gè)振蕩脈沖,即機(jī)器周期就是振蕩脈沖的12分頻,顯然,如果使用6mhz的時(shí)鐘頻率,一個(gè)機(jī)器周期就是2us,而如使用12mhz的時(shí)鐘頻率,一個(gè)機(jī)器周期就是1us。 (3)指令周期:執(zhí)行一條指令所需要的時(shí)間稱為指令周期,mcs-51的指令有單字節(jié)、雙字節(jié)和三字節(jié)的,所
15、以它們的指令周期不盡相同,也就是說它們所需的機(jī)器周期不相同,可能包括一到四個(gè)不等的機(jī)器周期。2. 4 復(fù)位電路當(dāng)sm8952系列單片機(jī)的復(fù)位引腳rst(全稱reset)出現(xiàn)2個(gè)機(jī)器周期以上的高電平時(shí),單片機(jī)就執(zhí)行復(fù)位操作。如果rst持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)。據(jù)應(yīng)用的要求,復(fù)位操作通常有兩種基本形式:上電復(fù)位和上電或開關(guān)復(fù)位。上電復(fù)位要求接通電源后,自動(dòng)實(shí)現(xiàn)復(fù)位操作。常用的上電復(fù)位電路如下圖2.5示。電源接通后,單片機(jī)自動(dòng)復(fù)位。 圖2.5復(fù)位電路根據(jù)實(shí)際操作的經(jīng)驗(yàn),c1=10 uf,r09=8.2k。單片機(jī)的復(fù)位操作使單片機(jī)進(jìn)入初始化狀態(tài),其中包括使程序計(jì)數(shù)器pc0000h,這表明
16、程序從0000h地址單元開始執(zhí)行。單片機(jī)冷啟動(dòng)后,片內(nèi)ram為隨機(jī)值,運(yùn)行中的復(fù)位操作不改變片內(nèi)ram區(qū)中的內(nèi)容,21個(gè)特殊功能寄存器復(fù)位后的狀態(tài)為確定值,見表2.1。 記住一些特殊功能寄存器復(fù)位后的主要狀態(tài),對(duì)于了解單片機(jī)的初態(tài),減少應(yīng)用程序中的韌始化部分是十分必要的。表中符號(hào)*為隨機(jī)狀態(tài);a00h,表明累加器已被清零; 表2.1 殊功能寄存器復(fù)位后的主要狀態(tài)特殊功能寄存器初始狀態(tài)特殊功能寄存器初始狀態(tài) a00htmod 00hb 00htcon00hpsw00hth000hsp00htl000hdpl00hth100hdph00htl100hp0p3ffhsbuf不定ip*00000bsc
17、on00hie0*00000bpcon0*bpsw00h,表明選寄存器0組為工作寄存器組;sp07h,表明堆棧指針指向片內(nèi)ram 07h字節(jié)單元,根據(jù)堆棧操作的先加后壓法則,第一個(gè)被壓入的內(nèi)容寫入到08h單元中;po-p3ffh,表明已向各端口線寫入1,此時(shí),各端口既可用于輸入又可用于輸出;ip00000b,表明各個(gè)中斷源處于低優(yōu)先級(jí);ie000000b,表明各個(gè)中斷均被關(guān)斷;系統(tǒng)復(fù)位是任何微機(jī)系統(tǒng)執(zhí)行的第一步,使整個(gè)控制芯片回到默認(rèn)的硬件狀態(tài)下。單片機(jī)的復(fù)位是由reset引腳來控制的,此引腳與高電平相接超過24個(gè)振蕩周期后,單片機(jī)即進(jìn)入芯片內(nèi)部復(fù)位狀態(tài),而且一直在此狀態(tài)下等待,直到reset
18、引腳轉(zhuǎn)為低電平后,才檢查ea引腳是高電平或低電平,若為高電平則執(zhí)行芯片內(nèi)部的程序代碼,若為低電平便會(huì)執(zhí)行外部程序。2. 5 鍵盤電路每個(gè)按鍵都有它的鍵值。矩陣的行線和列線分別通過兩并行接口和單片機(jī)通信。每個(gè)按鍵的狀態(tài)同樣需變成數(shù)字量“0”和“1”,開關(guān)的一端(列線)通過電阻接vcc,而接地是通過程序輸出數(shù)字“0”實(shí)現(xiàn)的。鍵盤處理程序的任務(wù)是:確定有無鍵按下,判斷哪一個(gè)鍵按下,鍵的功能是什么;還要消除按鍵在閉合或斷開時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼,使按鍵逐行動(dòng)態(tài)接地,另一個(gè)并行口輸入按鍵狀態(tài),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按鍵,通過軟件查表,查出該鍵的功能。圖2.6 鍵盤電路第
19、三章 系統(tǒng)所使用芯片的介紹3.1 tg12864液晶顯示器液晶顯示器(lcd)是一種被動(dòng)式顯示器,由于它的功耗低、抗干擾能力強(qiáng)、顯示界面效果良好,因而在低功耗的單片機(jī)系統(tǒng)中大量使用。2 目前市面上的lcd顯示屏種類繁多,我們選了tg12864。其在電路中的應(yīng)用如圖3.1。 圖3.1 液晶顯示電路3.1.1 概述 tg12864是一種圖形點(diǎn)陣液晶顯示器。它主要采用動(dòng)態(tài)驅(qū)動(dòng)原理由行驅(qū)動(dòng)控制器和列驅(qū)動(dòng)器兩部分組成了128(列)64(行)的全點(diǎn)陣液晶顯示。此顯示器采用了cob的軟封裝方式,通過導(dǎo)電橡膠和壓框連接lcd,使其壽命長,連接可靠。3.1.2 特性1.工作電壓為+5v10% ,可自帶驅(qū)動(dòng)lcd
20、所需的負(fù)電壓。2.全屏幕點(diǎn)陣,點(diǎn)陣數(shù)為128(列)64(行),可顯示8(/行)4(行)個(gè)(1616點(diǎn)陣)漢字,也可完成圖形,字符的顯示。3.與cpu接口采用5條位控制總線和8位并行數(shù)據(jù)總線輸入輸出,適配m6800系列時(shí)序。4.內(nèi)部有顯示數(shù)據(jù)鎖存器,自帶el驅(qū)動(dòng)。5.簡單的操作指令顯示開關(guān)設(shè)置,顯示起始行設(shè)置,地址指針設(shè)置和數(shù)據(jù)讀/寫等指令。3.1.3 外形尺寸表3.1 主要外形尺寸項(xiàng) 目標(biāo) 準(zhǔn) 尺 寸單 位模 塊 體 積54.050.06.5mm定 位 尺 寸49.045.0mm視 域43.529mm行 列 點(diǎn) 陣 數(shù)12864dots點(diǎn) 距 離0.320.39mm點(diǎn) 大 小0.280.35m
21、m3.1.4 硬件說明1. 引腳特性 表3.2 引腳特性引腳號(hào)引腳名稱級(jí) 別引 腳 功 能 描 述1gnd0v電源地2vcc+5v電源電壓3vo0-10vlcd驅(qū)動(dòng)負(fù)電壓,要求vdd-vo=13v4d/ih/l寄存器選擇信號(hào)5r/wh/l讀/寫操作選擇信號(hào)6eh/l使能信號(hào)7db0h/l八位三態(tài)并行數(shù)據(jù)總線8db19db210db311db412db513db614db715cs1h/l片選信號(hào),當(dāng)cs1=h時(shí),液晶左半屏顯示16cs2h/l片選信號(hào),當(dāng)cs2=h時(shí),液晶右半屏顯示17/resh/l復(fù)位信號(hào),低有效18vee-10v輸出-10v的負(fù)電壓(單電源供電)19swh/lsw=h時(shí),e
22、l能發(fā)光20ac60vel驅(qū)動(dòng)的輸入交流信號(hào)2. 原理簡圖 圖3.2 原理簡圖 3. 主要各部分詳解圖3.3 詳解圖(1) 顯示數(shù)據(jù)ram(ddram) ddram(6488 bits)是存儲(chǔ)圖形顯示數(shù)據(jù)的。此ram的每一位數(shù)據(jù)對(duì)應(yīng)顯示面板上一個(gè)點(diǎn)的顯示(數(shù)據(jù)為h)與不顯示(數(shù)據(jù)為l)。(2) i/o緩沖器(db0db7) i/o緩沖器為雙向三態(tài)數(shù)據(jù)緩沖器。是lcm(液晶顯示模塊)內(nèi)部總線與mpu總線的結(jié)合部。其作用是將兩個(gè)不同時(shí)鐘下工作的系統(tǒng)連接起來,實(shí)現(xiàn)通訊。i/o緩沖器在片選信號(hào)cs有效狀態(tài)下,i/o緩沖器開放,實(shí)現(xiàn)lcm(液晶顯示模塊)與mpu之間的數(shù)據(jù)傳遞。當(dāng)片選信號(hào)為無效狀態(tài)時(shí),i
23、/o緩沖器將中斷l(xiāng)cm(液晶顯示模塊)內(nèi)部總線與mpu數(shù)據(jù)總線的聯(lián)系,對(duì)外總線呈高阻狀態(tài),從而不影響mpu的其他數(shù)據(jù)操作功能。(3) 輸入寄存器輸入寄存器用于接收在mpu運(yùn)行速度下傳送給lcm(液晶顯示模塊)的數(shù)據(jù)并將其鎖存在輸入寄存器內(nèi),其輸出將在lcm(液晶顯示模塊)內(nèi)部工作時(shí)鐘的運(yùn)作下將數(shù)據(jù)寫入指令寄存器或顯示存儲(chǔ)器內(nèi)。(4) 輸出寄存器輸出寄存器用于暫存從顯示存儲(chǔ)器讀出的數(shù)據(jù),在mpu讀操作時(shí),輸出寄存器將當(dāng)前鎖存的數(shù)據(jù)通過i/o緩沖器送入mpu數(shù)據(jù)總線上。(5) 指令寄存器指令寄存器用于接收mpu發(fā)來的指令代碼,通過譯碼將指令代碼置入相關(guān)的寄存器或觸發(fā)器內(nèi)。(6) 狀態(tài)字寄存器 狀態(tài)
24、字寄存器是lcm(液晶顯示模塊)與mpu通訊時(shí)唯一的“握手”信號(hào)。狀態(tài)字寄存器向mpu表示了lcm(液晶顯示模塊)當(dāng)前的工作狀態(tài)。尤其是狀態(tài)字中的“忙”標(biāo)志位是mpu在每次對(duì)lcm(液晶顯示模塊)訪問時(shí)必須要讀出判別的狀態(tài)位。當(dāng)處于“忙”標(biāo)志位時(shí),i/o緩沖器被封鎖,此時(shí)mpu對(duì)lcm(液晶顯示模塊)的任何操作(除讀狀態(tài)字操作外)都將是無效的。(7) x地址寄存器x地址寄存器是一個(gè)三位頁地址寄存器,其輸出控制著ddram中8個(gè)頁面的選擇,也是控制著數(shù)據(jù)傳輸通道的八選一選擇器。x地址寄存器可以由mpu以指令形式設(shè)置。x地址寄存器沒有自動(dòng)修改功能,所以要想轉(zhuǎn)換頁面需要重新設(shè)置x地址寄存器的內(nèi)容。(
25、8) y地址計(jì)數(shù)器y地址計(jì)數(shù)器是一個(gè)6位循環(huán)加一計(jì)數(shù)器。它管理某一頁面上的64個(gè)單元。y地址計(jì)數(shù)器可以由mpu以指令形式設(shè)置,它和頁地址指針結(jié)合唯一選通顯示存儲(chǔ)器的一個(gè)單元,y地址計(jì)數(shù)器具有自動(dòng)加一功能。在顯示存儲(chǔ)器讀/寫操作后y地址計(jì)數(shù)將自動(dòng)加一。當(dāng)計(jì)數(shù)器加至3fh后循環(huán)歸零再繼續(xù)加一。(9) z地址計(jì)數(shù)器z地址計(jì)數(shù)器是一個(gè)6位地址計(jì)數(shù)器,用于確定當(dāng)前顯示行的掃描地址。z地址計(jì)數(shù)器具有自動(dòng)加一功能。它與行驅(qū)動(dòng)器的行掃描輸出同步,選擇相應(yīng)的列驅(qū)動(dòng)的數(shù)據(jù)輸出。(10) 顯示起始行寄存器顯示起始行寄存器是一個(gè)6位寄存器,它規(guī)定了顯示存儲(chǔ)器所對(duì)應(yīng)顯示屏上第一行的行號(hào)。該行的數(shù)據(jù)將作為顯示屏上第一行顯
26、示狀態(tài)的控制信號(hào)。3.2 sm8952單片機(jī)簡介3.2.1程序存儲(chǔ)器 一個(gè)微處理器能夠聰明地執(zhí)行某種任務(wù),除了它們強(qiáng)大的硬件外,還需要它們運(yùn)行的軟件,其實(shí)微處理器并不聰明,它們只是完全按照人們預(yù)先編寫的程序而執(zhí)行之。那么設(shè)計(jì)人員編寫的程序就存放在微處理器的程序存儲(chǔ)器中。程序相當(dāng)于給微處理器處理問題的一系列命令。其實(shí)程序和數(shù)據(jù)一樣,都是由機(jī)器碼組成的代碼串。只是程序代碼則存放于程序存儲(chǔ)器中。 sm8952具有64kb程序存儲(chǔ)器尋址空間,它是用于存放用戶程序、數(shù)據(jù)和表格等信息。對(duì)于內(nèi)部無rom的8031單片機(jī),它的程序存儲(chǔ)器必須外接,空間地址為64kb,此時(shí)單片機(jī)的端必須接地。強(qiáng)制cpu從外部程序
27、存儲(chǔ)器讀取程序。對(duì)于內(nèi)部有rom的sm8952等單片機(jī),正常運(yùn)行時(shí),則需接高電平,使cpu先從內(nèi)部的程序存儲(chǔ)中讀取程序,當(dāng)pc值超過內(nèi)部rom的容量時(shí),才會(huì)轉(zhuǎn)向外部的程序存儲(chǔ)器讀取程序。 sm8952片內(nèi)有8kb的程序存儲(chǔ)單元,其地址為0000h1fffh,單片機(jī)啟動(dòng)復(fù)位后,程序計(jì)數(shù)器的內(nèi)容為0000h,所以系統(tǒng)將從0000h單元開始執(zhí)行程序。但在程序存儲(chǔ)中有些特殊的單元,這在使用中應(yīng)加以注意。 其中一組特殊是0000h0002h單元,系統(tǒng)復(fù)位后,pc為0000h,單片機(jī)從0000h單元開始執(zhí)行程序,如果程序不是從0000h單元開始,則應(yīng)在這三個(gè)單元中存放一條無條件轉(zhuǎn)移指令,讓cpu直接去執(zhí)行
28、用戶指定的程序。 另一組特殊單元是0003h002ah,這40個(gè)單元各有用途,它們被均勻地分為五段,它們的定義如表3.3表3.30003h000ah外部中斷0中斷地址區(qū)000bh0012h定時(shí)/計(jì)數(shù)器0中斷地址區(qū)0013h001ah外部中斷1中斷地址區(qū)001bh0022h定時(shí)/計(jì)數(shù)器1中斷地址區(qū)0023h002ah串行中斷地址區(qū)可見以上的40個(gè)單元是專門用于存放中斷處理程序的地址單元,中斷響應(yīng)后,按中斷的類型,自動(dòng)轉(zhuǎn)到各自的中斷區(qū)去執(zhí)行程序。因此以上地址單元不能用于存放程序的其他內(nèi)容,只能存放中斷服務(wù)程序。但是通常情況下,每段只有8個(gè)地址單元是不能存下完整的中斷服務(wù)程序的,因而一般也在中斷響應(yīng)
29、的地址區(qū)安放一條無條件轉(zhuǎn)移指令,指向程序存儲(chǔ)器的其它真正存放中斷服務(wù)程序的空間去執(zhí)行,這樣中斷響應(yīng)后,cpu讀到這條轉(zhuǎn)移指令,便轉(zhuǎn)向其他地方去繼續(xù)執(zhí)行中斷服務(wù)程序。3.2.2 數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器也稱為隨機(jī)存取數(shù)據(jù)存儲(chǔ)器。sm8952單片機(jī)的數(shù)據(jù)存儲(chǔ)器在物理上和邏輯上都分為兩個(gè)地址空間,一個(gè)是內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)和一個(gè)外部數(shù)據(jù)存儲(chǔ)區(qū)。sm8952內(nèi)部ram有256個(gè)字節(jié)的用戶數(shù)據(jù)存儲(chǔ),它們是用于存放執(zhí)行的中間結(jié)果和過程數(shù)據(jù)的。sm8952的數(shù)據(jù)存儲(chǔ)器均可讀寫,部分單元還可以位尋址。 sm8952內(nèi)部ram共有256個(gè)單元,這256個(gè)單元共分為兩部分。其一是地址從00h7fh單元(共128個(gè)字節(jié))為用
30、戶數(shù)據(jù)ram。從80hffh地址單元(也是128個(gè)字節(jié))為特殊寄存器(sfr)單元。 在00h1fh共32個(gè)單元中被均勻地分為四塊,每塊包含八個(gè)8位寄存器,均以r0r7來命名,我們常稱這些寄存器為通用寄存器。這四塊中的寄存器都稱為r0r7,那么在程序中怎么區(qū)分和使用它們呢?聰明的intel工程師們又安排了一個(gè)寄存器程序狀態(tài)字寄存器(psw)來管理它們,cpu只要定義這個(gè)寄存的psw的第3和第4位(rs0和rs1),即可選中這四組通用寄存器內(nèi)部ram的20h2fh單元為位尋址區(qū),既可作為一般單元用字節(jié)尋址,也可對(duì)它們的位進(jìn)行尋址。位尋址區(qū)共有16個(gè)字節(jié),128個(gè)位,位地址為00h7fh。cpu能
31、直接尋址這些位,執(zhí)行例如置“1”、清“0”、求“反”、轉(zhuǎn)移,傳送和邏輯等操作。我們常稱sm8952具有布爾處理功能,布爾處理的存儲(chǔ)空間指的就是這些為尋址區(qū)。53.2.3特殊功能寄存器(sfr)特殊功能寄存器(sfr)也稱為專用寄存器,特殊功能寄存器反映了sm8952單片機(jī)的運(yùn)行狀態(tài)。很多功能也通過特殊功能寄存器來定義和控制程序的執(zhí)行。 sm8952有21個(gè)特殊功能寄存器,它們被離散地分布在內(nèi)部ram的80hffh地址中,這些寄存的功能已作了專門的規(guī)定,用戶不能修改其結(jié)構(gòu)。我們對(duì)其主要的寄存器作一些簡單的介紹。1. 程序計(jì)數(shù)器pc(program counter) 程序計(jì)數(shù)器在物理上是獨(dú)立的,它
32、不屬于特殊內(nèi)部數(shù)據(jù)存儲(chǔ)器塊中。pc是一個(gè)16位的計(jì)數(shù)器,用于存放一條要執(zhí)行的指令地址,尋址范圍為64kb,pc有自動(dòng)加1功能,即完成了一條指令的執(zhí)行后,其內(nèi)容自動(dòng)加1。pc本身并沒有地址,因而不可尋址,用戶無法對(duì)它進(jìn)行讀寫,但是可以通過轉(zhuǎn)移、調(diào)用、返回等指令改變其內(nèi)容,以控制程序按我們的要求去執(zhí)行。2.累加器acc(accumulator)(1)累加器a累加器a是一個(gè)最常用的專用寄存器,大部分單操作指令的一個(gè)操作數(shù)取自累加器,很多雙操作數(shù)指令中的一個(gè)操作數(shù)也取自累加器。加、減、乘、除法運(yùn)算的指令,運(yùn)算結(jié)果都存放于累加器a或ab累加器對(duì)中。大部分的數(shù)據(jù)操作都會(huì)通過累加器a進(jìn)行,它形象于一個(gè)交通要
33、道,在程序比較復(fù)雜的運(yùn)算中,累加器成了制約軟件效率的“瓶頸”,它的功能較多,地位也十分重要。以至于后來發(fā)展的單片機(jī),有的集成了多累加器結(jié)構(gòu),或者使用寄存器陣列來代替累加器,即賦予更多寄存器以累加器的功能,目的是解決累加器的“交通堵塞”問題。提高單片機(jī)的軟件效率。3(2)寄存器b 寄存器b 在乘除法指令中,乘法指令中的兩個(gè)操作數(shù)分別取自累加器a和寄存器b,其結(jié)果存放于ab寄存器對(duì)中。除法指令中,被除數(shù)取自累加器a,除數(shù)取自寄存器b,結(jié)果商存放于累加器a,余數(shù)存放于寄存器b中。3.程序狀態(tài)字(program status word) 程序狀態(tài)字是一個(gè)8位寄存器,用于存放程序運(yùn)行的狀態(tài)信息,這個(gè)寄存
34、器的一些位可由軟件設(shè)置,有些位則由硬件運(yùn)行時(shí)自動(dòng)設(shè)置的。寄存器的各位定義如下,其中psw.1是保留位,未使用。下表是它的功能說明,并對(duì)各個(gè)位的定義介紹如下:psw.7(cy) 進(jìn)位標(biāo)志位,此位有兩個(gè)功能:一是存放執(zhí)行某寫算數(shù)運(yùn)算時(shí),存放進(jìn)位標(biāo)志,可被硬件或軟件置位或清零。二是在位操作中作累加位使用。 psw.6(ac) 輔助進(jìn)位標(biāo)志位,當(dāng)進(jìn)行加、減運(yùn)算時(shí)當(dāng)有低4位向高4位進(jìn)位或借位時(shí),ac置位,否則被清零。ac輔助進(jìn)位位也常用于十進(jìn)制調(diào)整。 psw.5(f0) 用戶標(biāo)志位,供用戶設(shè)置的標(biāo)志位。 psw.4、psw.3(rs1和 rs0) 寄存器組選擇位。psw.2(ov) 溢出標(biāo)志。帶符號(hào)加減
35、運(yùn)算中,超出了累加器a所能表示的符號(hào)數(shù)有效范圍(-128+127)時(shí),即產(chǎn)生溢出,ov=1。表明運(yùn)算運(yùn)算結(jié)果錯(cuò)誤。如果ov=0,表明運(yùn)算結(jié)果正確。 執(zhí)行加法指令add時(shí),當(dāng)位6向位7進(jìn)位,而位7不向c進(jìn)位時(shí),ov=1?;蛘呶?不向位7進(jìn)位,而位7向c進(jìn)位時(shí),同樣ov=1。除法指令,乘積超過255時(shí),ov=1。表面乘積在ab寄存器對(duì)中。若ov=0,則說明乘積沒有超過255,乘積只在累加器a中。 除法指令,ov=1,表示除數(shù)為0,運(yùn)算不被執(zhí)行。否則ov=0。psw.0(p) 奇偶校驗(yàn)位。聲明累加器a的奇偶性,每個(gè)指令周期都由硬件來置位或清零,若值為1的位數(shù)奇數(shù),則p置位,否則清零。 4 .數(shù)據(jù)指針
36、(dptr) 數(shù)據(jù)指針為16位寄存器,編程時(shí),既可以按16位寄存器來使用,也可以按兩個(gè)8位寄存器來使用,即高位字節(jié)寄存器dph和低位字節(jié)dpl。 dptr主要是用來保存16位地址,當(dāng)對(duì)64kb外部數(shù)據(jù)存儲(chǔ)器尋址時(shí),可作為間址寄存器使用,此時(shí),使用如下兩條指令: movx a, dptr movx dptr, a 在訪問程序存儲(chǔ)器時(shí),dptr可用來作基址寄存器,采用基址+變址尋址方式訪問程序存儲(chǔ)器,這條指令常用于讀取程序存儲(chǔ)器內(nèi)的表格數(shù)據(jù)。 movc a, a+dptr5 . 堆棧指針sp(stack pointer) 堆棧是一種數(shù)據(jù)結(jié)構(gòu),它是一個(gè)8位寄存器,它指示堆棧頂部在內(nèi)部ram中的位置。
37、系統(tǒng)復(fù)位后,sp的初始值為07h,使得堆棧實(shí)際上是從08h開始的。但我們從ram的結(jié)構(gòu)分布中可知,08h1fh隸屬13工作寄存器區(qū),若編程時(shí)需要用到這些數(shù)據(jù)單元,必須對(duì)堆棧指針sp進(jìn)行初始化,原則上設(shè)在任何一個(gè)區(qū)域均可,但一般設(shè)在30h1fh之間較為適宜。 數(shù)據(jù)的寫入堆棧我們稱為入棧(push,有些文獻(xiàn)也稱作插入運(yùn)算或壓入),從堆棧中取出數(shù)據(jù)稱為出棧(pop,也稱為刪除運(yùn)算或彈出),堆棧的最主要特征是“后進(jìn)先出”規(guī)則,也即最先入棧的數(shù)據(jù)放在堆棧的最底部,而最后入棧的數(shù)據(jù)放在棧的頂部,因此,最后入棧的數(shù)據(jù)出棧時(shí)則是最先的。這和我們往一個(gè)箱里存放書本一樣,需將最先放入箱底部的書取出,必須先取走最上
38、層的書籍。這個(gè)道理非常相似。1 那么堆棧有何用途呢?堆棧的設(shè)立是為了中斷操作和子程序的調(diào)用而用于保存數(shù)據(jù)的,即常說的斷點(diǎn)保護(hù)和現(xiàn)場保護(hù)。微處理器無論是在轉(zhuǎn)入子程序和中斷服務(wù)程序的執(zhí)行,執(zhí)行完后,還是要回到主程序中來,在轉(zhuǎn)入子程序和中斷服務(wù)程序前,必須先將現(xiàn)場的數(shù)據(jù)進(jìn)行保存起來,否則返回時(shí),cpu并不知道原來的程序執(zhí)行到哪一步,原來的中間結(jié)果如何?所以在轉(zhuǎn)入執(zhí)行其它子程序前,先將需要保存的數(shù)據(jù)壓入堆棧中保存。以備返回時(shí),再復(fù)原當(dāng)時(shí)的數(shù)據(jù)。供主程序繼續(xù)執(zhí)行。轉(zhuǎn)入中斷服務(wù)程序或子程序時(shí),需要保存的數(shù)據(jù)可能有若干個(gè),都需要一一地保留。如果微處理器進(jìn)行多重子程序或中斷服務(wù)程序嵌套,那么需保存的數(shù)據(jù)就更多
39、,這要求堆棧還需要有相當(dāng)?shù)娜萘?。否則會(huì)造成堆棧溢出,丟失應(yīng)備份的數(shù)據(jù)。輕者使運(yùn)算和執(zhí)行結(jié)果錯(cuò)誤,重則使整個(gè)程序紊亂。 sm8952的堆棧是在ram中開辟的,即堆棧要占據(jù)一定的ram存儲(chǔ)單元。同時(shí)mcs-51的堆??梢杂捎脩粼O(shè)置,sp的初始值不同,堆棧的位置則不一定,不同的設(shè)計(jì)人員,使用的堆棧區(qū)則不同,不同的應(yīng)用要求,堆棧要求的容量也有所不同。堆棧的操作只有兩種,即進(jìn)棧和出棧,但不管是向堆棧寫入數(shù)據(jù)還是從堆棧中讀出數(shù)據(jù),都是對(duì)棧頂單元進(jìn)行的,sp就是即時(shí)指示出棧頂?shù)奈恢茫吹刂罚?。在子程序調(diào)用和中斷服務(wù)程序響應(yīng)的開始和結(jié)束期間,cpu都是根據(jù)sp指示的地址與相應(yīng)的ram存儲(chǔ)單元交換數(shù)據(jù)。 堆棧的
40、操作有兩種方法:其一是自動(dòng)方式,即在中斷服務(wù)程序響應(yīng)或子程序調(diào)用時(shí),返回地址自動(dòng)進(jìn)棧。當(dāng)需要返回執(zhí)行主程序時(shí),返回的地址自動(dòng)交給pc,以保證程序從斷點(diǎn)處繼續(xù)執(zhí)行,這種方式是不需要編程人員干預(yù)的。第二種方式是人工指令方式,使用專有的堆棧操作指令進(jìn)行進(jìn)出棧操作,也只有兩條指令:進(jìn)棧為push指令,在中斷服務(wù)程序或子程序調(diào)用時(shí)作為現(xiàn)場保護(hù)。出棧操作pop指令,用于子程序完成時(shí),為主程序恢復(fù)現(xiàn)場。3.2.4 sm8952單片機(jī)輸入輸出口sm8952有4組8位i/o口:p0、p1、p2和p3口,p1、p2和p3為準(zhǔn)雙向口,p0口則為雙向三態(tài)輸入輸出口,下面我們分別介紹這幾個(gè)口線:1. p0口和p2口p0
41、口身兼兩職,既可作為地址總線,也可作為數(shù)據(jù)總線。p2口作為外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器的地址總線的高8位輸出口ab8-ab15,p0口由ale選通作為地址總線的低8位輸出口ab0-ab7。外部的程序存儲(chǔ)器由psen信號(hào)選通,數(shù)據(jù)存儲(chǔ)器則由wr和rd讀寫信號(hào)選通,因?yàn)?16=64k,所以sm8952最大可外接64kb的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器。2.p1口 p1口為8位準(zhǔn)雙向口,每一位均可單獨(dú)定義為輸入或輸出口3.p3口 p3口為準(zhǔn)雙向口,為適應(yīng)引腳的第二功能的需要,增加了第二功能控制邏輯,在真正的應(yīng)用電路中,第二功能顯得更為重要。由于第二功能信號(hào)有輸入輸出兩種情況,我們分別加以說明。 p3口的輸入輸
42、出及p3口鎖存器、中斷、定時(shí)/計(jì)數(shù)器、串行口和特殊功能寄存器有關(guān),p3口的第一功能和p1口一樣可作為輸入輸出端口,同樣具有字節(jié)操作和位操作兩種方式,在位操作模式下,每一位均可定義為輸入或輸出。 我們著重討論p3口的第二功能,p3口的第二功能各管腳定義如下:(1)p3.0 串行輸入口(rxd)(2)p3.1 串行輸出口(txd)(3)p3.2 外中斷0(int0)(4)p3.3 外中斷1(int1)(5)p3.4 定時(shí)/計(jì)數(shù)器0的外部輸入口(t0)(6)p3.5 定時(shí)/計(jì)數(shù)器1的外部輸入口(t1)(7)p3.6 外部數(shù)據(jù)存儲(chǔ)器寫選通(wr)(8)p3.7 外部數(shù)據(jù)存儲(chǔ)器讀選通(rd) 對(duì)于第二功
43、能為輸出引腳,當(dāng)作i/o口使用時(shí),第二功能信號(hào)線應(yīng)保持高電平,與非門開通,以維持從鎖存器到輸出口數(shù)據(jù)輸出通路暢通無阻。而當(dāng)作第二功能口線使用時(shí),該位的鎖存器置高電平,使與非門對(duì)第二功能信號(hào)的輸出是暢通的,從而實(shí)現(xiàn)第二功能信號(hào)的輸出。對(duì)于第二功能為輸入的信號(hào)引腳,在口線上的輸入通路增設(shè)了一個(gè)緩沖器,輸入的第二功能信號(hào)即從這個(gè)緩沖器的輸出端取得。而作為i/o口線輸入端時(shí),取自三態(tài)緩沖器的輸出端。這樣,不管是作為輸入口使用還是第二功能信號(hào)輸入,輸出電路中的鎖存器輸出和第二功能輸出信號(hào)線均應(yīng)置“1”。43.2.5 sm8952定時(shí)/計(jì)數(shù)器sm8952的單片機(jī)內(nèi)有三個(gè)16位可編程的定時(shí)/計(jì)數(shù)器,它們具有
44、四種工作方式,其控制字和狀態(tài)均在相應(yīng)的特殊功能寄存器中,通過對(duì)控制寄存器的編程,就可方便地選擇適當(dāng)?shù)墓ぷ鞣绞健?3.2.6看門狗定時(shí)器(wdt)看門狗定時(shí)器(wdt)是1 個(gè)16 位自運(yùn)行計(jì)數(shù)器在計(jì)數(shù)器,溢出時(shí)會(huì)產(chǎn)生復(fù)位信號(hào)。wdt 對(duì)那些易受噪聲干擾、電壓波動(dòng)或放電現(xiàn)象影響的系統(tǒng)很有用在程序跑飛或死機(jī)的情況下,wdt 可以使用戶程序脫離不正常狀態(tài)。wdt不同于sm8952 系統(tǒng)的定時(shí)器0、 定時(shí)器1 和定時(shí)器2 ,通過軟件周期性的清除wdt 計(jì)數(shù)器的值可以防止wdt 產(chǎn)生復(fù)位信號(hào)。sm8952 wdt可以對(duì)基準(zhǔn)時(shí)鐘源選擇分頻輸入要選擇分頻輸入就要相應(yīng)地設(shè)置wdt 控制寄存器(wdtc)的位2
45、位1和位0的值。置位wdt 的位7 (wdte) 即可使能wdt wdte 位置1 后16 位計(jì)數(shù)器根據(jù)ps2 、ps1、ps0 所確定的時(shí)鐘輸入開始工作。計(jì)數(shù)器溢出時(shí)會(huì)產(chǎn)生復(fù)位信號(hào),此時(shí)wdt 的wdte 位會(huì)被清零,另外硬件復(fù)位也可以將wdte 清零置位wdt 的位5(clear)可以復(fù)位wdt, 同時(shí)清除計(jì)數(shù)器的內(nèi)容使計(jì)數(shù)器重新開始計(jì)數(shù)。3.2.7 sm8962的中斷系統(tǒng) 中斷這個(gè)概念比較抽象,其實(shí)單片機(jī)的處理系統(tǒng)與人的一般思維有著許多異曲同工之妙,在日常生活和工作中有很多類似的情況。假如某人正在上班,例如是編譯資料,這時(shí)侯電話鈴響了,此人在書本上做個(gè)記號(hào)(以記下他現(xiàn)在正編譯到某某頁),
46、然后與 對(duì)方通電話,而此時(shí)恰好有客人到訪,他先停下通電話,與客人說幾句話,叫客人侯,然后回頭繼續(xù)通完電話,再與客人談話。談話完畢,送走客人,繼續(xù)你的資料編譯工作。這就是日常生活和工作中的中斷現(xiàn)象,類似的情況還有很多,從編譯資料到接電話是第一次中斷,通電話的過程中引有客人到訪,這是第二次中斷,即在中斷的過程中又出現(xiàn)第二次中斷,這就是我們常說的中斷嵌套。處理完第二個(gè)中斷任務(wù)后,回頭處理第一個(gè)中斷,第一個(gè)中斷完成后,再繼續(xù)你原先的主要工作。 為什么會(huì)出現(xiàn)這樣的中斷呢?道理很簡單,人非三頭六臂,人只有一個(gè)腦袋,在一種特定的時(shí)間內(nèi),可能會(huì)面對(duì)著兩、三甚至更多的任務(wù)。但一個(gè)人又不可能在同一時(shí)間去完成多樣任
47、務(wù),因此你只能采分析任務(wù)的輕重緩急,采用中斷的方法穿插去完成它們。那么這種情況對(duì)于單片機(jī)中的中央處理器也是如此,單片機(jī)中cpu只有一個(gè),但在同一時(shí)間內(nèi)可能會(huì)面臨著處理很多任務(wù)的情況,如運(yùn)行主程序、數(shù)據(jù)的輸入和輸出,定時(shí)/和計(jì)數(shù)時(shí)間已到要處理、可能還有一些外部的更重要的中斷請求要先處理。此時(shí)也得象人的思維一樣停下某一樣(或幾樣)工作先去完成一些緊急任務(wù)的中斷方法。這樣的一樣處理方法上升到計(jì)算機(jī)理論,就是一個(gè)資源面對(duì)多項(xiàng)任務(wù)的處理方式,由于資源有限,面對(duì)多項(xiàng)任務(wù)同時(shí)要處理時(shí),就會(huì)出現(xiàn)資源競爭的現(xiàn)象。中斷技術(shù)就是為了解決資源競爭的一個(gè)可行的方法,采用中斷技術(shù)可多項(xiàng)任務(wù)共享一個(gè)資源,所以有些文獻(xiàn)也稱中
48、斷技術(shù)是一種資源共享技術(shù)。 cpu響應(yīng)中斷請求后,就立即轉(zhuǎn)入執(zhí)行中斷服務(wù)程序。不同的中斷源、不同的中要求可能有不同的中斷處理方但它們的處理流程一般都如下所述。1.現(xiàn)場的保護(hù)和現(xiàn)場恢復(fù)中斷是在執(zhí)行其它任務(wù)的過程中轉(zhuǎn)去執(zhí)行臨時(shí)的任務(wù),為了在執(zhí)行完中斷服務(wù)程序后,回頭執(zhí)行原先的程序時(shí),知道程序原來在何處打斷的,各有關(guān)寄存器的內(nèi)容如何,就必須在轉(zhuǎn)入執(zhí)行中斷服務(wù)程序前,將這些內(nèi)容和狀態(tài)進(jìn)行備份即保護(hù)現(xiàn)場。就象文章開頭舉的例子,在看書時(shí),電話玲響需傳去接電話時(shí),必須在書本上做個(gè)記號(hào),以便在接完電話后回來看書時(shí),知道從哪些內(nèi)容繼續(xù)往下看。計(jì)算機(jī)的中斷處理方法也如此,中斷開始前需將個(gè)有關(guān)寄存器的內(nèi)容壓入堆棧進(jìn)
49、行保存,以便在恢復(fù)原來程序時(shí)使用。中斷服務(wù)程序完成后,繼續(xù)執(zhí)行原先的程序,就需把保存的現(xiàn)場內(nèi)容從堆棧中彈出,恢復(fù)積存器和存儲(chǔ)單元的原有內(nèi)容,這就是現(xiàn)場恢復(fù)。如果在執(zhí)行中斷服務(wù)時(shí)不是按上述方法進(jìn)行現(xiàn)場保護(hù)和恢復(fù)現(xiàn)場,就會(huì)是程序運(yùn)行紊亂,程序跑飛,自然使單片機(jī)不能正常工作。2.中斷的打開和中斷的關(guān)閉在中斷處理進(jìn)行過程中,可能又有新的中斷請求到來,這里規(guī)定,現(xiàn)場保護(hù)和現(xiàn)場恢復(fù)的操作是不允許打擾的,否則保護(hù)和恢復(fù)的過程就可能使數(shù)據(jù)出錯(cuò),為此在進(jìn)行現(xiàn)場保護(hù)和現(xiàn)場恢復(fù)的過程中,必須關(guān)閉總中斷,屏蔽其它所有的中斷,待這個(gè)操作完成后再打開總中斷,以便實(shí)現(xiàn)中斷嵌套。3.中斷服務(wù)程序既然有中斷產(chǎn)生,就必然有其具體
50、的需執(zhí)行的任務(wù),中斷服務(wù)程序就是執(zhí)行中斷處理的具體內(nèi)容,一般以子程序的形式出現(xiàn),所有的中斷都要轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,進(jìn)行中斷服務(wù)。4.中斷的返回執(zhí)行完中斷服務(wù)程序后,必然要返回,中斷返回就是被程序運(yùn)行從中斷服務(wù)程序轉(zhuǎn)回到原工作程序上來。在單片機(jī)中,中斷返回是通過一條專門的指令實(shí)現(xiàn)的,自然這條指令是中斷服務(wù)程序的最后一條指令。第四章 系統(tǒng)軟件設(shè)計(jì)4.1 單片機(jī)變成軟件的發(fā)展軟件系統(tǒng)設(shè)計(jì)是整個(gè)檢測系統(tǒng)設(shè)計(jì)至關(guān)重要的組成部分,軟件部分設(shè)計(jì)的好壞,直接關(guān)系到整個(gè)系統(tǒng)功能實(shí)現(xiàn)和運(yùn)行的可靠性。隨著計(jì)算機(jī)應(yīng)用的不斷推廣,計(jì)算機(jī)軟件的設(shè)計(jì)也發(fā)生了巨大的變化,程序設(shè)計(jì)方法也在不斷進(jìn)步、更新,程序設(shè)計(jì)語言也從初期
51、的機(jī)器語言到用符號(hào)表示的匯編語言以至發(fā)展到高級(jí)語言。8051芯片的派生門類特別多(達(dá)到了上百種之多)sm 8952就是其中的一種。而c語言對(duì)于它們的每一個(gè)硬件資源又無一例外地要能進(jìn)行操作。這些都是過去以mpu為基礎(chǔ)的c語言所沒有的。經(jīng)過keil/franklin、archmeades、iar、bso/tasking等公司艱若不懈的努力,終于于90年代開始而趨成熟,成為專業(yè)化的mcu高級(jí)語言了。過去長期困擾人們的所謂“高級(jí)語言產(chǎn)生代碼太長,運(yùn)行速度太慢,因此不適合單片機(jī)使用”的致使缺點(diǎn)已被大幅度地克服。目前,8051上的c語言的代碼長度,已經(jīng)做到了匯編水平的1.21.5倍。4k字節(jié)以上的程度,c
52、語言的優(yōu)勢更能得到發(fā)揮。至于執(zhí)行速度的問題,只要有好的仿真器的幫助,找出關(guān)鍵代碼,進(jìn)一步用人工優(yōu)化,就可很簡單地達(dá)到十分美滿的程度。如果談到開發(fā)速度、軟件質(zhì)量、結(jié)構(gòu)嚴(yán)謹(jǐn)、程序堅(jiān)固等方面的話,則c語言的完美絕非匯編語言編程所可比擬的。今天,確實(shí)已經(jīng)到mcu開發(fā)人員拿起c語言利器的時(shí)候了。下面結(jié)合sm8952單片機(jī)介紹單片機(jī)c語言的優(yōu)越性:不懂得單片機(jī)的指令集,也能夠編寫完美的單片機(jī)程序;無須懂得單片機(jī)的具體硬件,也能夠編出符合硬件實(shí)際的專業(yè)水平的程序;不同函數(shù)的數(shù)據(jù)實(shí)行覆蓋,有效利用片上有限的ram空間;程序具有堅(jiān)固性:數(shù)據(jù)被破壞是導(dǎo)致程序運(yùn)行異常的重要因素。c語言對(duì)數(shù)據(jù)進(jìn)行了許多專業(yè)性的處理,
53、避免了運(yùn)行中間非異步的破壞;c語言提供復(fù)雜的數(shù)據(jù)類型(數(shù)組、結(jié)構(gòu)、聯(lián)合、枚舉、指針等),極大地增強(qiáng)了程序處理能力和靈活性;提供auto、static、const等存儲(chǔ)類型和專門針對(duì)單片機(jī)的data、idata、pdata、xdata、code等存儲(chǔ)類型,自動(dòng)為變量合理地分配地址;提供small、compact、large等編譯模式,以適應(yīng)片上存儲(chǔ)器的大小;中斷服務(wù)程序的現(xiàn)場保護(hù)和恢復(fù),中斷向量表的填寫,是直接與單片機(jī)相關(guān)的,都由c編譯器代辦;提供常用的標(biāo)準(zhǔn)函數(shù)庫,以供用戶直接使用;頭文件中定義宏、說明復(fù)雜數(shù)據(jù)類型和函數(shù)原型,有利于程序的移植和支持單片機(jī)的系列化產(chǎn)品的開發(fā);有嚴(yán)格的句法檢查,錯(cuò)誤很少,可容易地在高級(jí)語言的水平上迅速地被排掉;可方便地接受多種實(shí)用程序的服務(wù):如片上資源的初始化有專門的實(shí)用程序自動(dòng)生成;再如,有實(shí)時(shí)多任務(wù)操作系統(tǒng)可調(diào)度多道任務(wù),簡化用戶編程,提高運(yùn)行的安全性等等。4.2 程序的設(shè)計(jì)4.2.1 主程序通過應(yīng)用要求來分析功率因數(shù)發(fā)生器所使用的程序主要可以分為以下幾個(gè)部分:顯示程序;鍵盤輸入程序;波形發(fā)生程序。軟件設(shè)計(jì)的主程序流程圖如圖4.1所示在整個(gè)程序中,每個(gè)部分都有其具體的明確的任務(wù),分別編制、調(diào)試后再把它們連接在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 八年級(jí)地理實(shí)踐教學(xué)計(jì)劃
- 文化遺產(chǎn)數(shù)字化保護(hù)2025年技術(shù)應(yīng)用在文化遺產(chǎn)數(shù)字化保護(hù)標(biāo)準(zhǔn)制定中的應(yīng)用報(bào)告
- 全球連鎖酒店人力資源招聘與管理計(jì)劃
- 2025年人教版一年級(jí)數(shù)學(xué)下冊差異化教學(xué)計(jì)劃
- 小學(xué)課后心理輔導(dǎo)服務(wù)計(jì)劃
- 互聯(lián)網(wǎng)金融平臺(tái)在2025年合規(guī)整改中的合規(guī)成本控制與優(yōu)化研究報(bào)告
- 2025年秋人教版小學(xué)一年級(jí)社會(huì)實(shí)踐教學(xué)計(jì)劃
- 高中體育教研組發(fā)展計(jì)劃
- 部編版三年級(jí)語文下冊教學(xué)計(jì)劃教學(xué)策略
- 人教版數(shù)學(xué)課堂創(chuàng)新教學(xué)計(jì)劃
- 校外培訓(xùn)機(jī)構(gòu)辦學(xué)申請書范文
- 村民心理知識(shí)知識(shí)講座
- 管工基礎(chǔ)知識(shí)培訓(xùn)課件
- 糧食倉儲(chǔ)監(jiān)管管理制度
- 甄嬛傳完整分
- 非常規(guī)油氣藏地質(zhì)特征研究
- 頸椎間盤突出護(hù)理查房
- 抖音短視頻帳號(hào)策劃運(yùn)營表
- 南昌大學(xué)理工科類實(shí)驗(yàn)(尖子班)選拔考試
- 醫(yī)療質(zhì)量與安全培訓(xùn)課件
- 山西省靈丘縣恒鑫源礦業(yè)有限公司東岐鐵礦資源開發(fā)利用和礦山環(huán)境保護(hù)與土地 復(fù)墾方案
評(píng)論
0/150
提交評(píng)論