stc单片机c语言 pdf,STC单片机C语言程序设计 第13章 STC单片机C语言指针.pdf
STC單片機C語言指針
主講:何賓
Email :hebin@mail.buct.edu.cn
2016.03
C51編譯器中指針的分類
Cx51編譯器支持使用字符“*”聲明變量指針。C51編譯器可
以執行在標準C中所提供的所有操作。但是,由于8051獨一無二的
結構以及特點,C51編譯器提供兩種不同類型的指針,即:通用指
針和指定存儲器的指針。
通用指針
--未指定存儲區域的通用指針
C語言通用指針的聲明格式:
數據類型 *指針名字
【例13-1】通用指針聲明的例子
char *s; //指向字符的指針
int *number; //指向基本整型數的指針
long *state; //指向長整型數的指針
對于通用指針來說,使用三個字節保存。即第一個字節表示存儲器
的類型;第二個字節表示偏移地址的高8位;第三個字節表示偏移
地址的低8位。對于通用指針來說,它可以訪問保存在8051存儲器
系統的任何位置的變量。
通用指針
--未指定存儲區域的通用指針
前面提到過:
&變量/數組名字
它表示獲取變量所在單片機存儲空間的地址,或者是數組所在單片
機存儲空間的起始地址。
例如:如下聲明:
int *p1 ;
int a ;
當進行下面操作:
p1=&a;
通用指針
--未指定存儲區域的通用指針
表示p1的值為變量a所在單片機存儲空間的具體地址信息。該
地址的內容就是變量a的值,用形式化的方式可以這樣表示:
(p1)=a;
因此,*p1實際上就是獲取指向地址的內容。所以,*p1的值就是變
量a的值。
注 :在單片機中并不存在指針這樣一個功能部件,正如上面所提到的,這只是C
語言對存儲器直接尋址模式的抽象而已。
*和指針名字之間不能有空格。
通用指針
--未指定存儲區域的通用指針
【例13-2】查看通用指針的例子
代碼清單13-1(1) main.c文件
int main()
{
int a=50,*p1;
float b=45.13,*p2;
char c=40,*p3;
p1=&a;
p2=&b;
p3=&c;
return 0;
}
通用指針
--未指定存儲區域的通用指針
下面對該程序進行分析,步驟包括:
?讀者可以進入到本書所提供資料的stc_program_example\例子
13-2目錄下,在Keil
μVision5集成開發環境下打開該設計。
?進入調試器模式,查看Disassembly窗口內的反匯編代碼,代碼
中加入了注釋,幫助讀者進行分析。
代碼清單13-1(2) Disassembly窗口內的反匯編代碼清單
2: {
通用指針
--未指定存儲區域的通用指針
3: int a=50,*p1;
//將立即數50(0x32)保存到8051片內數據區地址為0x08和0x09的單元
C:0x0003 750800 MOV 0x08,#0x00
C:0x0006 750932 MOV 0x09,#0x32
4: float b=45.13,*p2;
//將浮點數保存到8051片內數據區地址為0x0D、0x0E、0x0F和0x10的單元
C:0x0009 75101F MOV 0x10,#0x1
總結
以上是生活随笔為你收集整理的stc单片机c语言 pdf,STC单片机C语言程序设计 第13章 STC单片机C语言指针.pdf的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 70后社保补缴新规,2020年最多可以补
- 下一篇: 51单片机外部地址c语言,cx51与c语