久久久久久精品无码三级_国产成人成上色爱_欧美日韩第一区二区三区_国产精品无码AV嫩草

99范文網(wǎng) > 總結(jié)范文 > 實習總結(jié) >

c語言實驗報告

| 小龍

因為在C語言草創(chuàng)的年代,UNIX是最好的大型機系統(tǒng).下面是為大家?guī)淼腸語言實驗報告范文,希望可以幫助大家。

c語言實驗報告范文范文1:

1、只有頻繁用到或?qū)\算速度要求很高的變量才放到data區(qū)內(nèi),如for循環(huán)中的計數(shù)值。

2、其他不頻繁調(diào)用到和對運算速度要求不高的變量都放到xdata區(qū)。

3、常量放到code區(qū),如字庫、修正系數(shù)。

4、邏輯標志變量可以定義到bdata中。

在51系列芯片中有16個字節(jié)位尋址區(qū)bdata,其中可以定義8*16=128個邏輯變量。這樣可以大大降低內(nèi)存占用空間。定義方法是: bdata bit LedState;但位類型不能用在數(shù)組和結(jié)構(gòu)體中。

5、data區(qū)內(nèi)最好放局部變量。

因為局部變量的空間是可以覆蓋的(某個函數(shù)的局部變量空間在退出該函數(shù)是就釋放,由別的函數(shù)的局部變量覆蓋),可以提高內(nèi)存利用率。當然靜態(tài)局部變量除外,其內(nèi)存使用方式與全局變量相同;

6、確保程序中沒有未調(diào)用的函數(shù)。

在Keil C里遇到未調(diào)用函數(shù),編譯器就將其認為可能是中斷函數(shù)。函數(shù)里用的局部變量的空間是不釋放,也就是同全局變量一樣處理。這一點Keil做得很愚蠢,但也沒辦法。

7、如果想節(jié)省data空間就必須用large模式。

將未定義內(nèi)存位置的變量全放到xdata區(qū)。當然最好對所有變量都要指定內(nèi)存類型。

8、使用指針時,要指定指針指向的內(nèi)存類型。

在C51中未定義指向內(nèi)存類型的通用指針占用3個字節(jié);而指定指向data區(qū)的指針只占1個字節(jié);指定指向xdata區(qū)的指針占2個字節(jié)。如指針p是指向data區(qū),則應定義為: char data *p;。還可指定指針本身的存放內(nèi)存類型,如:char data * xdata p;。其含義是指針p指向data區(qū)變量,而其本身存放在xdata區(qū)。

以前沒搞過C51,大學時代跟單片機老師的時候也是搗鼓下匯編,現(xiàn)在重新搞單片機,因為手頭資料不多,找到一些C51的程序,發(fā)現(xiàn)里面有這些關(guān)鍵字,不甚明了,沒辦法只好找了下,發(fā)現(xiàn)如下描述:

從數(shù)據(jù)存儲類型來說,8051系列有片內(nèi)、片外程序存儲器,片內(nèi)、片外數(shù)據(jù)存儲器,片內(nèi)程序存儲器還分直接尋址區(qū)和間接尋址類型,分別對應code、data、xdata、idata以及根據(jù)51系列特點而設定的pdata類型,使用不同的存儲器,將使程序執(zhí)行效率不同,在編寫C51程序時,最好指定變量的存儲類型,這樣將有利于提高程序執(zhí)行效率(此問題將在后面專門講述)。與ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各種不同的模式對應不同的實際硬件系統(tǒng),也將有不同的編譯結(jié)果。

在51系列中data,idata,xdata,pdata的區(qū)別

data:固定指前面0x00-0x7f的128個RAM,可以用acc直接讀寫的,速度最快,生成的代碼也最小。

idata:固定指前面0x00-0xff的256個RAM,其中前128和data的128完全相同,只是因為訪問的方式不同。idata是用類似C中的指針方式訪問的。匯編中的語句為:mox ACC,@Rx.(不重要的補充:c中idata做指針式的訪問效果很好)

xdata:外部擴展RAM,一般指外部0x0000-0xffff空間,用DPTR訪問。

