單片機(jī)應(yīng)用——ADC0809總線連接方式實(shí)現(xiàn)一路模擬信號AD轉(zhuǎn)換

下面是本節(jié)課,我所遇到的疑問和al解答:
問1:使用51單片機(jī)總線方式, 操控 ADC0809的時候, 怎么控制輸入地址的?
答1:在使用51單片機(jī)總線方式操控ADC0809時,可以通過以下方式控制輸入地址:
P0.0~P0.2所接的A B C是ADC0809的IN0通道選擇線1。
你可以使用P2.7口作為ADC0809的選擇線1。
你可以計(jì)算ADC0809的地址,例如:P2 P0 0xxx xxxx xxxx x000,因此地址為0x7ff81。
問2:我們定義的時候, 是怎么定義的呢? 我了解到的是,使用片外ram , 但是地址和數(shù)據(jù)又是怎么聯(lián)系起來的呢? 我們不是通過控制ADC0908的端口電平來控制地址的輸入的嗎? 為啥又扯到0X7FF8, 單片機(jī)的地址了?
答2:在51單片機(jī)中,P2和P0作為地址總線,但是P0還可以作為數(shù)據(jù)總線來使用。由高位地址P2和低位地址P0組成16位地址。在定義ADC0809的數(shù)據(jù)地址時,可以使用XBYTE[]來定義絕對地址。例如,#define AD XBYTE [0x7FF8]定義了ADC0809的數(shù)據(jù)地址為0x7FF8。這個地址是通過高8位地址P2和低8位地址P0組成的。1
在使用ADC0809時,我們可以通過控制其端口電平來控制其地址輸入。例如,當(dāng)我們想要選擇IN0通道時,我們可以將P0.0、P0.1、P0.2連接到ADC0809的地址端口ADDA、ADDB、ADDC,并將它們設(shè)置為000。這樣,我們就可以通過控制端口電平來控制ADC0809的地址輸入。
問3:你也說了, 我們可以通過控制ADC0809的地址電平來控制其地址輸入, 這個我知道, 但是 這個xbyte是單片機(jī)內(nèi)部的, 還是ADC0809內(nèi)部的呢? 為什么我通過操控0x7FF8就可以控制ADC0809的電平? 剛才不是說, 0x7FF8是地址嗎? 現(xiàn)在為什么又變成端口電平了?
答3:XBYTE是一個宏定義,它用于定義外部設(shè)備的地址。在51單片機(jī)中,我們可以使用XBYTE來定義外部設(shè)備的地址,例如#define AD XBYTE [0x7FF8]定義了ADC0809的數(shù)據(jù)地址為0x7FF8。這個地址是通過高8位地址P2和低8位地址P0組成的。
當(dāng)我們使用XBYTE定義了ADC0809的數(shù)據(jù)地址后,我們就可以通過操控這個地址來控制ADC0809的端口電平。例如,當(dāng)我們想要選擇IN0通道時,我們可以將P0.0、P0.1、P0.2連接到ADC0809的地址端口ADDA、ADDB、ADDC,并將它們設(shè)置為000。這樣,我們就可以通過控制端口電平來控制ADC0809的地址輸入。
因此,當(dāng)我們使用XBYTE定義了ADC0809的數(shù)據(jù)地址后,我們就可以通過操控這個地址來控制ADC0809的端口電平
問4:所以說, 這個ADC0809只認(rèn)電平數(shù)據(jù)是吧, 只要符合時序, 就可以使用. 然后至于 這個0X7FF8 是單片機(jī)對外提供的地址端口, 通過操作這個端口, 就可以影響P0 P2的電平, 是嗎?
答4:是的,您說得對。ADC0809只認(rèn)電平數(shù)據(jù),只要符合時序,就可以使用。0x7FF8是單片機(jī)對外提供的地址端口,通過操作這個端口,就可以影響P0和P2的電平。這樣,我們就可以通過控制端口電平來控制ADC0809的地址輸入。希望這些信息對您有所幫助。如果您需要更多信息,請告訴我