單片機(jī)原理與應(yīng)用凌陽(yáng)SPCE061A(電子教案)第7章 程 序 設(shè) 計(jì)_第1頁(yè)
單片機(jī)原理與應(yīng)用凌陽(yáng)SPCE061A(電子教案)第7章 程 序 設(shè) 計(jì)_第2頁(yè)
單片機(jī)原理與應(yīng)用凌陽(yáng)SPCE061A(電子教案)第7章 程 序 設(shè) 計(jì)_第3頁(yè)
單片機(jī)原理與應(yīng)用凌陽(yáng)SPCE061A(電子教案)第7章 程 序 設(shè) 計(jì)_第4頁(yè)
單片機(jī)原理與應(yīng)用凌陽(yáng)SPCE061A(電子教案)第7章 程 序 設(shè) 計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

單片機(jī)原理與應(yīng)用凌陽(yáng)SPCE061A(電子教案)第7章 程 序 設(shè) 計(jì) 第77章程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)7.2C語(yǔ)言程序設(shè)計(jì)7.3匯編語(yǔ)言偽指令7.1程序設(shè)計(jì)舉例7.47.1匯編語(yǔ)言偽指令7.1.1匯編語(yǔ)言偽指令的概念7.1.2匯編語(yǔ)言偽指令的寫法與符號(hào)約定7.1.3匯編語(yǔ)言偽指令的分類7.1.4匯編語(yǔ)言的語(yǔ)法格式1數(shù)制、數(shù)據(jù)類型2運(yùn)算符3標(biāo)號(hào)4程序注釋與符號(hào)規(guī)定7.2匯編語(yǔ)言程序設(shè)計(jì)7.2.1順序結(jié)構(gòu)順序結(jié)構(gòu)比較簡(jiǎn)單,從第一條指令開始依次執(zhí)行每一條指令,直到最后一條指令,程序結(jié)束,如圖7-2所示。 順序結(jié)構(gòu)是構(gòu)成復(fù)雜程序的基礎(chǔ)(具體實(shí)例可以參考例例7-1)。 圖77-2順序結(jié)構(gòu)7.2.2選擇結(jié)構(gòu)1特點(diǎn)選擇結(jié)構(gòu)又叫分支結(jié)構(gòu),P代表?xiàng)l件,當(dāng)當(dāng)P條件成立時(shí)執(zhí)行A,否則執(zhí)行B,如圖7-3(a)所示;由此派生出多分支結(jié)構(gòu),如圖7-3(b)所示。 在程序體中,根據(jù)不同的條件執(zhí)行不同的動(dòng)作,在某一確定的條件下,只能執(zhí)行多個(gè)分支中的一個(gè)分支。 2舉例(a a)選擇結(jié)構(gòu)(b b)多個(gè)選擇結(jié)構(gòu)圖77-3選擇結(jié)構(gòu)7.2.3循環(huán)結(jié)構(gòu)1特點(diǎn)在一些實(shí)際應(yīng)用系統(tǒng)中,某些指令需要重復(fù)許多次,這種強(qiáng)制CPU多次重復(fù)執(zhí)行某些指令的基本結(jié)構(gòu)稱為循環(huán)結(jié)構(gòu)。 在匯編語(yǔ)言中沒(méi)有專門的循環(huán)指令,但是可以使用有條件轉(zhuǎn)移指令通過(guò)條件判斷來(lái)控制循環(huán)是繼續(xù)還是結(jié)束。 2循環(huán)結(jié)構(gòu)的結(jié)構(gòu)形式循環(huán)結(jié)構(gòu)有兩種基本形式,如圖7-5和和圖圖7-6所示。 一種是先判斷條件,滿足條件執(zhí)行循環(huán)體,不滿足條件就結(jié)束循環(huán);另一種是先執(zhí)行循環(huán)體,再判斷條件,若滿足條件則繼續(xù)執(zhí)行循環(huán)體,不滿足條件結(jié)束循環(huán)。 圖77-5先判斷后執(zhí)行圖77-6先執(zhí)行后判斷再執(zhí)行循環(huán)結(jié)構(gòu)的3個(gè)組成部分如下。 ( (1)初始化為循環(huán)做準(zhǔn)備,如規(guī)定循環(huán)次數(shù)、給變量賦初始值等。 ( (2)循環(huán)體循環(huán)結(jié)構(gòu)的主體,每次都要執(zhí)行的程序代碼段。 ( (3)循環(huán)控制修改循環(huán)變量,判斷循環(huán)是否結(jié)束。 7.2.4子程序設(shè)計(jì)1特點(diǎn)在實(shí)際應(yīng)用中,經(jīng)常會(huì)遇到在同一程序中需要多次進(jìn)行一些相同的計(jì)算和操作的情況,例如延時(shí)、算術(shù)運(yùn)算等。 如果每次使用時(shí)都再?gòu)念^開始編寫這些程序,則不僅程序繁瑣,而且浪費(fèi)內(nèi)存空間,也給程序的調(diào)試增加了難度。 因此,可以采用子程序的概念,將一些重復(fù)使用的程序標(biāo)準(zhǔn)化,使之成為一個(gè)獨(dú)立的程序段,需要時(shí)調(diào)用即可。 我們就把這些程序段稱作子程序。 2子程序結(jié)構(gòu)一般來(lái)說(shuō)子程序的結(jié)構(gòu)包括3個(gè)部分子程序的定義聲明和開始標(biāo)號(hào)部分;子程序的實(shí)體內(nèi)容部分,表明程序?qū)⑦M(jìn)行怎樣的操作;子程序的結(jié)束標(biāo)號(hào)部分。 子程序名.proc/子程序內(nèi)容RETF.endp程序的調(diào)用包括主程序調(diào)用子程序、子程序調(diào)用子程序等。 程序調(diào)用是通過(guò)調(diào)用指令“CALL”來(lái)實(shí)現(xiàn)的。 程序執(zhí)行的過(guò)程中,當(dāng)遇到調(diào)用子程序指令時(shí),CPU自動(dòng)會(huì)將下一條指令的地址壓入堆棧暫時(shí)保護(hù)起來(lái),然后轉(zhuǎn)到被調(diào)用的子程序入口去執(zhí)行子程序,當(dāng)執(zhí)行到RETF時(shí)返回,CPU自動(dòng)將堆棧中的返回地址彈出送到PC,繼續(xù)執(zhí)行原來(lái)的程序。 其過(guò)程流程框圖如圖7-8所示(CPU自動(dòng)執(zhí)行操作不需要編寫指令處理)。 圖77-8子程序結(jié)構(gòu)在程序調(diào)用的過(guò)程中,需要注意到的問(wèn)題是斷點(diǎn)的現(xiàn)場(chǎng)保護(hù),就是說(shuō),子程序?qū)⒄加玫馁Y源是否與主程序沖突,子程序?qū)?huì)破壞什么寄存器的內(nèi)容,而這些寄存器是否是主程序持續(xù)使用的等。 通常的做法是用堆棧對(duì)現(xiàn)場(chǎng)進(jìn)行保護(hù),在子程序開始就把子程序要破壞掉的寄存器的內(nèi)容壓棧保護(hù),當(dāng)子程序結(jié)束的時(shí)候再?gòu)棗;謴?fù)現(xiàn)場(chǎng)。 3參數(shù)傳遞程序調(diào)用的過(guò)程都伴隨著參數(shù)的傳遞,正確的參數(shù)傳遞要滿足入口和出口條件。 入口條件指執(zhí)行子程序時(shí)所必需的有關(guān)寄存器內(nèi)容或源程序的存儲(chǔ)器的存儲(chǔ)地址等,主程序調(diào)用子程序時(shí)必須先滿足入口條件,換句話說(shuō)就是滿足子程序?qū)斎雲(yún)?shù)的約定。 出口參數(shù)就是指子程序執(zhí)行完之后運(yùn)算結(jié)果所存放的寄存器或存儲(chǔ)器地址等,也就是說(shuō),必須確定主程序?qū)敵鰠?shù)的約定。 通常來(lái)說(shuō),參數(shù)的傳遞有通過(guò)寄存器傳遞、通過(guò)變量傳遞、通過(guò)堆棧傳遞幾種。 7.3C語(yǔ)言程序設(shè)計(jì)7.3.1順序結(jié)構(gòu)7.3.2選擇結(jié)構(gòu)7.3.3循環(huán)結(jié)構(gòu)7.3.4子程序設(shè)計(jì)7.4程序設(shè)計(jì)舉例7.4.1數(shù)字顯示【例例7-9】利用B口控制數(shù)碼管依次顯示示09。 ( (1)數(shù)字顯示原理數(shù)碼管是由發(fā)光二極管作為顯示字段的數(shù)碼型顯示器件。 如圖7-12所示,7只發(fā)光二極管分別對(duì)應(yīng)ag,另外一只發(fā)光二極管顯示小數(shù)點(diǎn),這種LED顯示器稱為八段數(shù)碼管。 圖77-12數(shù)碼管LED數(shù)碼管按照電路連接方式可分為共陰極和共陽(yáng)極兩種類型。 共陰極將各段發(fā)光二極管的負(fù)極連接在一起,作為公共端;共陽(yáng)極將各段發(fā)光二極管的正極連接在一起,作為公共端。 七段數(shù)碼管的8個(gè)個(gè)LED某些發(fā)亮、某些不亮,通過(guò)人眼在大腦形成數(shù)字。 以顯示數(shù)字“0”為例,當(dāng)發(fā)光二極管a、b、c、d、e、f發(fā)亮,而g、dp不亮?xí)r,給人的感覺(jué)是顯示數(shù)字“0”。 ( (2)硬件電路硬件電路如圖7-13所示。 圖77-13控制數(shù)碼管顯示數(shù)字( (3)參考程序#define P_IOB_Data(volatile unsigned int*)0x7005#define P_IOB_Dir(volatile unsigned int*)0x7007#define P_IOB_Attrib(volatile unsignedint*)0x7008#define P_Watchdog_Clear(volatile unsignedint*)0x7012unsignedintduanma10=0x00fc,0x0060,0x00da,0x00f2,0x0066,/012340x00b6,0x00be,0x00e0,0x00fe,0x00f6;/56789/*/void delay(unsigned longint i)/延時(shí)子程序while(i-)*P_Watchdog_Clear=0x0001;/不斷清看門狗/*/int main()unsignedinti=0;*P_IOB_Dir=0xffff;*P_IOB_Attrib=0xffff;*P_IOB_Data=0xffff;loop1:*P_IOB_Data=duanmai;delay (50000);i=i+1;if(i10)i=0;goto loop1;( (4)電路分析凌陽(yáng)單片機(jī)的B口的第7引腳IOB7控制共陰極數(shù)碼管的a引腳,B口的第6引腳IOB7控制數(shù)碼管的b引腳如果要顯示數(shù)字“0”,需要a、b、c、d、e、f發(fā)亮,也就是說(shuō),需要B口的第 7、 6、 5、 4、 3、2引腳為高電平;而g不亮,需要B口的第1引腳為低電平,此時(shí)給人的感覺(jué)是顯示數(shù)字“0”,如表7-7所示。 數(shù)字自然語(yǔ)言共陰極

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論