新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機c語言教程:C51變量

單片機c語言教程:C51變量

作者: 時間:2012-09-11 來源:網(wǎng)絡(luò) 收藏

void main(void)
{
unsigned int a;
unsigned char b;
do{
for (a=0;a50000;a++)
P1_0 = 0; //點亮P1_0
for (a=0;a50000;a++)
P1_7 = 0; //點亮P1_7
for (b=0;b255;b++)
{
for (a=0;a10000;a++)
P1 = b; //用b的值來做跑馬燈的花樣
}
P1 = 255; //熄滅P1上的LED
for (b=0;b255;b++)
{
for (a=0;a10000;a++) //P1_1閃爍
P1_1 = 0;
for (a=0;a10000;a++)
P1_1 = 1;
}
}while(1);
}

. Keil c51指針

c支持一般指針(Generic Pointer)和存儲器指針(Memory_Specific Pointer).

1. 1. 一般指針

一般指針的聲明和使用均與標準C相同,不過同時還能說明指針的存儲類型,例如:

long * state;為一個指向long型整數(shù)的指針,而state本身則依存儲模式存放。

char * xdata ptr;ptr為一個指向char數(shù)據(jù)的指針,而ptr本身放于外部RAM區(qū),以上的long,char等指針指向的數(shù)據(jù)可存放于任何存儲器中。

一般指針本身用3個字節(jié)存放,分別為存儲器類型,高位偏移,低位偏移量。

2. 2. 存儲器指針

基于存儲器的指針說明時即指定了存貯類型,例如:

char data * str;str指向data區(qū)中char型數(shù)據(jù)

int xdata * pow; pow指向外部RAM的int型整數(shù)。

這種指針存放時,只需一個字節(jié)或2個字節(jié)就夠了,因為只需存放偏移量。

3. 3. 指針轉(zhuǎn)換

即指針在上兩種類型之間轉(zhuǎn)化:

l 當基于存儲器的指針作為一個實參傳遞給需要一般指針的函數(shù)時,指針自動轉(zhuǎn)化。

l 如果不說明外部函數(shù)原形,基于存儲器的指針自動轉(zhuǎn)化為一般指針,導致錯誤,因而請用“#include”說明所有函數(shù)原形。

l 能強行改變指針類型。

的存儲類別

一、static(靜態(tài)局部)

1、靜態(tài)局部變量在程序整個運行期間都不會釋放內(nèi)存。

2、對于靜態(tài)局部變量,是在編譯的時候賦初值的,即只賦值一次。如果在程序運行時已經(jīng)有初值,則以后每次調(diào)用的時候不再重新賦值。

3、如果定義局部變量的時候不賦值,則編譯的時候自動賦值為0。而對于自動變量而言,定義的時候不賦值,則是一個不確定的值。

4、雖然靜態(tài)變量在函數(shù)調(diào)用結(jié)束后仍然存在,但是其他函數(shù)不能引用。

二、用extern聲明外部變量。

用extern聲明外部變量,是為了擴展外部變量的作用范圍。比如一個程序能由多個源程序文件組成。如果一個程序中需要引用另外一個文件中已經(jīng)定義的外部變量,就需要使用extern來聲明。

正確的做法是在一個文件中定義外部變量,而在另外一個文件中使用extern對該變量作外部變量聲明。

c語言相關(guān)文章:c語言教程


單片機相關(guān)文章:單片機教程


單片機相關(guān)文章:單片機視頻教程


單片機相關(guān)文章:單片機工作原理


存儲器相關(guān)文章:存儲器原理


塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理
激光器相關(guān)文章:激光器原理


關(guān)鍵詞: 變量 C51 教程 語言 單片機

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