自-C51的結構體數據在單片機編程中的應用_第1頁
自-C51的結構體數據在單片機編程中的應用_第2頁
自-C51的結構體數據在單片機編程中的應用_第3頁
全文預覽已結束

下載本文檔

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

文檔簡介

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

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

3、 u c t sam p l e / * 結構體名*/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 ; ?它定義了一個反映某一時刻采得的溫度值、流量值等的結構體sam pie,同時定義了兩個具有 s t ruct s ample類型的變量(或參數)。2結構體數據的優(yōu)點(1 )有效利用內存空間? 在C5 1編譯

4、時,結構成員在內存中是順序存放的,因而不同類型的數據被有機地結合成了一個數據塊,使單片機有限的內存資源空間得以充分利用。?(2 )參數組織結構緊密、清晰結構體數據在多參數的智能化儀表設計中尤為適用,它可將同一屬性、不同類型的數據組織在一起,參數便于識別、調用。如編制某些通用型儀表 的程序,可定義下列結構體數據。?例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)的結構體類 型。它由放大環(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)兩個結構體數據。?例2 :儀表特征描述 描述儀表特征的數據可以組合成一個有機的結構體,以便于識別與調用。?struct m e t er? int meter no; / *儀表編號 * /char meter_code10; /* 儀表編碼* /i n t meter_ s ize; /* 儀表口徑 * /float m ete r _factor ; /*儀表系數* /? ch ar me t er_ze r o; / *儀表零點 */me terl ;(3)參數調

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

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

溫馨提示

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

評論

0/150

提交評論