日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]XTYBE說法一:2樓:ABSACC.h,XBYTE的定義是這樣的,#define XBYTE ((unsigned char volatile xdata *) 0),XBYTE就相當(dāng)于一個指向外部數(shù)據(jù)區(qū)的無符號字符型變量的指針(的名稱,且當(dāng)前的指針指向外部RAM的0地址),

XTYBE

說法一:

2樓:

ABSACC.h,XBYTE的定義是這樣的,
#define XBYTE ((unsigned char volatile xdata *) 0),XBYTE就相當(dāng)于一個指向外部數(shù)據(jù)區(qū)的無符號字符型變量的指針(的名稱,且當(dāng)前的指針指向外部RAM的0地址),而在C里面指針一般和數(shù)組是可以混用的。這樣也就相當(dāng)于存在一個定義在外部數(shù)據(jù)存儲器的數(shù)組XBYTE[65536],直接使用下標(biāo)就可訪問其中的每個單元。

【從其它嵌入式的C帶來的習(xí)慣,一直使用*(unsigned char volatile xdata *)(0x2000)=0xFF這類的方式來進(jìn)行對外部絕對地址的字節(jié)訪問。

5樓:

呵呵,倒過來寫都行...
例如,200[XBYTE]=xxx;
char buff[10];
//或者用 char *buff=&buffer;
buff[3]=0xaa;
3[buff]=0xaa;//居然是一樣的,倒塌...
因此,我認(rèn)為編譯器是這么干的:對于形如xxx[yyy]這樣的表達(dá)式,會轉(zhuǎn)化為*(xxx+yyy),
因此寫成xxx[yyy]或者寫成yyy[xxx]都無所謂了...非典用法,請勿亂用,出了事偶不負(fù)責(zé)...

6樓:

本質(zhì)就是強(qiáng)制指針變換,有什么神秘的...
說法二:

用XBYTE定義的目的是將外部電路不同的功能編程不同的地址而已
這樣就可以在程序里面通過直接對地址附置,就能使外部電路實(shí)現(xiàn)需要的功能,這樣做還有一個好處就是在編譯的時候會產(chǎn)生 MOVX 指令,這樣可以操作WR和RD引腳,以實(shí)現(xiàn)特定的功能
至于用XBYTE定義的地址是多少就得根據(jù)實(shí)際的外圍電路的連接來確定,不是隨便寫的

說法三:

在用C51的P0,P2口做外部擴(kuò)展時使用,其中XBYTE [0x0002],P2口對應(yīng)于地址高位,P0口對應(yīng)于地址低位。一般P2口用于控制信號,P0口作為數(shù)據(jù)通道。
比如:P2.7接WR,P2.6接RD,P2.5接CS,那么就可以確定個外部RAM的一個地址,想往外部RAM的一個地址寫一個字節(jié)時,地址可以定為XBYTE [0x4000],其中WR,CS為低,RD為高,那就是高位的4,當(dāng)然其余的可以根據(jù)情況自己定,然后通過
XBYTE [0x4000] = 57;
這賦值語句,就可以把57寫到外部RAM的0x4000處了,此地址對應(yīng)一個字節(jié)。

個人總結(jié):

以下圖為例

P0口接了8根 低地址 地址線

P2口低4位接了4根 高地址 地址線

P2口高3位接了3根 控制信號線 RD WR CS

P2口P2.7沒用

這樣P0,P2口接的外圍設(shè)備有12位的 地址線,3根控制線,1根未使用的線,

那么這個外圍器件的地址范圍是

XXXX 0000 0000 0000-XXXX FFFF FFFF FFFF

XXXX 是從0000-FFFF的16種不同的組合,那么由 XXXX 0000 0000 0000-XXXX FFFF FFFF FFFF組成的地址范圍就會有16中不同的表示范圍,但是這16中不同的地址表示都是指同以物理地址。這就是 物理地址對應(yīng)的映射地址不唯一。

