Proteus仿真_01、 8086 IO譯碼仿真

最近在學習一些微機原理與接口技術方面的知識。

參考書籍《微機原理與接口技術---基於8086Proteus仿真》 顧暉 梁惺彥 編著

實驗一、利用8086 芯片來實現對I/O設備的讀取和控制,這理的I/O設備是LED燈。(參考章節 6.3 第8章,13.1)

一、畫電路原理圖

工具:Proteus7.10

1、整體全圖

00001


2、芯片及地址數據譯碼電路

2、芯片



3、IO部分

00030003


二、仿真

1、仿真源碼 io.asm

.MODEL SMALL
.8086
.code
.startup

L: mov dx,030h      ; 將IO設備的端口地址 30H送給dx。這裏是有疑問的,我這一點也沒有看懂,若懂得的可以千萬要告訴我呀!

第三部分(書267頁)說LED端口的地址和開關端口地址都是0030H。我從圖13-3可以看出003對應的是A15~A4,

;但爲什麼地址A3~A0也0那???從電路中那一部分可以看出那??

in al,dx      ;從dx裏的端口中讀取數據,讀到al中。

out dx,al      ;把al的數據寫到端口爲dx的設備中,這裏我們在調試時可以手動的設置al的值的。

        jmp L

.data
.stack
END

2、debug模式下仿真

00040004




debug模式調試。

00050005



三、程序信號分析

將8086芯片的頻率調成1KHZ, 同樣我們在電路中添加一個時鐘信號發生器來模擬CLK,基頻率也是1KHZ.


同樣我們在電路中添加一個時鐘信號發生器來模擬CLK,其頻率也是1KHZ.


我們分析的其它信號還有 RD', ER' , M/IO', 地址數據線AD0~AD4,以及地址有效線IO3.



至於Digital Analysis的模擬方法可以參考 proteus的VSM手冊 見附件:VSMTUT.chm。

a、模擬信號全圖,模擬時間是

00060006



b、放大程序執行一次信號

00070007



總結:通過添加CLK仿真信號,我們可以清楚直觀的看到RD,WR,M/IO' 讀寫內容/IO,以及AD地址數據線複用的信號。在不同的時鐘的狀態。

也可以更好的理解總線週期 8086總線佔用4個時鐘週期。


而至於8086中各指令執行時所花費的時鐘週期數可參通過《Intel微處理器全系列:結構、編程與接口》--Barry B.Brey著  附錄B中 查得。


疑問:

 1、從電路中爲什麼可以看出IO端口的地址是030H, 我不找到確定AD3~AD0也是0000的電路。

 2、程序執行一次查手冊一花費是35個週期,而執行時卻用一41個週期,這又是爲什麼那?

有知道親,還望不吝指教呀!!!!!















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章