導航:首頁 > 操作系統 > 單片機bdata

單片機bdata

發布時間:2023-02-09 01:31:49

單片機兩秒子程序怎麼賦值

在定義格式中除了數據類型和變數名表是必要的,其它都是可選項。存儲種類有四種:自動(auto),外部(extern),靜態(static)和寄存器(register),預設類型為自動(auto)。

而這里的數據類型則是和我們在第四課中學習到的名種數據類型的定義是一樣的。說明了一個變數的數據類型後,還可選擇說明該變數的存儲器類型。存儲器類型的說明就是指定該變數在C51硬體系統中所使用的存儲區域,並在編譯時准確的定位。表6-1中是KEIL uVision2所能認別的存儲器類型。注意的是在AT89C51晶元中RAM只有低128位,位於80H到FFH的高128位則在52晶元中才有用,並和特殊寄存器地址重疊。特殊寄存器(SFR)的地址表請看附錄二AT89C51特殊功能寄存器列表

存儲器類型

說明

data

直接訪問內部數據存儲器(128位元組),訪問速度最快

bdata

可位定址內部數據存儲器(16位元組),允許位與位元組混合訪問

idata

間接訪問內部數據存儲器(256位元組),允許訪問全部內部地址

pdata

分頁訪問外部數據存儲器(256位元組),用MOVX @Ri指令訪問

xdata

外部數據存儲器(64KB),用MOVX @DPTR指令訪問

code

程序存儲器(64KB),用MOVC @A+DPTR指令訪問

表6-1存儲器類型

如果省略存儲器類型,系統則會按編譯模式SMALL,COMPACT或LARGE所規定的默認存儲器類型去指定變數的存儲區域。無論什麼存儲模式都可以聲明變數在任何的8051存儲區范圍,然而把最常用的命令如循環計數器和隊列索引放在內部數據區可以顯著的提高系統性能。還有要指出的就是變數的存儲種類與存儲器類型是完全無關的。

SMALL存儲模式把所有函數變數和局部數據段放在8051系統的內部數據存儲區這使訪問數據非常快,但SMALL存儲模式的地址空間受限。在寫小型的應用程序時,變數和數據放在data內部數據存儲器中是很好的因為訪問速度快,但在較大的應用程序中data區最好只存放小的變數、數據或常用的變數(如循環計數、數據索引),而大的數據則放置在別的存儲區域。

COMPACT存儲模式中所有的函數和程序變數和局部數據段定位在8051系統的外部數據存儲區。外部數據存儲區可有最多256位元組(一頁),在本模式中外部數據存儲區的短地址用@R0/R1。

LARGE存儲模式所有函數和過程的變數和局部數據段都定位在8051系統的外部數據區外部數據區最多可有64KB,這要求用DPTR數據指針訪問數據。

之前提到簡單提到sfr,sfr16,sbit定義變數的方法,下面我們再來仔細看看。

sfr和sfr16可以直接對51單片機的特殊寄存器進行定義,定義方法如下:

sfr 特殊功能寄存器名= 特殊功能寄存器地址常數;

sfr16 特殊功能寄存器名= 特殊功能寄存器地址常數;

我們可以這樣定義AT89C51的P1口sfr P1 = 0x90; //定義P1 I/O口,其地址90H sfr關鍵定後面是一個要定義的名字,可任意選取,但要符合標識符的命名規則,名字最好有一定的含義如P1口可以用P1為名,這樣程序會變的好讀好多。等號後面必須是常數,不允許有帶運算符的表達式,而且該常數必須在特殊功能寄存器的地址范圍之內(80H-FFH),具體可查看附錄中的相關表。sfr是定義8位的特殊功能寄存器而sfr16則是用來定義16位特殊功能寄存器,如8052的T2定時器,可以定義為:

sfr16 T2 = 0xCC; //這里定義8052定時器2,地址為T2L=CCH,T2H=CDH

用sfr16定義16位特殊功能寄存器時,等號後面是它的低位地址,高位地址一定要位於物理低位地址之上。注意的是不能用於定時器0和1的定義。

sbit可定義可位定址對象。如訪問特殊功能寄存器中的某位。其實這樣應用是經常要用的如要訪問P1口中的第2個引腳P1.1。我們可以照以下的方法去定義:

(1)sbit 位變數名=位地址

sbit P1_1 = Ox91;

這樣是把位的絕對地址賦給位變數。同sfr一樣sbit的位地址必須位於80H-FFH之間。

(2)Sbit 位變數名=特殊功能寄存器名^位位置sft P1 = 0x90;

sbit P1_1 = P1 ^ 1; //先定義一個特殊功能寄存器名再指定位變數名所在的位置當可定址位位於特殊功能寄存器中時可採用這種方法

(3)sbit 位變數名=位元組地址^位位置

sbit P1_1 = 0x90 ^ 1; 這種方法其實和2是一樣的,只是把特殊功能寄存器的位址直接用常數表示。

在C51存儲器類型中提供有一個bdata的存儲器類型,這個是指可位定址的數據存儲器,位於單片機的可位定址區中,可以將要求可位錄址的數據定義為bdata,如:

unsigned char bdata ib; //在可位錄址區定義ucsigned char類型的變數ib

int bdata ab[2]; //在可位定址區定義數組ab[2],這些也稱為可定址位對象

sbit ib7=ib^7 //用關鍵字sbit定義位變數來獨立訪問可定址位對象的其中一位

sbit ab12=ab[1]^12; 操作符"^"後面的位位置的最大值取決於指定的基址類型,char0-7,int0-15,long0-31。

下面我們用上一課的電路來實踐一下這一課的知識。同樣是做一下簡單的跑馬燈實驗,項目名為RunLED2。程序如下:

sfr P1 = 0x90; //這里沒有使用預定義文件,