例如:0000 0000 0000 0000和1111 0000 0000 0000都是指同一物理地址

0000 0000 0000 0000和0000 0000 0000 0001指的是不同的物理地址

這樣XXXX就可以作為控制信號線來使用

如果想對XXXX 0000 0000 0000地址進(jìn)行RD=0 WR=1 CS=1 這樣的操作

RD,WR,CS分別對應(yīng)P2.4 P2.5 P2.6

X110 0000 0000 0000(X可以是1或者0,這里選1,那么1110 0000 0000 0000=0xe000)

那么可以通過命令:XBYTE[0xe000]=0 來實(shí)現(xiàn)

這句C語言命令的匯編命令如下:

mov dptr,#e000h

mov a,#0h

movx @dptr,a

如果把 X110 0000 0000 0000中X=0,那么 0110 0000 0000 0000=0x6000

那么實(shí)現(xiàn)以上操作是:XBYTE[0x6000]=0 來實(shí)現(xiàn)

從上面可以看出 最高位 未用的位設(shè)置位0或者1沒有任何影響,只是形式不同而已,

此處 XBYTE[0xe000]=0 和 XBYTE[0x6000]=0 等價

如果想對XXXX 0000 0000 0000地址進(jìn)行RD=1 WR=0 CS=1 這樣的操作

X101 0000 0000 0000=0xc000(X=1) 或者=0x5000(X=0)

命令為 XBYTE[0xc000]=0,或者XBYTE[0x5000]=0

如果想對想對XXXX 0000 0000 0000地址進(jìn)行RD=1 WR=0 CS=1 這樣的操作,并且向A0-A12這12位數(shù)據(jù)線輸出數(shù)值57,那么命令為:XBYTE[0xc000]=57或者XBYTE[0x5000]=57

如果想對想對XXXX 0000 0000 0001地址進(jìn)行RD=1 WR=0 CS=1 這樣的操作,并且向A0-A12這12位數(shù)據(jù)線輸出數(shù)值57,那么命令為:XBYTE[0xc001]=57或者XBYTE[0x5001]=57

以上地址線A0-A12接的是外圍存儲器件,那么XXXX 0000 0000 0000 -XXXX 1111 1111 1111是地址范圍

p0.0-p0.7 02.0-p2.3

如果地址線A0-A12接的是外圍設(shè)備(非存儲器件),那么地址只能是 XXXX 0000 0000 0000這一個了(個人觀點(diǎn),還沒有找到可靠依據(jù),如果找到,再來更新)

外圍器件的編地址

程序存儲器擴(kuò)展時片選產(chǎn)生方法

1、 線選法

線選法是把單根的高位地址信號直接接到存貯器芯片的片選端,一根地址線對應(yīng)一個。線選法的主要優(yōu)點(diǎn)是簡單、省硬件;缺點(diǎn)是各芯片的地址空間不連續(xù),不能充分利用CPU的最大地址空間。

2、 全譯碼法

全譯碼法是把片內(nèi)選址后剩余的高位地址通過譯碼器進(jìn)行譯碼,譯碼后的輸出產(chǎn)生片選信號,每一種輸出作為一個片選。全譯碼法的主要優(yōu)點(diǎn)是可以最大限度地利用CPU地址空間,各芯片間地址可以連續(xù);但譯碼電路較復(fù)雜,要增加硬件開銷。

3、部分地址譯碼法

此方法是將高位剩余的地址一部分進(jìn)行全譯碼,另一部分則不用暫可懸空。這種方法的優(yōu)缺點(diǎn)介于上述兩種譯碼方法之間。即能利用CPU較大的空間地址,又簡化譯碼電路;但存在存貯器空間的地址重疊問題。

四、程序存儲器擴(kuò)展實(shí)例

1、用一片2716芯片擴(kuò)展2K程序存儲器