pdata:外部擴展RAM的低256個字節(jié),地址出現(xiàn)在A0-A7的上時讀寫,用movx ACC,@Rx讀寫。這個比較特殊,而且C51好象有對此BUG,建議少用。但也有他的優(yōu)點,具體用法屬于中級問題,這里不提。

三、有關(guān)單片機ALE引腳的問題

"單片機不訪問外部鎖存器時ALE端有正脈沖信號輸出,此頻率約為時鐘振蕩頻率的1/6.每當訪問外部數(shù)據(jù)存儲器是,在兩個機器周期中ALE只出現(xiàn)一次,即丟失一個ALE脈沖."這句話是不是有毛病.我覺得按這種說法,應該丟失3個ALE脈沖才對,我一直想不通是怎么回事,希望大蝦們幫幫我.

答:

其他所有指令每6個機器周期發(fā)出一個ALE,而MOVX指令占用12個機器周期只發(fā)出一個ALE

四、如何將一個INT型數(shù)據(jù)轉(zhuǎn)換成2個CHAR型數(shù)據(jù)?

經(jīng)keil優(yōu)化后,char1=int1/256,char2=int1%256或char1=int1>>8,char2=int1&0x00ff效率是一樣的。

五、在KEIL C51上仿真完了,怎樣生成HEX文件去燒寫??

右鍵點項目中Target 1,選第二個,在OUTPUT中選中CREAT HEX

六、typedef 和 define 有何不同??

typedef 和 define 有何不同》》》 如

typedef unsigned char UCHAR ;

define unsigned char UCHAR ;

typedef命名一個新的數(shù)據(jù)類型,但實際上這個新的數(shù)據(jù)類型是已經(jīng)存在的,只不過是定義了

一個新的名字.

define只是一個標號的定義.

你舉的例子兩者沒有區(qū)別,但是define還可以這樣用

define MAX 100

define FUN(x) 100-(x)

define LABEL

等等,這些情況下是不能用typedef定義的

七、請問如何設定KELC51的仿真工作頻(時鐘)用右鍵點擊左邊的的target 1,然后在xtal一欄輸入

八、不同模塊怎樣共享sbit變量,extern不行?把SBIT定義單獨放到一個.H中,每個模塊都包含這個.h文件

九、C51中對于Px.x的訪問必須自己定義嗎?

是的。

如sbit P17 = 0x97;即可定義對P1.7的訪問

c語言實驗報告范文范文2:

一、 實驗目的

1、掌握指針的概念、會定義和使用指針變量

2、掌握指向數(shù)組的指針變量

3、掌握字符串指針的使用

二、 實驗內(nèi)容

1、 輸入3個字符串,按由小到大的順序輸出。(習題10.2)

2、 寫一函數(shù),求一個字符串的長度。在main函數(shù)中輸入字符串,并輸出其長度。(習題10.6)

3、 完善程序,要求使用函數(shù)功能:將一個數(shù)字字符串轉(zhuǎn)換成一個整數(shù)(不得調(diào)用C語言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。

include

include

long fun(char *p)

填寫程序

void main()

char s[6];

long n;

printf("Enter a string:\n");

gets(s);

n=fun(s);

printf("%ld\n",n);

三、 實驗步驟與過程

四、程序調(diào)試記錄

c語言實驗報告范文范文3:

一、 實驗目的

1、掌握c語言中的變量、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體等主要知識點。

2、掌握c程序的結(jié)構(gòu)化程序設計方法,能使用c語言開發(fā)簡單的應用程序。

3、掌握c程序的運行、調(diào)試方法等。

二、 實驗內(nèi)容

編寫一個學生信息排序程序。要求:

1、程序運行時可輸入n個學生的信息和成績(n預先定義)。

2、學生信息包括:學號、英文姓名、年齡;學生成績包括:語文、數(shù)學、計算機。

3、給出一個排序選擇列表,能夠按照上述所列信息(學號、姓名、年齡、語文、數(shù)學、計算機)中的至少一個字段進行排序,并顯示其結(jié)果。

1、 使用函數(shù)方法定義各個模塊。

三、 實驗步驟與過程

物理實驗報告 ·化學實驗報告 ·生物實驗報告 ·實驗報告格式 ·實驗報告模板

四、程序調(diào)試記錄

看過c語言實驗報告范文

58176