新聞中心

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

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

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

        一個文件中: int abc;

        另外一個文件中: extern abc;

        例子:

        用extern將外部的作用域擴展到其他文件:

        文件1:
        //用extern將外部的作用域擴展到其他文件中
        #include
        #include
        #include
        unsigned int array[10];
        void fillarray();
        void init_ser()
        {
        SCON=0X50;
        TMOD|=0X20;
        TH1=0XF3;
        TR1=1;
        TI=1;
        }
        void main()
        {
        unsigned int i;
        init_ser();
        fillarray();
        for(i=0;i10;i++)
        {
        printf(array[%d]=%dn,i,array[i]);
        }
        for(;;){;}
        }

        文件2:
        extern int array[10];
        void fillarray()
        {
        unsigned char i;
        for(i=0;i10;i++)
        {
        array[i]=i;
        }
        }

        c的空間分配幾個方法

        1、 data區空間小,所以只有頻繁用到或對運算速度要求很高的變量才放到data區內,比如for循環中的計數值。

        2、 data區內最好放局部變量。

        因為局部變量的空間是能覆蓋的某個函數的局部變量空間在退出該函數是就釋放,由別的函數的局部變量覆蓋),能提高內存利用率。當然靜態局部變量除外,其內存使用方式與全局變量相同;

        3、 確保你的程序中沒有未調用的函數。

        在Keil C里遇到未調用函數,編譯器就將其認為可能是中斷函數。函數里用的局部變量的空間是不釋放,也就是同全局變量一樣處理。這一點Keil C做得很愚蠢,但也沒辦法。

        4、 程序中遇到的邏輯標志變量能定義到bdata中,能大大降低內存占用空間。

        在51系列芯片中有16個字節位尋址區bdata,其中能定義8*16=128個邏輯變量。定義方法是: bdata bit LedState;但位類型不能用在數組和結構體中。

        5、 其他不頻繁用到和對運算速度要求不高的變量都放到xdata區。

        6、 如果想節省data空間就必須用large模式,將未定義內存位置的變量全放到xdata區。當然最好對所有變量都要指定內存類型。

        7、 當使用到指針時,要指定指針指向的內存類型。

        c51中未定義指向內存類型的通用指針占用3個字節;而指定指向data區的指針只占1個字節;指定指向xdata區的指針占2個字節。如指針p是指向data區,則應定義為: char data *p;。還可指定指針本身的存放內存類型,如:char data * xdata p;。其含義是指針p指向data區變量,而其本身存放在xdata區。

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


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


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


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


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


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

        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 通州市| 红河县| 富锦市| 洞口县| 渝中区| 永福县| 右玉县| 五指山市| 大英县| 文水县| 河间市| 高唐县| 兴宁市| 信宜市| 利津县| 左权县| 晋城| 玛曲县| 灵山县| 梨树县| 阿克陶县| 红原县| 濉溪县| 曲阳县| 涪陵区| 山西省| 共和县| 广德县| 长顺县| 永安市| 河津市| 株洲县| 万安县| 长子县| 武穴市| 枝江市| 香格里拉县| 聂拉木县| 沁源县| 敖汉旗| 嫩江县|