SssGy__ 2023-06-01 17:13 采纳率: 78.9%
浏览 27
已结题

8086微机原理与接口技术习题

分别编写8253初始化程序及控制程序,完成如下功能:
要求:(1)通过三态门循环坚持OUTO端的状态,若为低电平,则等待;若为高电平,则读取波段开关的当前位置。并将开关的当前位置状态用七段数码管显示出来。
(2)有任意键按下时,工作结束。
(3)画出8253两级分频的连接图。
提示:(1)假设8253的输入频率为2MHz
(2)需要多级分频才能实现要求的1Hz,计算判断需要几级

  • 写回答

4条回答 默认 最新

  • CSDN专家-sinJack 2023-06-01 18:09
    关注

    8253初始化程序:

    ORG 100H ; 程序入口地址
    
    MOV AL, 00110110B ; 初始化控制字寄存器
    OUT 43H, AL ; 将控制字写入8253的控制寄存器
    
    MOV AL, 0FFH ; 初始化计数器0的初值
    OUT 40H, AL ; 将初值写入计数器0的数据寄存器
    OUT 40H, AL
    
    MOV AL, 0FFH ; 初始化计数器1的初值
    OUT 41H, AL ; 将初值写入计数器1的数据寄存器
    OUT 41H, AL
    
    MOV AL, 0FFH ; 初始化计数器2的初值
    OUT 42H, AL ; 将初值写入计数器2的数据寄存器
    OUT 42H, AL
    
    HLT ; 程序结束
    

    8253控制程序:

    ORG 100H ; 程序入口地址
    
    MOV DX, 378H ; 设置并打开端口
    MOV AL, 00000001B ; 设置三态门的控制字
    OUT DX, AL
    
    MOV DX, 379H ; 设置并打开端口
    MOV AL, 11111111B ; 设置计数器0的控制字
    OUT DX, AL
    
    MOV DX, 37AH ; 设置并打开端口
    MOV AL, 00000110B ; 设置计数器1的控制字
    OUT DX, AL
    
    MOV DX, 37BH ; 设置并打开端口
    MOV AL, 00000000B ; 设置计数器2的控制字
    OUT DX, AL
    
    MOV DX, 37CH ; 设置并打开端口
    IN AL, DX ; 读取波段开关的当前位置
    MOV DX, 3F8H ; 设置并打开端口
    CALL DISPLAY ; 将开关的当前位置状态用七段数码管显示出来
    
    WAIT: ; 等待任意键按下
    IN AL, 60H ; 读取键盘状态
    CMP AL, 0 ; 判断是否有键按下
    JE WAIT ; 如果没有键按下,则继续等待
    
    MOV DX, 378H ; 设置并打开端口
    MOV AL, 00000000B ; 关闭三态门
    OUT DX, AL
    
    HLT ; 程序结束
    
    DISPLAY: ; 显示函数
    PUSH AX ; 保存寄存器
    PUSH BX
    PUSH CX
    PUSH DX
    
    MOV BX, 0 ; 初始化循环计数器
    MOV CX, 4 ; 设置循环次数
    
    LOOP1: ; 循环读取每一位
    MOV AL, DL ; 将读取到的位置状态存入AL
    AND AL, 00000001B ; 取出最低位
    ADD AL, 30H ; 将数字转换为ASCII码
    MOV DL, AL ; 将转换后的数字存回DL
    MOV AH, 0EH ; 设置显示光标
    MOV BH, 0 ; 设置显示页面
    MOV CX, 1 ; 设置显示次数
    INT 10H ; 调用BIOS中断显示数字
    SHR DL, 1 ; 右移一位,准备读取下一位
    INC BX ; 增加计数器
    CMP BX, 4 ; 判断是否已经读取完所有位
    JL LOOP1 ; 如果没有,则继续循环
    
    POP DX ; 恢复寄存器
    POP CX
    POP BX
    POP AX
    RET ; 返回主程序
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月9日
  • 已采纳回答 6月1日
  • 创建了问题 6月1日

悬赏问题

  • ¥50 求大神教题,这个代码和讲解思路都怎么写呀,完全卡住了
  • ¥15 基于ffmpeg 编码成yuv420p nv12的问题
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