• 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

    .MODELSMALL
    .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个周期,这又是为什么那?

    有知道亲,还望不吝指教呀!!!!!















  • 相关阅读:
    JSDI——实现数据库连接池(JDBC改进)
    MD5加密算法(实际应用)
    Java Web 自动登录
    异步编程设计模式Demo
    异步编程设计模式Demo
    禁止程序启动2次
    C#线程同步的几种方法
    ASP.NET MVC的Action Filter
    带有返回值的intent
    android 属性动画
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3395316.html
Copyright © 2020-2023  润新知