8086+8255A写数码管Proteus仿真

仿真截图

代码

CODE SEGMENTDATA SEGMENT
NUM DB 30H,39H
LIST DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
PORTA EQU 288H
PORTB EQU 28AH
PORTC EQU 28CH
PORTCTL EQU 28EH
DATA ENDSMAIN PROC FAR
ASSUME CS:CODE,DS:DATA;段分配
START:
MOV AX, DATA;段初始化
MOV DS, AXMOV DX, PORTCTL;写入控制字
MOV AL, 80H
OUT DX, AL
NEXT1:
;MOV DX, PORTCTL;PC0置0;询问老师二者异同
;MOV AL, 00H
;OUT DX, AL
;MOV AL, 03H;PC1置1
;OUT DX, AL
MOV DX, PORTC
MOV AL, 02H
OUT DX, ALMOV AL, NUM
SUB AL, 30H
MOV BX, OFFSET LIST
XLAT
MOV DX, PORTA
OUT DX, AL
CALL DELAY;MOV DX, PORTCTL;PC0置1
;MOV AL, 01H
;OUT DX, AL
;MOV AL, 02H;PC1置0
;OUT DX, AL
MOV DX, PORTC
MOV AL, 01H
OUT DX, ALMOV AL, NUM+1
SUB AL, 30H
MOV BX, OFFSET LIST
XLAT
MOV DX, PORTA
OUT DX, AL
CALL DELAY
JMP NEXT1MOV AH, 4CH;返回DOS,仿真无用,反正死循环
INT 21H
MAIN ENDPDELAY PROC NEAR;延时
PUSH SI
PUSH CX
MOV SI, 1
DELAYNEXT1:
MOV CX, 0E000H
DELAYNEXT2:
LOOP DELAYNEXT2
DEC SI
JNZ DELAYNEXT1
POP CX
POP SI
RET
DELAY ENDPCODE ENDS
END MAIN

遇到的问题

这个简单的仿真我用了很长时间,原因就是遇到了各种各样的仿真问题。

  1. 8086asm编译器问题
    8086汇编需要使用Proteus中MASM32编译器。

    但是我在选择编译器时遇到了问题。当在建立工程的时候没有选择编译器时,在工程内默认编译器无法更改。更改确定之后仍然不变。只能重新建一个工程,建立时选择MASM32编译器。

    这个编译器在我这会报一些莫名其妙的错:
    make: *** [Debug.exe] Error 1
    但是在有些工程中又能成功编译。
  2. 芯片兼容问题
    之前在三个74LS245中不小心混进去一个74HCT245,导致数据总线双向缓冲不同步,数据无法输入输出。
  3. Protues中8086数据段定义问题
    在我这,8086的数据段一旦定义在代码段以外,8086将不从第一句代码开始执行,而是跳过前几条。可以通过单步执行debug的方式验证。
    仅仅点击了一下暂停键,就会直接跳到第10行代码开始执行。如下图。

    不从第一句开始执行的结果自然不正确。解决的方法是将数据段放入代码段中(8086各个段之间允许包含关系)。这样就会恢复正常。
  4. 8255A置位复位控制使用方法
    从仿真电路图中可以看出,我需要将8255A的PC0与PC1写入0或1,以使得两个数码管交替亮起,高频情况下,就可以视觉上达到两个都亮的效果。
    写入PC0与PC1时,有两种方法。一种直接向PORTC输入,一种通过8255A的置位复位控制字完成。可以从代码的注释中看出,我最初使用的是置位复位的方式,这种方式可以成功的将PC0、PC1置0或1。但这种方法会导致下一句写入PORA的代码无效,就是A端口不会有任何输出,数码管自然不会亮起。改用直接向PORTC写入,该问题得以解决。
    这个问题的原因我不太确定,可能8255A置位复位控制字有其他效果我没学习到,亦或者Proteus中8255A仿真模型的bug。

其他说明

这个程序是为了实际DOS系统8086写的,本意是DOS INT 21H输入数字显示。所以会使用查表指令。仿真中无法输入,所以中间许多步骤都是冗余的。

