自-C51的結(jié)構(gòu)體數(shù)據(jù)在單片機編程中的應(yīng)用_第1頁
自-C51的結(jié)構(gòu)體數(shù)據(jù)在單片機編程中的應(yīng)用_第2頁
自-C51的結(jié)構(gòu)體數(shù)據(jù)在單片機編程中的應(yīng)用_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、隨著單片機應(yīng)用領(lǐng)域的逐漸擴展和顯示、通信技術(shù)的不斷進步,單片機開發(fā)所要求的人機界面越來越豐富,以單片機為核心應(yīng)用的產(chǎn)品已由純實用向功能化、可視化、網(wǎng)絡(luò)化發(fā) 展。HMI (人機界面)技術(shù)及產(chǎn)品在近兩年成為發(fā)展最快的領(lǐng)域。為了實現(xiàn)以更多的人 機交互信息、更清晰的儀表硬件描述為特征的HMI功能,相應(yīng)地,單片機編程中的參數(shù)量及參數(shù)類型不斷增加,僅有基本類型變量(如位、字節(jié)、整型、浮點型、指針型)和數(shù)組變量已不能完全有效地表達參數(shù)的特性。使用C5 1編譯支持的一種結(jié)構(gòu)體(s t ruct)數(shù)據(jù)類型,可有效地解決許多編程中所面臨的種種數(shù)據(jù)結(jié)構(gòu)管理問題。1結(jié)構(gòu)體數(shù)據(jù)除了基本類型數(shù)據(jù),數(shù)組是C5 1編程中一種

2、常用的構(gòu)造類型數(shù)據(jù)。它由上述基本類型數(shù)據(jù)(位、指針除外)組成,并且一個數(shù)組的各元素應(yīng)屬于同一個類型。但是,只有這些數(shù)據(jù)類型并不能很好地表達我們所要引用的數(shù)據(jù),有時需要將不同類型的數(shù)據(jù)組合成一個有 機的整體,以便于引用。例如,要保存一組采樣值:時間(月、日時、分)、溫度、流量等,如果分別將它們定義為互相獨立的簡單變量,難以反映它們的內(nèi)在聯(lián)系。應(yīng)當把它們 組織成一個組合項,在一個組合項中包含若干個類型不同(也可以相同)的數(shù)據(jù)項。這樣的數(shù)據(jù)結(jié)構(gòu)稱為結(jié)構(gòu)體(st r uc t ur e)。定義一個結(jié)構(gòu)體類型的一般形式為:? struc t結(jié)構(gòu)體名成員表列; ?例如上面提到的一組數(shù)據(jù),可以表示為:str

3、 u c t sam p l e / * 結(jié)構(gòu)體名*/char m on t h; / *月 * /ch ar day ;/ * 日 */ ?c h ar h our ; /* 時 */cha r minute; / * 分 */ ? int t em prat u re; /* 溫度 */ ? floa t flow ; /*流量等*/?s a mp 1 e1, Sa mpl e 2 ; ?它定義了一個反映某一時刻采得的溫度值、流量值等的結(jié)構(gòu)體sam pie,同時定義了兩個具有 s t ruct s ample類型的變量(或參數(shù))。2結(jié)構(gòu)體數(shù)據(jù)的優(yōu)點(1 )有效利用內(nèi)存空間? 在C5 1編譯

4、時,結(jié)構(gòu)成員在內(nèi)存中是順序存放的,因而不同類型的數(shù)據(jù)被有機地結(jié)合成了一個數(shù)據(jù)塊,使單片機有限的內(nèi)存資源空間得以充分利用。?(2 )參數(shù)組織結(jié)構(gòu)緊密、清晰結(jié)構(gòu)體數(shù)據(jù)在多參數(shù)的智能化儀表設(shè)計中尤為適用,它可將同一屬性、不同類型的數(shù)據(jù)組織在一起,參數(shù)便于識別、調(diào)用。如編制某些通用型儀表 的程序,可定義下列結(jié)構(gòu)體數(shù)據(jù)。?例1 :放大環(huán)節(jié)描述? struct am pl if ier? int gain ; ? ch a r of fs et; in put_amp,o ut p ut_ a mp; ?以上定義了一個表示放大環(huán)節(jié)(a mpli fi er)的結(jié)構(gòu)體類 型。它由放大環(huán)節(jié)增益(gain )和

5、放大環(huán)節(jié)零點(o f fset)組成,并且定義了輸入環(huán)節(jié)(i nput_a mp )和輸出環(huán)節(jié)(ou tpu t_ a mp)兩個結(jié)構(gòu)體數(shù)據(jù)。?例2 :儀表特征描述 描述儀表特征的數(shù)據(jù)可以組合成一個有機的結(jié)構(gòu)體,以便于識別與調(diào)用。?struct m e t er? int meter no; / *儀表編號 * /char meter_code10; /* 儀表編碼* /i n t meter_ s ize; /* 儀表口徑 * /float m ete r _factor ; /*儀表系數(shù)* /? ch ar me t er_ze r o; / *儀表零點 */me terl ;(3)參數(shù)調(diào)

6、用方便?結(jié)構(gòu)體數(shù)據(jù)的調(diào)用方式有多種,最直接的方式為:結(jié)構(gòu)體變量名成員名如例2中,可以對變量賦值:met e rl.met e r_fac t or= l .0;這里著重介紹一種通過指針調(diào)用的方式。該方式在對結(jié)構(gòu)體數(shù)據(jù)作順序存取時尤為方便。在數(shù)據(jù)存儲區(qū)有以下結(jié)構(gòu):? stru c t p a ra ? int prO ;ch a r pr1 ;fl o at pr2 ;? par a me te r; ?在程序存儲區(qū)與之相對應(yīng)存放一組成員名數(shù)據(jù)表paramete r_name m n。該表包含表 1所列內(nèi)容。參數(shù)類型地址偏移量參數(shù)名備注i0"XXXXXX"成員0c2"

7、;XXXXXX"成員lf3"XX XXXX"成員2成員n在引用時,先設(shè)計兩個指針變量,分別指向數(shù)據(jù)存儲區(qū)和程序存儲區(qū):?p 指向數(shù)據(jù)存儲區(qū);p c c指向程序存儲區(qū);? p =&pa ra meter. p r0;定位指針指向參數(shù)值首地址;?p cc=&pa r ameter name; 定位指針指向參數(shù)名首地址。需要調(diào)用第i個參數(shù)時:? p + *( p cc +n*i +l )指向第m 個參數(shù);?(pcc + n*i)中存 放的是該參數(shù)的數(shù)據(jù)類型。?這樣,就可以根據(jù)數(shù)據(jù)類型的不同分支,對不同類型的數(shù)據(jù)進行相應(yīng)的處理。?( 4 )提高編程效率數(shù)據(jù)變量的有效組織使得程序的編制更便于結(jié)構(gòu)化、模塊化,從而方便了程序后續(xù)的擴展,可以極大地加快單片機開發(fā)者的開發(fā)進度。3總結(jié)? 由于單片機內(nèi)存資源的限制, 如何合理、有

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論