新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)---Keil C語言

51單片機(jī)---Keil C語言

作者: 時(shí)間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
一、數(shù)據(jù)類型

sbit、sfr、sfr16屬于C51的擴(kuò)展數(shù)據(jù)類型;
1、sbit:定義可位尋址類型的變量,用于位尋址,從位尋址字節(jié)中定義位變量;sbit定義的變量屬于特殊功能寄存器類型的位變量,存放在特殊功能寄存器區(qū);
sbit的三種形式:
sbit 位變量名 = 位地址;
sbit 位變量名 = 特殊功能寄存器名 ^ 位位置;
sbit 位變量名 = 字節(jié)地址 ^ 位位置;
如:
sbit P1_0 = P1 ^ 0;
sbit P1_1 = P1 ^ 1;
sbit P1_2 = P2 ^ 2;
2、sfr/sfr16:分別定義8位和16位的特殊功能寄存器類型的變量,這種類型的變量存放的是硬件的物理地址碼;
sfr/sfr16的形式:
sfr 特殊功能寄存器名 = 特殊功能寄存器地址常數(shù)(地址常數(shù));
sfr16 特殊功能寄存器名 = 特殊功能寄存器地址常數(shù)(地址常數(shù));
如:
sfr P1 = 0x90; //定義P0口的物理地址碼;
sfr P2 = 0xA0; //定義P1口的物理地址碼;
sfr16 T2 = 0xCC; //定義T2的物理地址碼;
注意:sbit/sfr/sfr16定義的變量都存放在地址[80H,FFH]這16字節(jié)的地址范圍內(nèi);
二、新增加的關(guān)鍵字
interrupt:定義一個(gè)中斷服務(wù)函數(shù);
reentrant:定義一個(gè)可再重入函數(shù);
using:設(shè)定中斷服務(wù)函數(shù)所使用的工作寄存器組;
三、存儲(chǔ)類型
單片機(jī)的存儲(chǔ)空間在物理上分為4個(gè)部分:
A、片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū);
B、片外數(shù)據(jù)存儲(chǔ)區(qū);
C、片內(nèi)程序存儲(chǔ)區(qū);
D、片外程序存儲(chǔ)區(qū);
所以,存儲(chǔ)類型就分為以下6種:
1、code:程序代碼存儲(chǔ)區(qū)ROM,共64K,由MOVC @DPTR訪問;
2、data:可直接尋址的片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),共128字節(jié),訪問速度比較快;
3、bdata:可位尋址的片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),共16字節(jié)(128位),允許位與字節(jié)混合訪問;sbit/sfr/sfr16;
4、idata:可間接尋址的片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),共256字節(jié),允許訪問片內(nèi)全部的RAM空間;
5、pdata:可分頁尋址的片外數(shù)據(jù)存儲(chǔ)區(qū),共256字節(jié),由MOVX @Ri訪問;
6、xdata:可尋址的片外數(shù)據(jù)存儲(chǔ)區(qū),共64KB,由MOVX @DPTR訪問;
使用code來定義變量的存儲(chǔ)類型時(shí),編譯器會(huì)將其定義存放在程序代碼存儲(chǔ)區(qū)ROM中,這樣的話,這種類型的變量的值就不能再被修改了;


關(guān)鍵詞: 51單片機(jī)KeilC語

評(píng)論


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

關(guān)閉