可以帶。
在51單片機的嵌入式C語言中,指針同樣是被支持的。所以在單片機上一樣可以使用指針操作,具體使用方法,與標准C語言並沒有不同。
不過需要注意的是,使用指針代表著間接定址,相對變數的直接定址,速度要稍慢一些。而單片機運算速度較慢,大量使用指針有可能會降低執行效率,影響效果。所以除非必要,還是少用指針。
❷ 單片機中的 指針 應用。
單片機中你最好不要使用指針,指針隨意性很容易越界.建議使用數組.
ps:第一次做程序我不信,使用過指針,後來受苦了.不過,在其它方面指針確實有其易用性.
❸ 51單片機C語言編程問題,關於指針的運用問題,菜鳥求解求。
#include<reg51.h>
int a[ ]={0x90,0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xcf,0xc0};
int *pa;
sbit p25=P2^5;
sbit p26=P2^6;
sbit p27=P2^7;
int time1,time2;
uint i; //添加個循環控制變數
void main()
{
P1=0xfe;
p25=0,p26=0,p27=0;
while(1)
{
pa=&a[0]; //指針指向數組首地址
// for(pa=9;pa>0;pa--) //這里就有問題了,指針值=9,
//那就相當於硬體地址為9的存儲單元的內容
for(i=9;i>=0;i--) //多定義一個循環變數就可以解決
{
// P0=*pa; //這樣的取值需要修改下
P0=*(pa+i); //數組逆序讀出
for(time1=9801;time1>0;time1--)
{
time2=8;
while(time2--);
}
}
}
}
❹ 單片機指針最常見的兩種
int,pi。
指針是一個變數,它與其他變數一樣,都是RAM中的一個區域,且都可以被賦值通常認為,C語言之所以強大,以及其自由性,很大部分體現在其靈活的指針運用上,甚至認為指針是C語言的靈魂,這里說通常,是廣義上的,因為隨著編程語言的發展,指針也飽受爭議,並不是所有人都承認指針的,強大」和,優點」。
❺ 51單片機中程序指針PC和數據指針DPTR各自有什麼用途電路復位後,二者的值各是多 少
程序計數器PC(program Counter)
程序計數器在物理上是獨立的,它不屬於特殊內部數據存儲器塊中。PC是一個16位的計數器,
用於存放一條要執行的指令地址,定址范圍為64kB,PC有自動加1功能,即完成了一條指令的執行後,其內容自動加1。PC本身並沒有地址,因而不可定址,用戶無法對它進行讀寫,但是可以通過轉移、調用、返回等指令改變其內容,以控製程序按我們的要求去執行。
復位後為0000H(16位)
數據指針(DPTR)
數據指針為16位寄存器,編程時,既可以按16位寄存器來使用,也可以按兩個8位寄存器來使用,即高位位元組寄存器DPH和低位位元組DPL。
DPTR主要是用來保存16位地址,當對64kB外部數據存儲器定址時,可作為間址寄存器使用,此時,使用如下兩條指令:
MOVX A, @DPTR
MOVX @DPTR, A
在訪問程序存儲器時,DPTR可用來作基址寄存器,採用基址+變址定址方式訪問程序存儲器,這條指令常用於讀取程序存儲器內的表格數據。
MOVC A, @A+@DPTR
復位後為0000H(16位)
❻ 單片機的指針相當於plc的什麼功能
單片機與PLC的區別
1.PLC是建立在單片機之上的產品,單片機是一種可編程的集成晶元。2.PLC更加適合於工業惡劣環境下使用使用比較穩定而單片機的工作環境要高一些;3.價格不同。單片機開發成本低,一個單片機十幾塊到幾十塊,但開發起來麻煩。PLC的價格幾百,幾千,幾萬,但是開發周期短,見效快。可靠性高。4.PLC有有一定的互換性,質量有保證,編程軟體正朝標准化方向邁進。而單片機應用系統則是功能千差萬別,質量參差不齊,學習、使用和維護都很困難。5.單片機的編程語言是C語言或匯編語言,也採用自帶的編程語言(如51單片機的ASM語言)。PLC的編程語言有:梯形圖語言(LD)、指令表語言(IL)、功能模塊圖語言(FBD)、順序功能流程圖語言(SFC)、結構化文本語言(ST)。6.PLC是應用單片機構成的比較成熟的控制系統,是已經調試成熟穩定的單片機應用系統的產品,有較強的通用性。而單片機可以構成各種各樣的應用系統,使用范圍更廣。單就「單片機」而言,它只是一種集成電路,還必須與其它元器件及軟體構成系統才能應用。7.於量大的配套項目,採用單片機系統具有成本低、效益高的優點,但這要有相當的研發力量和行業經驗才能使系統穩定、可靠地運行。最好的方法是單片機系統嵌入PLC的功能,這樣可大大簡化單片機系統的研製時間,性能得到保障,效益也就有保證。
❼ 51單片機中,指針函數 在C語言程序 如何使用
你好,比較方便的實現方式是在函數的外部申請數組;在調用函數的時候傳入數組的地址進行操作。如果一定要在子函數內部申請空間並返回地址,那麼需要在子函數內部動態申請內存空間。具體的方法一般是使用標准庫中的malloc函數。對於c51函數庫,參考這個鏈接:http://www.keil.com/support/man/docs/c51/c51_malloc.htm
❽ 單片機中程序指針、數據指針、堆棧指針區別是什麼
首先,你要明白一個概念,指針,是做什麼的?答案是,指針,是指向地址的。
程序指針,指向的空間,在物理上是Flash,在邏輯上,就是代碼空間。比如說51單片機的PC指針,指向的就是Flash,即程序下一步要執行的指令的地址。
數據指針,指向的空間,在物理上有Flash和RAM,在邏輯上是Flash里的常數空間和數據空間,注意,是對於單片機來說,對於我們的電腦,常數空間不是在Flash上。
比如說51單片機的DPTR,如果用MOVC
A,@A+DPTR,此時,就是指向常數空間,如果用
MOVX
A,@A+DPTR就是指向的數據空間。
堆棧指針,指向的空間,在物理上是RAM,在邏輯上,就是數據空間,是特定的數據空間,堆棧是數據空間中單獨劃分出來,專門用於寄存中間結果的內存空間。
數據指針和堆棧指針主要有兩個區別:
一是數據指針可以指向Flash,即可以指向常數,比如說我們定義一個數組
unsigned
char
code
Table[99],此時,就是DPTR可以指向常數空間。堆棧指針是不可以的,只能是指向RAM。
第二個區別,堆棧指針指向的是特定的數據空間,這個特定的數據空間,是從整個數據空間里劃分出來,專門用於作堆棧用的,堆棧區間一旦劃分出來,堆棧指針在規則上,就只能在這個范圍內活動,如果出了這個范圍,可能導致整個程序的崩潰。而數據指針在規則上,可以指向整個數據空間,但是,可以讀堆棧空間,不應該去修改,否則也可能導致程序的崩潰。