1. MCS-51 系列單片機的結構原理
1> 運行部件
以算術邏輯運算單元 ALU 爲核心,包含累加器 ACC ,B 寄存器,暫存器,標誌寄存器 PSW 等許多部件,能夠實現算術運算,邏輯運算,位運算,數據傳輸等處理
2> 算術邏輯運算單元 ALU
可對一位二進制數據進行置位,清零,求反,測試,轉移及位邏輯“與”“或”等處理
3> 累加器 ACC ( 簡稱 A )
4> 標誌寄存器 PSW
8 位寄存器,用於保存指令執行結果的狀態,以供程序查詢判別
5> 進位標誌位 C ( PSW .7 )
執行算術運算和邏輯運算指令時,用於記錄最高位的進位或錯位
6> 輔助進位標誌位 AC ( PSW .6 )
用於記錄在進行加法和減法運算時,低 4 位向高 4 位是否有進位或錯位
7> OV ( PSW .2 )溢出標誌位
進行加減法運算,結果超出 8 位二進制範圍, OV 置 1 ,標誌溢出
8> P ( PSW .0 )奇偶標誌位
A 中 1 的個數爲奇數,置位
*****************************************************************************************
1.壓縮 BCD 碼 = 8421 碼
2.分析以下指令執行後,累加器 A ,標誌位 C ,AC ,OV ,P 的值
MOV A , # 67 67 H = 01100111 B
ADD A , # 58 58 H = 01011000 B
相加得:
10111111 B --> OBF H
最高位沒有發生進位, C = 0
低四位沒有向前進位, AC = 0
OV = 1,因爲範圍是( -128 ~ 127 ) 發生溢出
P = 1,因爲 1 的個數爲奇數
*****************************************************************************************
2. MCS-51 單片機的存儲器結構
分爲 程序存儲器 ROM 和 數據存儲器 RAM
1> 程序存儲器
用於存放單片機工作的程序,單片機工作時先由用戶編制好程序和表格常數,把它存放到程序存儲器中,然後在控制器的控制下,依次從程序存儲器中取出指令送到 CPU 執行,實現功能。爲此,設計了一個專用寄存器 -- 程序計數器 PC ,用以存放要執行的指令的地址( 16 位,64kb )
2> 數據存儲器
用於存放取出程序執行時所需的數據
1> 片內數據存儲器
工作寄存器組區,位尋址區,一般 RAM 區和特殊功能寄存區,堆棧區
*****************************************************************************************
● 重點
1.怎麼區分程序存儲器片內片外
根據引腳 EA(非)電平的高低來決定,接低電平時,則從片外程序存儲器取指,接高電平,則從片內取指
2.區分 64 kb 的程序存儲器和 64 kb 片外數據存儲器
① 根據信號區分
片外數據存儲器 RD(非) WR(非)
程序存儲器 PSEN
② 根據指令區分
片外數據存儲器 MOVX
程序存儲器 MOVC
3.區分片內數據存儲器和片外數據存儲器低 256 地址空間重疊
根據指令的不同
片內數據存儲器 MOV
片外數據存儲器 MOVX
*****************************************************************************************
3. MCS-51 系列單片機外部引腳及片外總線
1> 輸入輸出引腳
① P0 口( 39 - 32 引腳 )
唯一能夠外接電阻, P0 口分時複用爲低 8 位地址總線和雙向數據總線
② P1 口( 1 - 8 引腳 )
可作爲準雙向 I/O 接口使用
③ P2 口( 21 - 28 引腳 )
高 8 位地址總線
④ P3 口( 10 - 17 引腳 )
準雙向 I/O 接口使用,每一位還具有獨立的第二功能
2> 復位方式
MCS-51 單片機有一個復位引腳 RST ,高電平有效,當外部電路使得 RST 端出現 2 個機器週期( 24 個時鐘週期 )以上的高電平,系統內部復位
3> 程序執行方式
程序復位後, PC 指針總指向 0000 H,所以程序總是從 0000 H 開始執行
4> 中斷
MCS-51 單片機的中斷系統規定,從中斷服務程序中返回之後,至少要再執行一條指令,才能重新進入中斷
5> 機器週期
包含 S1,S2,···S6 六個狀態,每個狀態有 P1,P2 兩拍,每一個拍稱爲一個時鐘週期
① 一個機器週期包含 12 個時鐘週期
② 振盪週期:晶振平率 fosc 的倒數 == 時鐘週期
③ 1 個機器週期:12 個震盪週期
④ 1 個指令週期:1,2,4 個機器週期
⑤ ALE 的頻率:1/6 的時鐘週期
= 2 * 機器週期
機器週期 = 12 * 時鐘週期( 振盪週期 )