硬體設定的,24C02datasheet上就有說明,通過A1 A2 A3這三個引腳是否接地而設定硬體地址的。
補充:單片機(Microcontrollers)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。
㈡ 關於單片機的地址
logical memory一般是指經過虛擬地址重映射的地址空間,這個可以通過修改虛擬地址映射表,把實際的外部物理器件如FLASH,RAM,ROM之類的地址映射到任意系統支持的地址空間范圍內。而global memory一般用於系統特殊應用的地址空間,一般不可更改,每段空間都有詳細的功能說明,視晶元的具體設計。
㈢ MCS-51單片機外設埠地址和存儲器地址是統一編址還是分開編址
嘿嘿 這個 俺可以幫助你
1 對於並行的I/O介面晶元
MCS-51單片機外設埠地址和片外數據存儲器地址是統一編址,在介面時,將每一個外設的埠
看成是一個片外數據存儲器的一個單元,給每一個外設埠都分配一個數據存儲器的地址。
51 單片機沒有專用的I/O指令,訪問外設要用訪問片外數據存儲器的指令
即 MOVX A,@DPTR 或 MOVX @DPTR,A
用片外存儲器的讀寫信號,控制外設埠傳送數據的方向。
2 對於串列的I/O介面晶元 則另當別論(不屬於統一編址的范疇)。
呵呵 滿意 就選滿意回答吧
㈣ 51單片機對外擴展時,為實現po扣地址/數據的分時復用,需要外接什麼器件
P0在前一個時刻輸出地址的低8位,然後由ALE信號將它們鎖存到外面的邏輯晶元(例如74LS245之類)里,之後再從P0輸出或輸入數據,就實現了分時復用。 在這兩個期間,地址的高8位,也就是P2口的信號
㈤ 單片機外接數據存儲器時怎麼判斷晶元的實際地址范圍
2#RAM被選中的狀態是01xx|xxxx|xxxx|xxxx|xxxx|xxxx所以是4000H
1#RAM被選中的狀態是10xx|xxxx|xxxx|xxxx|xxxx|xxxx所以是8000H
㈥ 51單片機系統中有關外部擴展晶元的地址問題
1、「51單片機的外部RAM和I\O口是統一編址」:這句話好像不對吧,應該是內部RAM。
51單片機中的IO口結構上說起來比較復雜,最好詳細了解一下其結構原理。目前階段你不妨暫時這樣理解,就是IO口線+對應的寄存器,向IO口寫1或寫0,其實就是先向寄存器寫0或寫1。
回到你的問題,這4組IO口有4個寄存器,在51單片機中也是有地址的,P0是0x80、P1是0X90、P2是0XA0、P3是0XB0,而內部RAM的地址從0x00到0x7F。比如直接定址方式採用同樣一條指令訪問寄存器,如果地址是0x00,則訪問的是內部RAM,如果地址是0x80,則訪問的就是P1口也就是IO口了。這就是所謂的統一編址。
多說一句,52增強型單片機雖然內部RAM增加了128位元組,地址范圍從0到0xff,但從0x80到0xff都採用的是間接定址方式,操作上是可以區分開的。如果你今後學習匯編這點要注意,C語言就不用理會了,編譯器會自動處理的。
重復一下,上述說法僅助你目前階段的理解,更准確的需要去看IO口結構圖。
2、上面其實已經回答了此問的後半部分。至於ROM和RAM地址重疊使用,這里的RAM一定指的是外部RAM!單片機對外部RAM和外部ROM的訪問,地址信息是通過P0(低8位)和P2(高8位)送出;控制信號:對RAM讀寫的是WR和RD(即P3.6、P3.7),對ROM讀取的則是PSEN(對ROM讀取就是從外部ROM讀取單片機的程序代碼)。具體實現是由單片機在一個機器周期內不同時間段分時自動完成的,不用你去干預。
所謂重疊使用,其實我覺得如果使用分開編址,互不幹擾更貼切一些,正如上面所說,對外部ROM和外部RAM的訪問是單片機分時完成的,互不幹擾。這一點稍微深入了解後看一下相應的時序圖你就明白了。
㈦ IIC匯流排上連接的器件的地址怎麼確定
IIC上的每個器件是否都要一個地址寄存器來確定自己的地址:很多器件都是通過硬體來確定地址的。
有的在出廠時地址就設置好了,用戶不可以更改,有的確定了幾位,剩下幾位由硬體確定(比如有三位由用戶確定,就留有3個控制地址的引腳),此類較多;還有的有地址寄存器。
嚴格講,主機不是向從機發送地址,而是主機往匯流排上發送地址,所有的從機都能接收到主機發出的地址,然後每個從機都將主機發出的地址與自己的地址比較,如果匹配上了,這個從機就會向主機發出一個響應信號。主機收到響應信號後,開始向匯流排上發送數據,與這個從機的通訊就建立起來了。如果主機沒有收到響應信號,則表示定址失敗。
比如帶IIC的單片機,會有地址寄存器,寄存器里的值即為它作為從機時的地址。
最常見的情況,主從器件的角色是確定的,也就是說從機一直工作在從機模式。它的地址確定方法我已經說過了。不同的器件定義地址的方式是不同的,有的是軟體定義,有的是硬體定義。
㈧ 關於用51單片機給外接晶元編址的問題
那人也沒說到點子上,但是我感覺我也說不清楚,你如果用MOVX
和MOVA這些指令的話,光光知道地址是不夠的,加上ALE也不夠,其實你的思考已經入門了,這個控制是通過P0,P2,ALE,WR,RD共同配合實現的,只不過ALE,WR,RD不是由你直接控制的,是在你使用了MOVX命令以後單片機會自己按一定的順序對這幾個腳進行操作,你要做的就是接好線,必要時還要增加一點與非門電路。你再查查資料吧,單片機教材上關於擴展外部ROM
RAM里有這部分的說明,上面有時序圖,看了那個加上文字說明你應該能明白點的。這個好像就叫INTER匯流排模式吧,書上沒這么說,有些手冊上這么稱呼的。我建議要求不高的時候就別這么用了,還是簡單的時序操作算了。
最後提醒一下,如果你用的是STC的單片機,這么用的時候還要多注意一點哦,就是他內部集成了256至1K不等的XRAM。多了講不清楚,自己看吧。
㈨ 求助 單片機外接晶元時地址怎樣確定
關鍵是看你的ADC0809的片選(片選CS是低電平有效)接在8051的哪個腳,我假設你把CS接在8051的P0.0腳,那麼ADC0909的地址就是1111111111111110,假設你把CS接在P2.0腳,那麼ADC0909的地址就是1111111011111111。8051單片機由P2和P0口組成16位地址,你把CS接在哪個腳,相應的那位為0就是ADC0809的地址。但這不是唯一的,假設你把CS接在P0.0腳,只要這個腳為低電平,都算是ADC0809的地址,即XXXXXXXXXXXXXXX0(X為1或者0)都算是ADC0809的無地址。
㈩ 單片機中外接程序存儲器和數據存儲器公用16位地址線和8根數據線為什麼不會起沖突
建議你閱讀一下單片機關於選通地址、傳遞數據方面的敘述。
下面我簡略的說一下大概過程,希望對你有所幫助。
第一,單片機採用三匯流排結構傳遞數據。地址匯流排、數據匯流排、控制匯流排。傳遞數據的過程是先定址,再傳遞數據。即先送一個地址信息(由微處理器向匯流排寫一個地址信息),由寄存器(也可能是程序存儲器,也可能是數據存儲器)根據這個地址,把微處理器要讀取的數據寫到匯流排上,微處理器再讀取這個數據。整個過程由控制匯流排控制。所以每次讀的數據是針對那個地址對應的寄存器操作的,不會發生混亂。寫數據時一樣,先定址,再寫數據,數據就寫入剛才定址時的地址對應的那個寄存器里去了。
第二、程序存儲器、數據存儲器有不同的選通信號,在一個指令周期里,是不同的時間選通的,所以不會混亂。
第三。選通的引腳不同。拿片外數據存儲器來說,是P3的第6和第7引腳做選通信號,程序存儲器是PSEN做選通信號,他們接在各自器件的選通引腳上,所以不會混亂。
第四,指令不同。拿匯編指令來說。MOV是程序存儲器傳遞數據用,MOVX是數據存儲器傳遞數據用(對片外而言)。
總之,記住三匯流排傳遞的方式,先定址,再傳數,由控制匯流排控制,這個模式,你就容易理解這個了。
單片機的p2和p0分別傳遞地址的高八位和低八位。同時p0還傳遞數據。在時序信號的ALE高電平期間,鎖定地址信息。/PSEN是選通程序存儲器的。在/PSEN低電平期間是向程序存儲器傳遞程序代碼,/WR和/RD是選通數據存儲器的,即在/WR和/RD(p3的六腳和七腳)低電平期間把數據傳遞給數據寄存器。而/PSEN和/WR及/RD是在不同時間變為低電平的,沒有重疊的部分。也就是說,當/WR及/RD變成低電平時,/PSEN已經恢復高電平了,由P0口傳出的數據信息當然只會傳到數據存儲器里,因為程序存儲器已經不再處於選通狀態了!!從表面看,都是從p0口傳出的,但因為選通器件的時間不同而不會發生混亂。當然我說的是片外程序存儲器和數據存儲器的的情況,其實對片內也一樣,還是三匯流排的這種控制方式,使它們在不同的時間被選通,而不至於發生沖突。
看看單片機的一個電路圖。你會發現p0既跟74LS373連,又跟8155或8255或鍵盤或數模轉換器等等連。而8155或8255或鍵盤或數模轉換器等等對單片機而言是當做數據存儲器處理的。74LS373連的多半是程序存儲器。那麼p0送出的信號不是兩者都接受了嗎?注意看ALE接74LS373的G介面,鎖存地址用,PSEN有時用有時不用。WR和RD接數據存儲器的選通介面。因為WR和RD跟ALE的信號在時間上沒有重疊部分,所以p0的信號不會被程序存儲器和數據存儲器同時收到。這是一個舉例說明,具體情況要具體分析。