新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機c語言教程:C51變量

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

        作者: 時間:2012-09-11 來源:網絡 收藏

        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型整數的指針,而state本身則依存儲模式存放。

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

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

        2. 2. 存儲器指針

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

        char data * str;str指向data區中char型數據

        int xdata * pow; pow指向外部RAM的int型整數。

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

        3. 3. 指針轉換

        即指針在上兩種類型之間轉化:

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

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

        l 能強行改變指針類型。

        的存儲類別

        一、static(靜態局部)。

        1、靜態局部變量在程序整個運行期間都不會釋放內存。

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

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

        4、雖然靜態變量在函數調用結束后仍然存在,但是其他函數不能引用。

        二、用extern聲明外部變量。

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

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

        c語言相關文章:c語言教程


        單片機相關文章:單片機教程


        單片機相關文章:單片機視頻教程


        單片機相關文章:單片機工作原理


        存儲器相關文章:存儲器原理


        塵埃粒子計數器相關文章:塵埃粒子計數器原理
        激光器相關文章:激光器原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 厦门市| 德清县| 额尔古纳市| 图木舒克市| 建阳市| 库尔勒市| 石首市| 酒泉市| 星子县| 佛坪县| 友谊县| 新津县| 江口县| 通州区| 土默特右旗| 黔江区| 石景山区| 福建省| 武山县| 三亚市| 澄江县| 长顺县| 台南县| 定州市| 漾濞| 汉源县| 洪湖市| 白城市| 吴忠市| 罗平县| 厦门市| 台东县| 宁陵县| 内丘县| 来凤县| 临城县| 芦溪县| 盐津县| 繁峙县| 通城县| 成都市|