1)地址線連接:2716的存儲容量為2K*8,需11位地址(A10~A0)進(jìn)行存儲單元的選擇。為此先把芯片的A7~A0與地址鎖存器的8位地址輸出對應(yīng)聯(lián)接,剩下的高位地址(A10~A8)與P2口的P2.2~P2.0相連。這樣2716芯片的內(nèi)存儲單元的問題就解決了。

2)數(shù)據(jù)線的連接:程序存儲器的數(shù)據(jù)輸出引腳到P0口對應(yīng)連接。

3)控制信號線的連接:程序存儲器的擴(kuò)展只涉及到外部存儲器選通信號PSEN,此信號與2716的OE端相接,以便進(jìn)行存儲單元的讀出選通。

4)片選線的連接:因?yàn)檫@是一個小規(guī)模存儲器擴(kuò)展系統(tǒng),采用線選法比較方便,為此只需在剩下的高位地址線中選取P2.7作芯片選擇信號與2716的CE端相連即可。

5)擴(kuò)展芯片的地址范圍:

最低地址:當(dāng)A0~A10取值為0000000000時。

A15

P2.7

A14

P2.6

A13

P2.5

A12

P2.4

A11

P2.3

A10

P2.2

A9

P2.1

A8

P2.0

A7

P0.7

A6

P0.6

A5

P0.5

A4

P0.4

A3

P0.3

A2

P0.2

A1

P0.1

A0

P0.0

0

X

X

X

X

0

0

0

0

0

0

0

0

0

0

0

0

0

.

1

0

.

1

0

.

1

0

.

1

0

0

0

0

0

0

0

0

0

0

0

0000H、0800H、1000H、1800H、2000H、2800H、…..7800H、7FFFH

最高地址:當(dāng)A0~A10取值為11111111111時。

A15

P2.7

A14

P2.6

A13

P2.5

A12

P2.4

A11

P2.3

A10

P2.2

A9

P2.1

A8

P2.0

A7

P0.7

A6

P0.6

A5

P0.5

A4

P0.4

A3

P0.3

A2

P0.2

A1

P0.1

A0

P0.0

0

X

X

X

X

1

1

1

1

1

1

1

1

1

1

1

0

0

.

1

0

.

1

0

.

1

0

.

1

1

1

1

1

1

1

1

1

1

1

1

07FFH、0FFFH、17FFH、17FF H、27FFH、2FFFH…..7FFFH

所以,該聯(lián)接方式程序存儲器的地址范圍為:0000H~07FFH、0800H~0FFFH、

1000H~17FFH………

這種地址范圍重疊是線選法本身造成的。因此地址范圍的非惟一性是線選法的一大缺點(diǎn)。

A15接的是CE(片選)

當(dāng)A15=0時:16位二進(jìn)制地址范圍0XXX X000 0000 0000-0XXX X1111 1111 1111

當(dāng)A15=1時:16位二進(jìn)制地址范圍1XXX X000 0000 0000-1XXX X1111 1111 1111

此處X表示該位可為 0或1 中的任意值,那么XXXX的范圍 0000-1111(16)

那么0XXX X000 0000 0000-0XXX X1111 1111 1111(有16種地址表示)

1XXX X000 0000 0000-1XXX X1111 1111 1111(也有16種地址表示)

這就意味著:

當(dāng)A15=0時,對于同一物理地址,有16種不同的地址值可以表示(同一地址,地址值不唯一)

同樣,當(dāng)A15=1時,對于同一物理地址,有16種不同的地址值可以表示(同一地址,地址值不唯一)


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

采用51單片機(jī)最小開發(fā)板,由8位自制獨(dú)立按鍵控制。單片機(jī)芯片為STC89C52RC,晶振為@12.000 mhz。8X8LED點(diǎn)陣屏模塊由MAX7219驅(qū)動,MAX7219包含一個自動掃描電路。你只需要把要顯示的數(shù)據(jù)發(fā)送...

關(guān)鍵字: 51單片機(jī) MAX7219 寄存器

