KeilC51編譯器及其應用課件_第1頁
KeilC51編譯器及其應用課件_第2頁
KeilC51編譯器及其應用課件_第3頁
KeilC51編譯器及其應用課件_第4頁
KeilC51編譯器及其應用課件_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

KeilC51編譯器及其應用C51概述

MCS-51單片機的映射

KeilC51編譯器的使用

C51概述

用C語言的優(yōu)勢:1、寄存器的分配以及各種變量和數(shù)據(jù)的尋址都由編譯器完成。2、程序擁有了正式的結構,并且能被分成多個單獨的函數(shù)。這使整個應用系統(tǒng)的結構變得清晰,同時讓源代碼變得可重復使用。3、選擇特定的操作符來操作變量的能力提高了源代碼的可讀性。4、可以運用和人的思維很接近的詞匯和算法表達式。5、編寫程序和調(diào)試程序的時間得到很大程度的縮短。6、C運行連接庫包含一些標準的子程序。7、由于程序的模塊結構技術,使得現(xiàn)有的程序段可以很容易的包含到新的程序中去。

MCS-51單片機的映射

KeilC51的數(shù)據(jù)類型MCS-51單片機的映射KeilC51存儲類型Code:程序空間(64Kbytes),通過MOVC@A+DPTR訪問。Data:直接訪問的內(nèi)部數(shù)據(jù)存儲器,訪問速度最快(128bytes)。Idata:間接訪問的內(nèi)部數(shù)據(jù)存儲器,可以訪問所有的內(nèi)部存儲器空間。Bdata:可位尋址的內(nèi)部數(shù)據(jù)存儲器,可以字節(jié)方式也可以位方式訪問。Xdata: 外部數(shù)據(jù)存儲器(64Kbytes),通過MOVX@DPTR訪問。Pdata:分頁的外部數(shù)據(jù)存儲器(256bytes),通過MOVX@Ri訪問。 MCS-51單片機的映射存儲模式1)小(SMALL)模式:所有變量都默認在8051的內(nèi)部數(shù)據(jù)存儲器中。這和用data顯式定義變量起到相同的作用。2)緊湊(COMPACT)模式: 此模式中,所有變量都默認在8051的外部數(shù)據(jù)存儲器的一頁中。地址的高字節(jié)往往通過Port2輸出。這和用pdata顯式定義變量起到相同的作用。這種限制來自于間接尋址所使用的R0,R1(MOVX@Ri)。3)大(LARGE)模式: 在大模式下,所有的變量都默認在外部存儲器中(xdata)。這和用xdata顯式定義變量起到相同的作用。數(shù)據(jù)指針(DPTR)用來尋址。MCS-51單片機的映射KeilC51中的變量定義1、在變量的聲明中,可以包括存儲器類型和signed或unsigned屬性。如:1)chardatavar1;2)charcodetext[]="ENTERPARAMETER";3)unsignedlongxdataarray[100];4)floatidatax,y,z;MCS-51單片機的映射KeilC51中的變量定義5)unsignedintpdatadimension;6)unsignedcharxdatavector[10][4][4];7)charbdataflags;MCS-51單片機的映射2、位變量(bit):與MCS-51硬件特性操作有關的可以定義成位變量。位變量定位在MCS-51單片機的片內(nèi)RAM的位尋址空間。3、整型變量(int):整型變量的長度為16位,占2個字節(jié),在存儲器中的存放格式為高位在低地址字節(jié),低位在高地址字節(jié)。4、浮點變量(float):浮點變量的長度為32位,占4個字節(jié),MCS-51單片機的映射5、特殊功能寄存器(sfr、sfr16、sbit)sfr:字節(jié)尋址。比如sfrP0=0x80;表示PO口地址為80H,“=”后為80H~FFH之間的常數(shù)。sfr16:字尋址。如sfr16T2=0xCC;指定Timer2口地址T2L=CCHT2H=CDH。sbit:位尋址。如sbitEA=0xAF;指定第0xAF位為EA,即中斷允許。還可以有如下定義方法:sbit0V=PSW^2;(定義0V為PSW的第2位,當然需要先有PSW定義。)sbit0V=0XDO^2;(同上)MCS-51單片機的映射C51中的指針1)通用指針通用或未定型的指針的聲明和標準C語言中一樣。如:char*s;字符指針int*numptr;整型指針long*state;長整型指針通用指針總是需要三個字節(jié)來存儲。第一個字節(jié)是用來表示存儲器類型,第二個字節(jié)是指針的高字節(jié),第三字節(jié)是指針的低字節(jié)。通用指針可以用來訪問所有類型的變量,而不管變量存儲在哪個存儲空間中。因而許多庫函數(shù)都使用通用指針。通過使用通用指針,一個函數(shù)可以訪問數(shù)據(jù),而不用考慮它存儲在什么存儲器中。通用指針很方便,但是也很慢。在所指向目標的存儲空間不明確的情況下,它們用的最多。MCS-51單片機的映射C51中的指針2)存儲器指針存儲器指針或類型確定的指針在定義時包括一個存儲器類型說明,并且總是指向此說明的特定存儲器空間。例如:chardata*str;指向內(nèi)RAM低128字節(jié)的字符指針intxdata*numtab;指向外RAM的整型指針longcode*powtab;指向程序存儲區(qū)的長整型指針正是由于存儲器類型在編譯時已經(jīng)確定,通用指針中用來表示存儲器類型的字節(jié)就不再需要了。指向idata,data,bdata和pdata的存儲器指針用一個字節(jié)保存,指向code和xdata的存儲器指針用兩個字節(jié)保存。使用存儲器指針比通用指針效率要高,速度要快。當然,存儲器指針的使用不是很方便。在所指向目標的存儲空間明確并不會變化的情況下,它們用的最多。MCS-51單片機的映射C51中的函數(shù)C51中函數(shù)的定義和使用與標準C基本相同,但對遞歸調(diào)用有所不同,C51編譯器采用一個擴展關鍵字reentrant作為定義函數(shù)的選項,需要將一個函數(shù)定義為再入函數(shù)時,只要在函數(shù)名的后面加上關鍵字reentrant即可:函數(shù)類型函數(shù)名(形式參數(shù))[reentrant]再入函數(shù)可被遞歸調(diào)用,無論何時,包括中斷服務函數(shù)在內(nèi)的任何函數(shù)個都可調(diào)用再入函數(shù)。與非再入函數(shù)的參數(shù)傳遞和局部變量的存儲分配方法不同,C51編譯器為再入函數(shù)生成一個模擬棧,通過這個模擬棧來完成參數(shù)傳遞和存放局部變量。模擬棧所在的存儲器空間根據(jù)再入函數(shù)存儲器模式的不同,可以是DATA、PDADA或XDATA存儲空間。當程序中包含有多種存儲器模式的再入函數(shù)時,C51編譯器為每種模式單獨建立一個模擬棧并獨立管理各自的棧指針。MCS-51單片機的映射對于再入函數(shù)的規(guī)定:(1)再入函數(shù)不能傳送bit類型的參數(shù),也不能定義一個局部位變量,再入函數(shù)不能包括位操作以及8051系列單片機的可位尋址區(qū)。(2)在編譯時,在存儲器模式的基礎上為再入函數(shù)在內(nèi)部或外部存儲器中建立一個模擬棧區(qū),稱為再入棧。在small模式下,再入棧位于idata區(qū);在compact模式下,再入棧位于pdata區(qū);在large模式下,再入棧位于xdata區(qū)。再入函數(shù)的局部變量及參數(shù)都被放在再入棧中,從而使再入函數(shù)可以進行遞歸調(diào)用。而非再入函數(shù)的局部變量被放在再入棧之外的暫存區(qū)域,如果對非再入函數(shù)引行遞歸調(diào)用,則上次調(diào)用時使用的局部變量數(shù)據(jù)將被覆蓋。(3)在同一個程序中可以定義和使用不同存儲器模式的再入函數(shù),任意模式的再入函數(shù)不能調(diào)用不同模式的再入函數(shù),但可以調(diào)用非再入函數(shù)。(4)在參數(shù)的傳遞上,實際參數(shù)可以傳遞給間接調(diào)用的再入函數(shù)。無再入屬性的間接調(diào)用函數(shù)不能包含調(diào)用參數(shù),但是可以使用定義的全局變量來進行參數(shù)傳遞。(5)采用函數(shù)的遞歸調(diào)用可使程序的結構緊湊,但是遞歸調(diào)用要求采用再入函數(shù),以便利用再入棧來保存有關的局部變量數(shù)據(jù),從而要占據(jù)較大的內(nèi)存空間。另外,遞歸調(diào)用時對函數(shù)的處理速度比較慢,因此一般情況下應盡量避免采用函數(shù)的遞歸調(diào)用,定義函數(shù)時應盡量避免使用再入屬性。KeilC51編譯器的使用

KeilC51的組成及各部分

溫馨提示

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

評論

0/150

提交評論