80C51單片機指令的取指、執行時序


80C51單片機指令的取指、執行時序

現按4類指令介紹CPU時序。因為CPU工作的過程就是取指令與執行指令的過程,所以CPU必須先取出指令,然后才能執行指令。

1.雙字節單周期指令

由於雙字節單周期指令必須在一個周期內取機器碼二次,所以必須在一個機器周期內安排二次讀操作碼的操作,分別發生在S1P2與S4P2。在S1P2讀入機器碼74並送入指令寄存器IR,在S4P2讀入數據03送入累加器A,即讀2取2。在指令的執行過程中,P0口要分時傳送地址與數據,因此當操作碼的地址從P0口輸出后,必須發地址鎖存信號ALE給74LS373鎖存器,將地址鎖存在74LS373內,騰出P0口讀入機器碼74。在取數據03時同樣要發ALE信號。因此,在一個機器周期內地址鎖存信號二次有效,見80C51時序圖2-13。

2.單字節單周期指令

對單字節單周期指令,由於操作碼只有一個字節,因此第一次讀操作碼有效,而第二次讀的操作碼將被丟棄,即:讀1丟1,且程序計數器PC不加1。

3.單字節雙周期指令

對單字節雙周期指令,由於操作碼只有一個字節,而執行時間長達2個機器周期,因此除第1次讀操作碼有效外,其余三次讀的操作碼均被放棄,即:讀1丟3。

4.訪問外部存儲器指令MOVX

執行訪問外部存儲器指令MOVX時,首先從程序存儲器中取出指令,然后從外部數據存儲器中取出數據,因此該指令執行時序圖與前三類指令不同。由於MOVX是單字節雙周期指令,所以在取指令階段(即第一個機器周期的S1P1到S4P2)是讀1丟1,而在執行指令讀數據階段(即第一個機器周期的S5到第二個機器周期的S3)所完成的操作如下:

(1)先將外部數據存儲單元的地址ADDR由DPTR從P0與P2口輸出,即時序圖中的S5P1到S6P2階段。並在S4P2到S5P2階段,發ALE信號將地址鎖存。

(2)在第二個機器周期S1P2到S2P2內取消ALE與程序選通信號PSEN (即取消取指操作),使P0口專門用於傳送數據。同時發讀信號,通過P0口將外部數據存儲單元中的數據傳送到累加器A中。即:時序圖的S6P2到S4P1階段。

(3)由於鎖存的地址為外部數據存儲單元的地址,所以在第二個機器周期S4取消取指令的操作,即:不再發程序選通信號PSEN 。

注:由於執行MOVX指令時,在第二個機器周期中要少發一次ALE信號,所以ALE的頻率是不穩定的。

轉自 80C51單片機指令的取指、執行時序 - 電子技術基礎知識 - 21IC中國電子網  http://www.21ic.com/jichuzhishi/mcu/shixu/2013-04-24/179946.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM