新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > C51存儲類型

        C51存儲類型

        作者: 時間:2016-11-18 來源:網絡 收藏
        C51存貯器類型
        C51編譯器完全支持8051微處理器及其系列的結構,可完全訪問MCS-51硬件系統所有部分。每個變量可準確地賦予不同的存貯器類型(data,idata,pdata,xdata,code)。訪問內部數據存貯器(idata)要比訪問外部數據存貯器(xdata)相對要快一些,因此,可將經常使用的變量置于內部數據存貯器中,而將較大及很少使用的數據單元置于外部數據存貯器中。


        存貯器類型

        本文引用地址:http://www.104case.com/article/201611/315598.htm

        描 述


        data


        直接尋址內部數據存貯器,訪問變量速度最快(128bytes)


        bdata


        可位尋址內部數據存貯器,允許位與字節混合訪問(16 bytes)


        iIdata


        間接尋址內部數據存貯器,可訪問全部地址空間(256bytes)


        pPdata


        分頁(256bytes)外部數據存貯器,由操作碼MOVX @Ri訪問


        xdata


        外部數據存貯器(64K),由MOVX @DPTR訪問


        code


        代碼數據存貯器(64K),由MOVC @A+DPTR訪問


        變量說明舉例:

        data char charvar;

        char code msg[]=”ENTER PARAMETER:”;

        unsigned long xdata array[100];

        float idata x,y,z;

        unsigned char xdata vector[10][4][4];

        sfr p0=0x80;

        sbit RI="0x98";

        char bdata flags;

        sbit flago="flags"^0;

        如果在變量說明時略去存貯器類型標志符,編譯器會自動選擇默認的存貯器類型。默認的存貯器類型進一步由控制指令SMALL、COMPACT和LARGE限制。例如:如果聲明char charvar,則默認的存貯器模式為SMALL,charvar放在data存貯器;如果使用COMPACT模式,則charvar放入idata存貯區;在使用LARGE模式的情況下,charvar被放入外部存貯區或xdata存貯區。
        存貯器模式

        存貯器模式決定了自動變量和默認存貯器類型,參數傳遞區和無明確存貯區類型的說明。在固定的存貯器地址變量參數傳遞是C51的一個標準特征,在SMALL模式下參數傳遞是在內部數據存貯區中完成的。LARGRE和COMPACT模式允許參數在外部存貯器中傳遞。C51同時也支持混合模式,例如在LARGE模式下生成的程序可將一些函數分頁放入SMALL模式中從而加快執行速度。



        存貯器模式


        描 述


        SMALL


        參數及局部變量放入可直接尋址的內部寄存器(最大128bytes,默認存貯器類型是DATA)


        COMAPCT


        參數及局部變量放入分頁外內部存貯區(最大256bytes,默認存貯器類型是PDATA)


        LARGE


        參數及局部變量直接放入外部數據存貯器(最大64K,默認存貯器類型是XDATA)


        if ($ != jQuery) { $ = jQuery.noConflict(); } var isLogined = false; var cb_blogId = 45554; var cb_entryId = 1552895; var cb_blogApp = "papam"; var cb_blogUserGuid = "c3f8460b-63cf-dd11-9e4d-001cf0cd104b"; var cb_entryCreatedDate = 2009/8/24 14:49:00;


        關鍵詞: C51存儲類

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 南华县| 白朗县| 工布江达县| 桓台县| 扎兰屯市| 金堂县| 邹城市| 盐池县| 界首市| 福建省| 天台县| 西安市| 兴义市| 成都市| 梧州市| 定南县| 惠水县| 合川市| 崇仁县| 唐山市| 天峻县| 云浮市| 原阳县| 肇源县| 陕西省| 东兰县| 土默特左旗| 桃园市| 且末县| 漳州市| 库车县| 鄂托克旗| 水城县| 科技| 汶上县| 公安县| 遵义县| 梁河县| 阿图什市| 隆林| 曲阳县|