在嵌入式系統(tǒng)開發(fā)的廣闊領(lǐng)域,51單片機(jī)和STM32無疑是兩種極具代表性的微控制器。對于初學(xué)者而言,選擇學(xué)習(xí)路徑時往往會面臨一個抉擇:是直接跨越51單片機(jī),挑戰(zhàn)更高層次的STM32,還是從51開始,逐步進(jìn)階?本文旨在探討直...

關(guān)鍵字: 51單片機(jī) STM32

在嵌入式系統(tǒng)開發(fā)中,特別是在使用8051系列單片機(jī)(簡稱C51)進(jìn)行編程時,數(shù)據(jù)類型的選擇與定義對程序的性能和可讀性至關(guān)重要。C51語言在標(biāo)準(zhǔn)C語言的基礎(chǔ)上進(jìn)行了擴(kuò)展,以適應(yīng)單片機(jī)特有的硬件結(jié)構(gòu)和操作需求。本文將深入探討...

關(guān)鍵字: C51數(shù)據(jù) 51單片機(jī)

在嵌入式系統(tǒng)領(lǐng)域,51單片機(jī)作為一種經(jīng)典的微控制器,廣泛應(yīng)用于各種自動化控制系統(tǒng)中。其外部引腳作為單片機(jī)與外界交互的接口,承載著數(shù)據(jù)傳輸、控制信號輸出等重要功能。本文將通過對51單片機(jī)外部引腳的案例分析,結(jié)合實(shí)際代碼,深...

關(guān)鍵字: 51單片機(jī) 單片機(jī)

在電子技術(shù)的浩瀚星空中,LED(發(fā)光二極管)以其獨(dú)特的魅力成為了一顆璀璨的明星。而結(jié)合51單片機(jī)這一經(jīng)典的嵌入式開發(fā)平臺,LED的應(yīng)用更是被賦予了無限可能,其中,花樣流水燈便是一個生動而富有創(chuàng)意的實(shí)例。本文將帶您深入探索...

關(guān)鍵字: 51單片機(jī) LED

在現(xiàn)代嵌入式系統(tǒng)設(shè)計中,51單片機(jī)作為一種經(jīng)典的微控制器,憑借其豐富的功能和廣泛的應(yīng)用領(lǐng)域,仍然受到工程師們的青睞。定時器中斷是51單片機(jī)中一個非常實(shí)用的功能,它可以在特定的時間間隔內(nèi)自動觸發(fā)中斷,執(zhí)行預(yù)設(shè)的操作,從而提...

關(guān)鍵字: 51單片機(jī) 定時器

STM32與51單片機(jī)之間有什么差異呢?兩者可以說是一場科技與性能的較量了。在科技飛速發(fā)展的今天,微控制器(MCU)已廣泛應(yīng)用于各類電子設(shè)備和系統(tǒng)中,發(fā)揮著舉足輕重的作用。其中,STM32和51單片機(jī)作為兩種常見的微控制...

關(guān)鍵字: STM32 51單片機(jī) MCU

51單片機(jī)將是下述內(nèi)容的主要介紹對象,通過這篇文章,小編希望大家可以對51單片機(jī)的相關(guān)情況以及信息有所認(rèn)識和了解,詳細(xì)內(nèi)容如下。

關(guān)鍵字: 單片機(jī) 51單片機(jī)

在嵌入式系統(tǒng)開發(fā)中,單片機(jī)是不可或缺的重要組成部分。其中,STM32單片機(jī)和51單片機(jī)是兩種常見的單片機(jī)芯片。本文將對比分析這兩種單片機(jī)的區(qū)別,并探討STM32單片機(jī)的優(yōu)勢。

關(guān)鍵字: stm32單片 51單片機(jī)

51單片機(jī)是指由美國INTEL公司生產(chǎn)的一系列單片機(jī)的總稱,這一系列單片機(jī)包括了許多品種,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的產(chǎn)品,該系列其它單片機(jī)都是在8051的基...

關(guān)鍵字: 51單片機(jī) 串行通信
關(guān)閉