最近在學習一些微機原理與接口技術方面的知識。
參考書籍《微機原理與接口技術---基於8086Proteus仿真》 顧暉 梁惺彥 編著
實驗一、利用8086 芯片來實現對I/O設備的讀取和控制,這理的I/O設備是LED燈。(參考章節 6.3 第8章,13.1)
一、畫電路原理圖
工具:Proteus7.10
1、整體全圖
2、芯片及地址數據譯碼電路
3、IO部分
0003
二、仿真
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模式下仿真
0004
debug模式調試。
0005
三、程序信號分析
將8086芯片的頻率調成1KHZ, 同樣我們在電路中添加一個時鐘信號發生器來模擬CLK,基頻率也是1KHZ.
同樣我們在電路中添加一個時鐘信號發生器來模擬CLK,其頻率也是1KHZ.
我們分析的其它信號還有 RD', ER' , M/IO', 地址數據線AD0~AD4,以及地址有效線IO3.
至於Digital Analysis的模擬方法可以參考 proteus的VSM手冊 見附件:VSMTUT.chm。
a、模擬信號全圖,模擬時間是
0006
b、放大程序執行一次信號
0007
總結:通過添加CLK仿真信號,我們可以清楚直觀的看到RD,WR,M/IO' 讀寫內容/IO,以及AD地址數據線複用的信號。在不同的時鐘的狀態。
也可以更好的理解總線週期 8086總線佔用4個時鐘週期。
而至於8086中各指令執行時所花費的時鐘週期數可參通過《Intel微處理器全系列:結構、編程與接口》--Barry B.Brey著 附錄B中 查得。
疑問:
1、從電路中爲什麼可以看出IO端口的地址是030H, 我不找到確定AD3~AD0也是0000的電路。
2、程序執行一次查手冊一花費是35個週期,而執行時卻用一41個週期,這又是爲什麼那?
有知道親,還望不吝指教呀!!!!!