資料介紹
單片機(jī)片外程序存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器操作命令與通常所說的存儲(chǔ)器不同,和I2C總線的AT24C02不同,SPI協(xié)議的也不同,是指采用專用接口電路,應(yīng)用P0口P2口地址總線和控制線的“三總線”方式訪問的。關(guān)于編程的時(shí)候,和訪問內(nèi)部程序存儲(chǔ)器,數(shù)據(jù)存儲(chǔ)器不同是:1對外部程序存儲(chǔ)器,和內(nèi)部一樣,程序不用改。2,。對片外的數(shù)據(jù)存儲(chǔ)器,匯編要用MOVX DPTR什么的,我也不懂,C語言相關(guān)的部分比如:變量關(guān)鍵字:pdata xdata是片外數(shù)據(jù)存儲(chǔ)器類型。輸送的片外數(shù)據(jù)的寄存器地址也要按實(shí)際輸送,其他沒什么區(qū)別。沒有說要特意操作特殊寄存器。。
在設(shè)計(jì)片外程序存儲(chǔ)器之前,首先要決定EA引腳的電平。
EA=0,單片機(jī)只訪問外部程序存儲(chǔ)器,對于8031單片機(jī)此引腳必須接地。EA=1,單片機(jī)訪問內(nèi)部程序存儲(chǔ)器,對于內(nèi)部有程序存儲(chǔ)器的8XX51單片機(jī),此引腳應(yīng)接高電平,但若地址值超過4KB范圍,單片機(jī)將自動(dòng)訪問外部程序存儲(chǔ)器。
設(shè)定好EA后,單片機(jī)自動(dòng)按程序所設(shè)定的次序執(zhí)行。
在編程中不需要專門的語句指定調(diào)用的是外部程序存儲(chǔ)器。比如設(shè)定EA接高電平,則程序在執(zhí)行完片內(nèi)的程序存儲(chǔ)器指令后自動(dòng)轉(zhuǎn)入片外程序存儲(chǔ)器,而無需特殊命令。這就是所謂的程序存儲(chǔ)器是片內(nèi)外統(tǒng)一編址,而數(shù)據(jù)存儲(chǔ)器則用Mov和Movx分別對待的。
但樓主要知道程序在讀取片外指令代碼時(shí)的過程:先尋址,再取數(shù)。單片機(jī)會(huì)根據(jù)PC的值先給P2和p0送一個(gè)選通地址(PC的值),接下來從片外程序存儲(chǔ)器讀取代碼。因?yàn)镻C的值一般是連續(xù)的,這就要求片外的程序存儲(chǔ)器空間要連續(xù)分布,這和數(shù)據(jù)存儲(chǔ)器不同。如果不連續(xù)分布,就要用特殊的行號(hào)改變PC的值,使它和片外程序存儲(chǔ)器分布能夠?qū)?yīng)
總之,記住三總線傳遞的方式,先尋址,再傳數(shù),由控制總線控制
存儲(chǔ)器一般都有WR,RD,CS線以及地址端口、數(shù)據(jù)端口,有些數(shù)據(jù)地址端口復(fù)用,有些分開??催@些存儲(chǔ)器的datasheet就會(huì)明白如何訪問他們內(nèi)部的數(shù)據(jù)。例如讀出外部ram地址為0x0001里的數(shù)據(jù)(假設(shè)有這個(gè)地址),那么就WR置高,CS置低,地址線上輸出0x0001,那么CPU的數(shù)據(jù)線就可以等到需要的數(shù)據(jù)了,這種情況下CPU的I/O只是做普通的I/O口。但是一般單片機(jī)和ARM都能夠把I/O選擇作為外部存儲(chǔ)器的訪問口,這時(shí)只要根據(jù)datasheet里的說明,把相應(yīng)的線連上,CPU就能夠根據(jù)你的指令自動(dòng)在時(shí)序上配合,使得訪問外部設(shè)備就像訪問內(nèi)部ram一樣,這樣做的好處就是節(jié)省CPU時(shí)間。
把地址0x0001置為0x55的C語言指令為
?。?(unsigned char*)0x0001)=0x55; //(這里假設(shè)數(shù)據(jù)寬度為8bit)
假如I/O口選擇的功能是外部數(shù)據(jù)地址總線,并且硬件上接好,那么這條指令也就是對外部存儲(chǔ)器相應(yīng)地址的讀寫。
值得一提的是,各種類型的存儲(chǔ)器件的訪問速度都不一樣,因此如果把程序放在外部器件里執(zhí)行,執(zhí)行時(shí)間就會(huì)有比較大的差別,例如一個(gè)for循環(huán)放在外部ram和外部flash中執(zhí)行速度可能會(huì)差到3倍。
第一,單片機(jī)采用三總線結(jié)構(gòu)傳遞數(shù)據(jù)。地址總線、數(shù)據(jù)總線、控制總線。傳遞數(shù)據(jù)的過程是先尋址,再傳遞數(shù)據(jù)。即先送一個(gè)地址信息(由單片機(jī)向總線寫地址信息),由寄存器(程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器)根據(jù)這個(gè)地址,把微處理器要讀取的數(shù)據(jù)寫到總線上,微處理器再讀取這個(gè)數(shù)據(jù)。整個(gè)過程由控制總線控制。所以每次讀的數(shù)據(jù)是針對那個(gè)地址對應(yīng)的寄存器操作的,不會(huì)發(fā)生混亂。寫數(shù)據(jù)時(shí)一樣,先尋址,再寫數(shù)據(jù),數(shù)據(jù)就寫入剛才尋址時(shí)的地址對應(yīng)的那個(gè)寄存器里去了。
第二、程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器有不同的選通信號(hào),在一個(gè)指令周期里,是不同的時(shí)間選通的,所以不會(huì)混亂。
第三、選通的引腳不同。拿片外數(shù)據(jù)存儲(chǔ)器來說,是P3的第6和第7引腳做選通信號(hào),程序存儲(chǔ)器是PSEN做選通信號(hào),他們接在各自器件的選通引腳上,所以不會(huì)混亂。
第四,指令不同。拿匯編指令來說。MOV是程序存儲(chǔ)器傳遞數(shù)據(jù)用,MOVX是數(shù)據(jù)存儲(chǔ)器傳遞數(shù)據(jù)用(對片外而言)。
總之,記住三總線傳遞的方式,先尋址,再傳數(shù),由控制總線控制,這個(gè)模式,你就容易理解這個(gè)了。
單片機(jī)的p2和p0分別傳遞地址的高八位和低八位。同時(shí)p0還傳遞數(shù)據(jù)。在時(shí)序信號(hào)的ALE高電平期間,鎖定地址信息。/PSEN是選通程序存儲(chǔ)器的。在/PSEN低電平期間是向程序存儲(chǔ)器傳遞程序代碼,/WR和/RD是選通數(shù)據(jù)存儲(chǔ)器的,即在/WR和/RD低電平期間把數(shù)據(jù)傳遞給數(shù)據(jù)寄存器。而/PSEN和/WR及/RD是在不同時(shí)間變?yōu)榈碗娖降?,沒有重疊的部分。也就是說,當(dāng)/WR及/RD變成低電平時(shí),/PSEN已經(jīng)恢復(fù)高電平了,由P0口傳出的數(shù)據(jù)信息當(dāng)然只會(huì)傳到數(shù)據(jù)存儲(chǔ)器里,因?yàn)槌绦虼鎯?chǔ)器已經(jīng)不再處于選通狀態(tài)了!從表面看,都是從p0口傳出的,但因?yàn)檫x通器件的時(shí)間不同而不會(huì)發(fā)生混亂。當(dāng)然我說的是片外程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的的情況,其實(shí)對片內(nèi)也一樣,還是三總線的這種控制方式,使它們在不同的時(shí)間被選通,而不至于發(fā)生沖突。
看看單片機(jī)的一個(gè)電路圖。你會(huì)發(fā)現(xiàn)p0既跟74LS373連,又跟8155或8255或鍵盤或數(shù)模轉(zhuǎn)換器等連接。而8155或8255或鍵盤或數(shù)模轉(zhuǎn)換器等對單片機(jī)而言是當(dāng)做數(shù)據(jù)存儲(chǔ)器處理的。74LS373連的多半是程序存儲(chǔ)器。那么p0送出的信號(hào)不是兩者都接受了嗎?注意看ALE接74LS373的G接口,鎖存地址用,PSEN有時(shí)用有時(shí)不用。WR和RD接數(shù)據(jù)存儲(chǔ)器的選通接口。因?yàn)閃R和RD跟ALE的信號(hào)在時(shí)間上沒有重疊部分,所以p0的信號(hào)不會(huì)被程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器同時(shí)收到。這是一個(gè)舉例說明,具體情況要具體分析。
?
在設(shè)計(jì)片外程序存儲(chǔ)器之前,首先要決定EA引腳的電平。
EA=0,單片機(jī)只訪問外部程序存儲(chǔ)器,對于8031單片機(jī)此引腳必須接地。EA=1,單片機(jī)訪問內(nèi)部程序存儲(chǔ)器,對于內(nèi)部有程序存儲(chǔ)器的8XX51單片機(jī),此引腳應(yīng)接高電平,但若地址值超過4KB范圍,單片機(jī)將自動(dòng)訪問外部程序存儲(chǔ)器。
設(shè)定好EA后,單片機(jī)自動(dòng)按程序所設(shè)定的次序執(zhí)行。
在編程中不需要專門的語句指定調(diào)用的是外部程序存儲(chǔ)器。比如設(shè)定EA接高電平,則程序在執(zhí)行完片內(nèi)的程序存儲(chǔ)器指令后自動(dòng)轉(zhuǎn)入片外程序存儲(chǔ)器,而無需特殊命令。這就是所謂的程序存儲(chǔ)器是片內(nèi)外統(tǒng)一編址,而數(shù)據(jù)存儲(chǔ)器則用Mov和Movx分別對待的。
但樓主要知道程序在讀取片外指令代碼時(shí)的過程:先尋址,再取數(shù)。單片機(jī)會(huì)根據(jù)PC的值先給P2和p0送一個(gè)選通地址(PC的值),接下來從片外程序存儲(chǔ)器讀取代碼。因?yàn)镻C的值一般是連續(xù)的,這就要求片外的程序存儲(chǔ)器空間要連續(xù)分布,這和數(shù)據(jù)存儲(chǔ)器不同。如果不連續(xù)分布,就要用特殊的行號(hào)改變PC的值,使它和片外程序存儲(chǔ)器分布能夠?qū)?yīng)
總之,記住三總線傳遞的方式,先尋址,再傳數(shù),由控制總線控制
存儲(chǔ)器一般都有WR,RD,CS線以及地址端口、數(shù)據(jù)端口,有些數(shù)據(jù)地址端口復(fù)用,有些分開??催@些存儲(chǔ)器的datasheet就會(huì)明白如何訪問他們內(nèi)部的數(shù)據(jù)。例如讀出外部ram地址為0x0001里的數(shù)據(jù)(假設(shè)有這個(gè)地址),那么就WR置高,CS置低,地址線上輸出0x0001,那么CPU的數(shù)據(jù)線就可以等到需要的數(shù)據(jù)了,這種情況下CPU的I/O只是做普通的I/O口。但是一般單片機(jī)和ARM都能夠把I/O選擇作為外部存儲(chǔ)器的訪問口,這時(shí)只要根據(jù)datasheet里的說明,把相應(yīng)的線連上,CPU就能夠根據(jù)你的指令自動(dòng)在時(shí)序上配合,使得訪問外部設(shè)備就像訪問內(nèi)部ram一樣,這樣做的好處就是節(jié)省CPU時(shí)間。
把地址0x0001置為0x55的C語言指令為
?。?(unsigned char*)0x0001)=0x55; //(這里假設(shè)數(shù)據(jù)寬度為8bit)
假如I/O口選擇的功能是外部數(shù)據(jù)地址總線,并且硬件上接好,那么這條指令也就是對外部存儲(chǔ)器相應(yīng)地址的讀寫。
值得一提的是,各種類型的存儲(chǔ)器件的訪問速度都不一樣,因此如果把程序放在外部器件里執(zhí)行,執(zhí)行時(shí)間就會(huì)有比較大的差別,例如一個(gè)for循環(huán)放在外部ram和外部flash中執(zhí)行速度可能會(huì)差到3倍。
第一,單片機(jī)采用三總線結(jié)構(gòu)傳遞數(shù)據(jù)。地址總線、數(shù)據(jù)總線、控制總線。傳遞數(shù)據(jù)的過程是先尋址,再傳遞數(shù)據(jù)。即先送一個(gè)地址信息(由單片機(jī)向總線寫地址信息),由寄存器(程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器)根據(jù)這個(gè)地址,把微處理器要讀取的數(shù)據(jù)寫到總線上,微處理器再讀取這個(gè)數(shù)據(jù)。整個(gè)過程由控制總線控制。所以每次讀的數(shù)據(jù)是針對那個(gè)地址對應(yīng)的寄存器操作的,不會(huì)發(fā)生混亂。寫數(shù)據(jù)時(shí)一樣,先尋址,再寫數(shù)據(jù),數(shù)據(jù)就寫入剛才尋址時(shí)的地址對應(yīng)的那個(gè)寄存器里去了。
第二、程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器有不同的選通信號(hào),在一個(gè)指令周期里,是不同的時(shí)間選通的,所以不會(huì)混亂。
第三、選通的引腳不同。拿片外數(shù)據(jù)存儲(chǔ)器來說,是P3的第6和第7引腳做選通信號(hào),程序存儲(chǔ)器是PSEN做選通信號(hào),他們接在各自器件的選通引腳上,所以不會(huì)混亂。
第四,指令不同。拿匯編指令來說。MOV是程序存儲(chǔ)器傳遞數(shù)據(jù)用,MOVX是數(shù)據(jù)存儲(chǔ)器傳遞數(shù)據(jù)用(對片外而言)。
總之,記住三總線傳遞的方式,先尋址,再傳數(shù),由控制總線控制,這個(gè)模式,你就容易理解這個(gè)了。
單片機(jī)的p2和p0分別傳遞地址的高八位和低八位。同時(shí)p0還傳遞數(shù)據(jù)。在時(shí)序信號(hào)的ALE高電平期間,鎖定地址信息。/PSEN是選通程序存儲(chǔ)器的。在/PSEN低電平期間是向程序存儲(chǔ)器傳遞程序代碼,/WR和/RD是選通數(shù)據(jù)存儲(chǔ)器的,即在/WR和/RD低電平期間把數(shù)據(jù)傳遞給數(shù)據(jù)寄存器。而/PSEN和/WR及/RD是在不同時(shí)間變?yōu)榈碗娖降?,沒有重疊的部分。也就是說,當(dāng)/WR及/RD變成低電平時(shí),/PSEN已經(jīng)恢復(fù)高電平了,由P0口傳出的數(shù)據(jù)信息當(dāng)然只會(huì)傳到數(shù)據(jù)存儲(chǔ)器里,因?yàn)槌绦虼鎯?chǔ)器已經(jīng)不再處于選通狀態(tài)了!從表面看,都是從p0口傳出的,但因?yàn)檫x通器件的時(shí)間不同而不會(huì)發(fā)生混亂。當(dāng)然我說的是片外程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的的情況,其實(shí)對片內(nèi)也一樣,還是三總線的這種控制方式,使它們在不同的時(shí)間被選通,而不至于發(fā)生沖突。
看看單片機(jī)的一個(gè)電路圖。你會(huì)發(fā)現(xiàn)p0既跟74LS373連,又跟8155或8255或鍵盤或數(shù)模轉(zhuǎn)換器等連接。而8155或8255或鍵盤或數(shù)模轉(zhuǎn)換器等對單片機(jī)而言是當(dāng)做數(shù)據(jù)存儲(chǔ)器處理的。74LS373連的多半是程序存儲(chǔ)器。那么p0送出的信號(hào)不是兩者都接受了嗎?注意看ALE接74LS373的G接口,鎖存地址用,PSEN有時(shí)用有時(shí)不用。WR和RD接數(shù)據(jù)存儲(chǔ)器的選通接口。因?yàn)閃R和RD跟ALE的信號(hào)在時(shí)間上沒有重疊部分,所以p0的信號(hào)不會(huì)被程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器同時(shí)收到。這是一個(gè)舉例說明,具體情況要具體分析。
?
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 51單片機(jī)(2)硬件結(jié)構(gòu)(2)存儲(chǔ)器
- 51匯編(一):存儲(chǔ)器結(jié)構(gòu)
- 51單片機(jī):存儲(chǔ)器結(jié)構(gòu)
- 單片機(jī)學(xué)習(xí)筆記二(單片機(jī)的存儲(chǔ)結(jié)構(gòu))
- 51單片機(jī)之存儲(chǔ)器
- 51單片機(jī)存儲(chǔ)器結(jié)構(gòu)
- 51單片機(jī)的運(yùn)行過程詳細(xì)圖文詳解
- 單片機(jī)的片內(nèi)存儲(chǔ)器和片外存儲(chǔ)器到底有什么區(qū)別
- 51單片機(jī)存儲(chǔ)器結(jié)構(gòu)的詳細(xì)資料說明
- 單片機(jī)入門程序之發(fā)光二極管的流水燈實(shí)驗(yàn)和應(yīng)用片外數(shù)據(jù)存儲(chǔ)器程序 1次下載
- 單片機(jī)教程之單片機(jī)總線與存儲(chǔ)器的擴(kuò)展資料說明 27次下載
- 8位PIC單片機(jī)上的閃存程序存儲(chǔ)器分區(qū)的詳細(xì)中文資料概述
- 單片機(jī)片外數(shù)據(jù)存儲(chǔ)器擴(kuò)展設(shè)計(jì)技巧簡介pdf文檔 6次下載
- 單片機(jī)存儲(chǔ)器擴(kuò)充與程序下載技巧 14次下載
- 單片機(jī)存儲(chǔ)器擴(kuò)充與程序下載技巧
- 單片機(jī)與閃速存儲(chǔ)器的軟硬件設(shè)計(jì)的注意事項(xiàng) 1309次閱讀
- PIC單片機(jī)的各種內(nèi)部硬件功能及用法介紹 3735次閱讀
- 51單片機(jī)存儲(chǔ)器的結(jié)構(gòu)和原理解析 2.3w次閱讀
- 8051單片機(jī)數(shù)據(jù)存儲(chǔ)器的擴(kuò)展設(shè)計(jì) 4586次閱讀
- 單片機(jī)執(zhí)行程序的全過程介紹 1.4w次閱讀
- 一文詳解51單片機(jī)的存儲(chǔ)器組織結(jié)構(gòu) 1w次閱讀
- 單片機(jī)片內(nèi)存儲(chǔ)器如何燒寫 幾種燒寫方式介紹 2.4w次閱讀
- 淺談外部程序存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器操作命令 5358次閱讀
- MCS-51單片機(jī)存儲(chǔ)空間的介紹以及劃分 2.7w次閱讀
- 解析80C51單片機(jī)中的cpu、存儲(chǔ)器配置以及并行輸入/輸出口 2.7w次閱讀
- STC單片機(jī)燒寫程序步驟說明 7.2w次閱讀
- 基于單片機(jī)存儲(chǔ)器的配置的詳細(xì)分析 6145次閱讀
- MCS-51單片機(jī)的原理及其存儲(chǔ)器的配置特點(diǎn) 1.9w次閱讀
- 51單片機(jī)存儲(chǔ)程序和數(shù)據(jù) 9784次閱讀
- 51單片機(jī)存儲(chǔ)器內(nèi)存的講解 1899次閱讀
下載排行
本周
- 1EMC電路設(shè)計(jì)工程師必備的EMC基礎(chǔ)
- 0.42 MB | 4次下載 | 2 積分
- 2AU3116 2×60W模擬輸入雙通道Class-D 音頻功率放大器數(shù)據(jù)手冊
- 1.19 MB | 1次下載 | 免費(fèi)
- 3低壓降肖特基整流管SR340L數(shù)據(jù)手冊
- 0.78 MB | 1次下載 | 免費(fèi)
- 4CPCI6310型復(fù)合視頻采集板資料
- 0.04 MB | 1次下載 | 免費(fèi)
- 5SOD-323塑料封裝ESD保護(hù)二極管SD07T系列規(guī)格書
- 1.31 MB | 次下載 | 免費(fèi)
- 6SOT-143塑料封裝二極管SR05LC系列規(guī)格書
- 2.72 MB | 次下載 | 免費(fèi)
- 7高效率整流二極管HER501 THRU HER508數(shù)據(jù)手冊
- 0.56 MB | 次下載 | 免費(fèi)
- 8低壓降肖特基整流管SL26BF數(shù)據(jù)手冊
- 1.32 MB | 次下載 | 免費(fèi)
本月
- 1三相逆變主電路的原理圖和PCB資料合集免費(fèi)下載
- 27.35 MB | 111次下載 | 1 積分
- 2運(yùn)算放大器基本電路中文資料
- 1.30 MB | 16次下載 | 免費(fèi)
- 3蘋果iphone 11電路原理圖
- 4.98 MB | 11次下載 | 5 積分
- 4TL494工業(yè)用開關(guān)電源原理圖資料
- 0.22 MB | 10次下載 | 1 積分
- 5常用電子元器件介紹
- 3.21 MB | 8次下載 | 免費(fèi)
- 6QW2893應(yīng)急燈專用檢測芯片
- 590.40 KB | 4次下載 | 免費(fèi)
- 7相關(guān)協(xié)議信號(hào)總結(jié)
- 0.94 MB | 4次下載 | 免費(fèi)
- 8EMC電路設(shè)計(jì)工程師必備的EMC基礎(chǔ)
- 0.42 MB | 4次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935130次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183344次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81591次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評(píng)論