sbit P1_0 = P1 ^ 0; //而是自己定義特殊寄存器

sbit P1_7 = 0x90 ^ 7; //之前我們使用的預定義文件其實就是這個作用

sbit P1_1 = 0x91; //這里分別定義P1埠和P10,P11,P17引腳

void main(void)

{

unsigned int a;

unsigned char b;

do{

for (a=0;a<50000;a++)

P1_0 = 0; //點亮P1_0

for (a=0;a<50000;a++)

P1_7 = 0; //點亮P1_7

for (b=0;b<255;b++)

{

for (a=0;a<10000;a++)

P1 = b; //用b的值來做跑馬燈的花樣

}

P1 = 255; //熄滅P1上的LED

for (b=0;b<255;b++)

{

for (a=0;a<10000;a++) //P1_1閃爍

P1_1 = 0;

for (a=0;a<10000;a++)

P1_1 = 1;

}

}while(1);

}

轉自:http://blog.sina.com.cn/s/blog_739afc250100vbpj.html

相關資源:51單片機C語言變數定義.pdf_單片機c語言變數定義-其它文檔類資源...
文章知識點與官方知識檔案匹配
C技能樹首頁概覽
109381 人正在系統學習中

Ⅱ c51中bdata是什麼意思

c51中"bdata"是片內RAM,位定址方式;存儲器類型說明的意思。

Ⅲ bdata 用法 意思 求解釋 等待中

bdata用於將變數定義在可位定址片內數據存儲區,允許位與位元組混合訪問。
例:bit bdata flag
位變數flag被定義為bdata存儲類型,編譯時編譯器將把該變數定位在51單片機片內數據存儲區(RAM)中的位定址區(地址:20H----2FH)

Ⅳ 單片機C51編程中bdata的問題。

暈死了.
你根本就沒有分清楚 C51中位操作.和 C語言中的異或操作符號.
sbit led_1 = output_sel^5; //這個是位操作
led_1 = temp^0; //這個是異或操作..

如果
temp = 0x0;
temp^0 = 0b0000,0000 ^ 0b0000,0000 = 0b0000,0000
所以led_1 = 0;
同理
temp^1 = 0b0000,0001 ->led_2 = 1;
temp^2 = 0b0000,0010 ->led_3 = 1;
temp^2 = 0b0000,0011 ->led_4 = 1;
也就是你上面說的 只有一個燈亮的情況了.

Ⅳ 在C51單片機中,若將變數存儲類型定義為bdata,則它可能的地址是為什麼

0x20 ~ 0x3F
因為bdata類型對應 片內ram 可位定址的這個范圍

Ⅵ 在51中bdata 是表示什麼,如果我用盛群的單片機 應該怎樣定義uchar bdata sta; sbit RX_DR =sta^6;

bdata就是可位定址內部數據存儲區 允許位與位元組混合訪問(16B)
盛群的單片機我沒有用過 單片機的原理應該和51的也差不多吧
unsigned char uchar;
uchar bdata sta;
sbit RX-DR=sta^6;

Ⅶ 求助51單片機的問題關於bdata

埠的位與內存中的位定義不同。
I/O口的位定義直接用sbit;
內存中位區定義才用bdata和bit.

Ⅷ 單片機C51編程中bdata的問題

bdata是位變數地址空間,物理地址為20H~2FH,位地址范圍是:00H~7FH

Ⅸ C51中的data和idata有什麼區別,謝謝了

1、作用機理不一樣:

data:直接定址的片內RAM區低128B(00H~7FH)。

idata::單片機間接訪問的片內RAM區,允許訪問全部片內RAM。

2、使用的方向不一樣:

data:計算機中程序、文稿、數字、圖像、聲音等信息。

idata:idata是51系列單片機能識別的存儲器類型之一,固定指前面0x00-0xff的256個位元組的片內RAM,其中前128位元組和data的128位元組完全相同,只是因為訪問的方式不同。

(9)單片機bdata擴展閱讀:

C51中的data和idata的應用方向:

data:直接定址的片內RAM區低128B(00H~7FH)。

bdata:片內RAM的可位定址區(20H~2FH),允許位元組和位混合訪問。

idata:單片機間接訪問的片內RAM區,允許訪問全部片內RAM。

pdata:Ri間接訪問的片外RAM的低256B(00H~FFH)。

xdata:用DPTR間接訪問的片外RAM,允許訪問全部64KB片外RAM(0000H~FFFFH)。

code:單片機的64KB程序存儲區ROM。

data:所謂數據就是描述事物的符號。在我們的日常生活中,數據無所不在。數字、文字、圖表、圖象、聲音等都是數據。人們通過數據來認識世界,交流信息。

dos命令:

計算機用語:在51單片機中,DATA表示data area,數據區。DATA並不是修改日期命令

閱讀全文

與單片機bdata相關的資料

熱點內容
大尺度電影名字 瀏覽:897
重生民國收母 瀏覽:723
男主當鴨子的韓劇電影 瀏覽:488
人乳奶水電影 瀏覽:211
台灣鏡花風月系列 瀏覽:551
主角叫江辰的重生小說 瀏覽:608
李采潭演的都是真的嗎 瀏覽:512
日本女人切腹大尺度電影 瀏覽:637
vr電影在哪看 瀏覽:86
法國四級電影有哪些 瀏覽:558
男主角叫林楓得到系統的小說 瀏覽:820
pdf列印白邊 瀏覽:612
重生異界收母收姨 瀏覽:801
韓國女同性戀影片 瀏覽:192
信念科幻電影 瀏覽:791
javaiocp 瀏覽:702
看免費大片網站 瀏覽:849
h5游戲源碼論壇 瀏覽:692
視覺表現pdf 瀏覽:555
htlm源碼 瀏覽:939