###### tags: `microcomputer` `note` `thu` # CH7 課堂筆記 ## MCS-51內部功能 ![](https://i.imgur.com/kf9AU4I.png) ### 外部程式記憶器與外部RAM 使用程式位址暫存器作為記憶器位址暫存器(RAM) I/O埠0與2作為位址與資料匯流排 ### 使用PSEN、RD、WR控制線 區分目前存取的記憶器為程式記憶器((PSEN啟動)或是資料記憶器((RD)或(WR)啟動) ## CPU時序 ### 機器週期 一個機器週期(machine cycle)=12個時脈週期(clock cycle) =>分為6個狀態,稱為S1~S6 =>每個狀態由2個clock cycle組成,稱為phase 1 (P1)與phase 2 (P2) P1:算術與邏輯運算動作,P2:內部暫存器的轉移 ALE(Address Latch Enable): 位址栓鎖訊號,用於外部記憶體讀寫。 CPU在每一個機器週期的S1(S1 P2)與S4(S4 P2)狀態時 產生2個時脈週期的ALE訊號。 ### 指令長度 1位元組(INC A) 2位元組(ADD A,#data) 3位元組(CJNE A,direct,disp8) 指令執行時間為1到2個機器週期 MUL與DIV為4個機器週期 ![](https://i.imgur.com/d5iXUbK.png) ## 硬體介面 ![](https://i.imgur.com/wL0gbn5.png) ### 支援接腳: Vcc與GND(電源)、XTAL1、XTAL2(時脈輸入)、RST(reset) ### 4個並列I/O埠 ***I/O埠0(P0.7~P0.0,雙向,8位元):*** 輸出埠時,每一個接腳可以吸取8個TTL的輸入電流 輸入埠時,每一個接腳可當作高阻抗輸入端使用 存取外部程式或資料記憶器時,多工的低序位元組的位址匯流排與資料匯流排,且具有內部提升電路,將其提升到高電位 ***I/O埠1(P1.7~P1.0,雙向,8位元):*** 輸入埠,寫入1於I/O埠1接腳的門閂電路後,每一個I/O接腳均由內部的提升電阻器提升到高電位 輸出埠,每一個I/O接腳可以吸取或供給4個TTL的輸入電流 ***I/O埠2(P2.7~P2.0,雙向,8位元):*** 輸入埠,每一個I/O接腳在外部電路為低電位時,輸出𝐼_𝐼𝐿(內部有提升電路連接到電源) 輸出埠,每一個I/O接腳可以吸取或供給4個TTL的輸入電流 ***I/O埠2(P2.7~P2.0,雙向,8位元):*** 存取外部程式記憶器或是使用16位元的位址(MOVX @DPTR)存取外部RAM時,為高序位元組的位址匯流排 ***I/O埠3(P3.7~P3.0,雙向,8位元):*** 輸出埠,每一個I/O接腳可以吸取或供給4個TTL的輸入電流 輸入埠,每一個I/O接腳在外部電路為低電位時,輸出𝐼_𝐼𝐿(內部有提升電路連接到電源) 具備另一組副功能:規劃(寫入資料於程式記憶器或快閃記憶器)內部程式記憶器時,也當作某些控制信號的輸入端 I/O埠3的副功能 : ![](https://i.imgur.com/lKoCCPk.png) ## 記憶器介面 ### 可使用$\overline{(RD)}$與$\overline{(WR)}$直接存取64k($2^{16}$)位元組的外部RAM及使用$\overline{(PSEN)}$存取到64k($2^{16}$)位元組的程式記憶器 ### MCS-51為一個8位元系統,當其存取記憶器的資料時,每次均為一個位元組 * 位址匯流排為16位元(A15~A0) * 資料匯流排為8位元(D7~D0) 為將所有位址匯流排信號接腳、資料匯流排信號接腳、控制信號包裝在標準的PDIP內 低序的8條位址匯流排與資料匯流排以多工方式輸出 位址匯流排與資料匯流排與I/O port 0 和 2重疊使用相同的接腳 ***($\overline{EA}$)(External access,輸入)(低電位啟動):*** 只使用外部的程式記憶器,提供0000H~0FFFFH空間,接到低電位 接高電位時,同時使用內部與外部程式記憶器 ***($\overline{RD}$)(Read,輸出)(低電位啟動):*** 啟動時,表示MCS-51欲自資料匯流排(即記憶器或IO裝置中)中,讀取資料 ***($\overline{WR}$)(Write,輸出)(低電位啟動):*** 啟動時,寫入資料於資料匯流排中。當為低電位時,CPU的資料匯流排中含有正確的資料 ***($\overline{PSEN}$)(program store enable,輸出)(低電位啟動):*** 啟動時,指示正在讀取外部程式記憶器中的資料 每一個機器週期中均啟動兩次 ***若維持在不啟動的狀態*** 讀取內部程式記憶器中的資料 ***ALE(address latch enable,輸出):*** 指示MCS-51的位址/資料匯流排上的資料為成立的位址資料。 ### ALE相關: #### 正常指令執行期間(不存取外部RAM時),持續輸出一個頻率為1/6系統時脈的脈波(可當作外部的時序信號或是時脈) #### MOVX存取外部RAM時,第2個機器週期中,ALE只輸出一個脈波 #### 若不希望ALE持續輸出脈波 * 設定SFR中的8EH位置的位元0之值為1 * 只在MOVX或是MOVC執行時,才啟動而輸出適當的脈波 * 從高阻抗電路提升為高電位 ### 中斷控制 #### 包含一個兩層次導向性優先權中斷系統 位於程式記憶器最底端的48個位元組$\overline{(INT0)}$、 $\overline{(INT1)}$ #### $\overline{(INT0)}$ (P3.2)與$\overline{(INT0)}$ (P3.3)(低電位啟動,輸入):可抑制式中斷輸入線 當兩信號為低電位時,且IE暫存器中對應的位元與EA位元值均為1時 CPU完成目前的指令執行後,將認知此中斷,並產生一個中斷程序 ### 內部記憶體規劃 #### 內部含有0k~64k位元組的快閃記憶器或是EEPROM 包含規劃內部程式記憶器的相關控制信號與電路 ALE/$\overline{PROG}$ 與 ($\overline{EA}$)/$V_{pp}$ ALE/$\overline{PROG}$ (Program,輸入) :規劃內部程式記憶器時,由此接腳加入規劃脈波 $\overline{EA}$/$V_{pp}$(Program,輸入) :規劃內部程式記憶器時,此信號必須接於$V_{pp}$ ## 晶片模組 ### 單一模組 ![](https://i.imgur.com/QIIjvlN.png) ### 擴充(多重) ![](https://i.imgur.com/wxV6raE.png) ## 記憶器類型 ### 提供獨立的資料記憶器與程式記憶器位址空間,各為64k位元組 * **內部程式記憶器與內部RAM** 用於需要小容量的資料記憶器之系統中,容量由8k到64k位元組不等 * **內部程式記憶器與外部RAM** 需要大容量的資料記憶器中,程式記憶器8k~64k位元組不等,容量最多為64k位元組 * **外部程式記憶器與外部RAM** 外部程式記憶器通常使用EEPROM或是快閃記憶器。有時也使用SRAM,以方便程式的下載與測試。外部RAM與程式記憶器容量最多個為64k位元組 * **內部程式記憶器與外部RAM及外部程式記憶器** 內部的程式記憶器儲存監督程式,而外部的程式記憶器儲存應用程式。外部RAM與程式記憶器可合併成一個SRAM ### RAM SRAM(6264: 8k* 8;62256: 32k* 8) 於SRAM中,若只有一條讀取與寫入控制輸入線時,標示為R/$\overline{W}$ 若被選取($\overline{CE}$為低電位) : R/$\overline{W}$ =1,讀取,R/$\overline{W}$ =0,寫入 讀取與寫入控制信號各別使用一條輸入線,標示為$\overline{OE}$ 與 $\overline{WE}$ ### SRAM元件被選取時 $\overline{(OE)}$ =0,讀取, $\overline{(WE)}$ = 0,寫入 兩者皆為1時,沒有任何動作 資料輸出端為高阻抗狀態 6246具有兩條晶片選擇輸入線($\overline{CE1}$ 與CE2)、各自的讀取與寫入控制輸入線($\overline{(OE)}$、$\overline{(WE)}$) 62256只有一條晶片選擇輸入線($\overline{(CE)}$ 與 $\overline{(OE)}$,$\overline{(WE)}$ ### SRAM記憶器接腳分佈: ![](https://i.imgur.com/aAsxisB.png) #### MCS-51的低序位元組與資料匯流排,是由I/O埠0以多工的方式依序輸出,必須使用門閂電路(74LS373),藉著ALE控制信號鎖住低序位元組的位址 ### 外部資料記憶器: ![](https://i.imgur.com/pPiOMn3.png) 讀取週期中,由於$\overline{(WE)}$均保持在高電位,記憶器元件的$\overline{(WE)}$輸入端為高電位 * $\overline{(OE)}$輸入端由於$\overline{(RD)}$信號的加入而為低電位 * 若其$\overline{(CE1)}$輸入端也為低電位,該記憶器元件被致能,而輸出由位址線定址的記憶器位元組資料於資料匯流排上 寫入週期中,由於$\overline{(RD)}$信號均保持在高電位,記憶器元件的$\overline{(OE)}$輸入端為高電位,其輸出緩衝器處於關閉狀態 $\overline{WE}$輸入端由於$\overline{(WR)}$信號的加入而為低電位 * 若$\overline{(CE)}$輸入端也為低電位,該記憶器元件的寫入電路被致能 * 寫入資料匯流排上的資料於由位址線指定的記憶器元件位致中 ### 快閃記憶器 ![](https://i.imgur.com/ROCdnAj.png) #### 快閃記憶器接腳分布 ![](https://i.imgur.com/bLZx2Ak.png) #### SRAM 記憶器組織 ![](https://i.imgur.com/fGT9I9a.png) ### 外部程式記憶器 ![](https://i.imgur.com/7Kngto9.png)