8086+8255A写数码管Proteus仿真及8086Proteus仿真问题相关推荐

  1. 8086+ADC0808+8255A电压测量数码管显示Proteus仿真

    8086+ADC0808+8255A电压测量数码管显示Proteus仿真 Proteus仿真截图 代码 CODE SEGMENT DATA SEGMENT PORT_ADC EQU 80H PORT_ ...

  2. Proteus 8微机接口仿真模拟实验,8086,8255A,DAC0832输出四种波形

    Proteus 8微机接口仿真模拟实验,8086,8255A,DAC0832输出四种波形 文章目录 Proteus 8微机接口仿真模拟实验,8086,8255A,DAC0832输出四种波形 一.设计名 ...

  3. 如何使用keil进行编译并且用proteus进行51单片机仿真实现0~F的数码管字符显示

    文章目录 一.目的: 二.在keil中进行程序编译 三.在proteus上画出电路图 四.将keil中编译的hex文件在proteus电路图中进行仿真运行 一.目的: 使用keil进行编译并且用pro ...

  4. 51单片机 玩转按键加减切换+数码管+Proteus仿真

    51单片机 玩转按键加减切换+数码管+Proteus仿真 实例代码 /* 实验说明:实验接线:1,动态数码管模块-->单片机管脚2,独立按键模块-->单片机管脚 K1-->P10K2 ...

  5. 【单片机】Proteus安装、MDK5安装、Proteus与Keil联合仿真教程

    1.需要的文件 2. 文件"Proteus软件"的安装 参考:proteus7.8的安装.破解.汉化教程https://jingyan.baidu.com/article/86f4 ...

  6. 【沧海拾昧】Keil uVision5新建stm32工程并联合Proteus 8 Professional简单仿真

    #C0101 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题必是本集记录有谬, ...

  7. 电路仿真软件详谈(27),基于电路仿真软件proteus的实时时钟仿真

    电路仿真软件的使用越来越多,因此电路仿真软件的重要性不言而喻.对于电路仿真软件,小编在往期文章中做过诸多介绍.为增进大家对电路仿真软件的了解,本文将对电路仿真软件proteus予以讲解,主要内容为基于 ...

  8. Arduino与Proteus仿真实例-电子相册仿真

    电子相册仿真 本次实例将仿真如何从SD卡读取BMP格式图像并在ILI9341驱动器的LCD显示屏上显示. 1.仿真电路原理图 在仿真电路原理图中,SD卡通过SPI方式连接,ILI9341 LCD显示屏 ...

  9. 《视觉SLAM进阶:从零开始手写VIO》第二讲作业-IMU仿真、MU imu_utils标定

    <视觉SLAM进阶:从零开始手写VIO>第二讲作业-IMU仿真.MU imu_utils标定 作业题目: 1 仿真代码解析 仿真代码地址:https://github.com/HeYiji ...

  10. ROS中阶笔记(四):机器人仿真—Gazebo物理仿真环境搭建(重点)

    ROS中阶笔记(四):机器人仿真-Gazebo物理仿真环境搭建(重点) 文章目录 1 ros_control 1.1 ros_control安装 2 Gazebo仿真步骤(重点) 2.1 配置物理仿真 ...

最新文章

  1. 美国AI博士指出,自学Python到底能做什么
  2. 【原创】分布式之缓存击穿 【原创】自己动手实现静态资源服务器 【原创】自己动手实现JDK动态代理...
  3. android studio中能用的各种转义字符
  4. springboot获取原生js请求_七节课带你学会SpringBoot,第三课
  5. Android学习笔记2---多界面切换
  6. 使用统计异常消除滤波器来消除异常
  7. 移动计算云分布式数据缓存服务,实现快速可靠的跨区域多活复制
  8. Golang 加密方法
  9. html5图片中加入文字,HTML肿么在图片上添加文字,也就是图片作为背景,代码和图像显示如下...
  10. android 截屏 简书,Android 内置应用截屏方法
  11. linux 搭建snmp服务器,linux snmp安装配置
  12. 【备份】git命令行
  13. C/C++中argv[ ]与argc内容解读//(涉及运用cmd)
  14. MGN:Learning Discriminative Features with Multiple Granularities for Person Re-Identification阅读笔记
  15. 吉林计算机专业二本大学排名,吉林有哪些好二本大学?
  16. 信息安全-网络安全主动防御技术与应用(一)
  17. 数学术语——指数的发展历程
  18. scrapy爬取起点小说网
  19. WPF编写的txt阅读器(自适应各种编码,解决显示大数据量txt卡顿的问题)
  20. RabbitMQ重试机制+死信队列

热门文章

  1. 大型体检系统源码 医院PEIS管理系统源码 BS架构
  2. PHP从入门到精通(数组运算符篇)
  3. MogDB官网正式亮相!单机256万tpmC再创佳绩
  4. Vue开发腾讯地图坐标拾取器
  5. Java练习题11.2 方法的重载
  6. 论大学学霸是怎样炼成的……
  7. 分析内网即时通讯软件安全性如何
  8. 联想thinkPad中锁屏壁纸的本地位置(联想软件商店)
  9. Flow Prediction in Spatio-Temporal Networks Based on Multitask Deep Learning(TKDE2020)
  10. 二维卷积与一维卷积区别