南邮|微机系统串行口的测试

这篇具有很好参考价值的文章主要介绍了南邮|微机系统串行口的测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实验目的:

学习串行接口8250的工作原理及编程和中断程序的设计,运用微机系统串行通信知识,进行微机系统串行口的测试。

实验要求:

编写程序对微机系统的串行口进行自发自收内环测试,从键盘键入发送数据,屏幕显示接收数据。发送要求采用查询方式,接收采用中断方式。文章来源地址https://www.toymoban.com/news/detail-765302.html

DATA SEGMENT USE16
OLD0C DD ?
FLAG DB 0
MSG DB 'You can play a key on the keybord!',0AH,0DH,'$' 
DATA  ENDS

CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
BEG:
    MOV AX,DATA
    MOV DS,AX
    
    CLI
    CALL I8250
    CALL I8259
    CALL READ0C
    CALL WRITE0C
    STI
    
;--------发送数据--------
SCAN1:
    MOV FLAG,0
    MOV DX,3FDH
    IN AL,DX
    TEST AL,00100000B    ;发送保持寄存器是否为空
    JZ SCAN1
;--------提示信息--------
    LEA DX, MSG
    MOV AH,09H
    INT 21H    
SCAN2:
    MOV AH,01H
    INT 16H  
    JZ SCAN2            ;查询键盘缓冲区 
    CMP AL,27            ;判断是否为Esc
    JZ EXIT 
    MOV DX,3F8H
    AND AL,7FH            ;屏蔽最高位,使用AND指令满足ASCII7位的要求
    OUT DX,AL            ;发送数据
NEXT1: 
    MOV DX,3FDH
    IN AL,DX            ;读取通信线状态寄存器
    TEST AL,01000000B    ;发送移位寄存器是否为空
    JZ NEXT1
;-------接收数据-------
SCAN3:  
    CMP FLAG,1
    JNZ SCAN3
    MOV AH,0CH
    INT 21H                ;清空缓存区
    JMP SCAN1

;-------中断服务子程序--------
RECEIVE PROC
    PUSH AX
    PUSH DX
    PUSH DS 
    MOV AX,DATA
    MOV DS,AX
    MOV DX,3F8H
    IN AL,DX            ;读取接收缓冲区的内容
    AND AL,01111111B
    MOV DL,AL
    MOV AH,02H
    INT 21H                ;显示接收到的字符
    MOV DL,0AH
    MOV AH,02H
    INT 21H                ;换行
    MOV FLAG,1
    MOV AL,20H
    OUT 20H,AL
    POP DS
    POP DX
    POP AX
    IRET
RECEIVE ENDP    
    
    
;-------初始化8250--------
I8250 PROC
    MOV AL,10000000B
    MOV DX,3FDH
    OUT DX,AL        ;设置访问除数寄存器
    MOV AL,0
    MOV DX,3F9
    OUT DX,AL        ;写除数寄存器高八位
    MOV AL,60H
    MOV DX,3F8H
    OUT DX,AL        ;写除数寄存器低八位
    MOV AL,00000011B
    MOV DX,3FBH
    OUT DX,AL        ;设置数据帧格式
    MOV AL,00000001B
    MOV DX,3F9H
    OUT DX,AL        ;设置中断允许寄存器,允许8250内部提出接收中断
    MOV AL,00011111B
    MOV DX,3FCH
    OUT DX,AL        ;设置MODEM控制寄存器,允许8250发送中断请求
    RET
I8250 ENDP


;-------初始化8259-------
I8259 PROC
    IN AL,21H
    AND AL,11101111B
    OUT 21H,AL
    RET
I8259 ENDP    


;-------读中断向量------
READ0C PROC
    MOV AX,350CH
    INT 21H
    MOV WORD PTR OLD0C,BX
    MOV WORD PTR OLD0C+2,ES
    RET
READ0C ENDP


;-------写中断向量------
WRITE0C PROC
    PUSH DS
    MOV AX,CODE
    MOV DS,AX
    MOV DX,OFFSET RECEIVE
    MOV AX,250CH
    INT 21H
    POP DS
    RET
WRITE0C ENDP


;-----恢复中断向量------
RESET PROC
    IN AL,21H
    OR AL,000001000B
    OUT 21H,AL
    MOV AX,250BH
    MOV DX,WORD PTR OLD0C
    MOV DS,WORD PTR OLD0C+2
    INT 21H
    RET
RESET ENDP


;-------结束退出--------
EXIT PROC
    CALL RESET
    MOV AH,4CH
    INT 21H
    RET
EXIT ENDP    

CODE ENDS
END BEG
编写程序对微机系统的串行口进行自发自收测试,从键盘键入发送数据,屏幕显示接收数,微型计算机原理与接口技术,开发语言,Powered by 金山文档

到了这里,关于南邮|微机系统串行口的测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 编写C程序模拟实现单处理机系统中进程调度,实现对多个进程的调度模拟,要求采用多级反馈队列调度算法进行模拟调度。(江西师范大学)

    编写C程序模拟实现单处理机系统中进程调度,实现对多个进程的调度模拟,要求采用多级反馈队列调度算法进行模拟调度。 数据结构设计:PCB:结构体;就绪队列:每个节点为进程PCB;进程状态 具体调度算法:FCFS、SJF、PR;涉及多种操作:排序、链表操作 程序输出设计:调

    2024年02月04日
    浏览(54)
  • FPGA学习笔记(五)Testbench(测试平台)文件编写进行Modelsim仿真

    一、FPGA学习笔记(一)入门背景、软件及时钟约束 二、FPGA学习笔记(二)Verilog语法初步学习(语法篇1) 三、FPGA学习笔记(三) 流水灯入门FPGA设计流程 四、FPGA学习笔记(四)通过数码管学习顶层模块和例化的编写 五、FPGA学习笔记(五)Testbench(测试平台)文件编写进行

    2024年02月07日
    浏览(54)
  • 使用uniapp编写微信小程序并与原生小程序代码进行融合

    在使用uniapp编写时所使用的语法为VUE,代码编写完成后点击HBuilder X工具窗口:发行编译为小程序,即可自动转换为小程序的代码 解决问题: 编译之后代码会被进行压缩,vue文件会被拆分,其中的变量名也会被替换掉,基本没有可读性,变成这样: 这样的代码基本是不可进行

    2024年02月09日
    浏览(67)
  • 【6】测试项程序编写(ARM服务器)

          这一章节我们将针对接口测试、压力测试等进行测试项程序的编写,这一节是本专栏算是最重要的一部分了,其实编写测试项程序说简单也简单,说难也有难点,需要细心一点,然后,我会通过实例讲解来说明各个需要注意的点。 1.python 3.7.8   可直接进入官网下载安

    2024年01月22日
    浏览(39)
  • 系统学习Python——单元测试unittest:编写测试用例

    分类目录:《系统学习Python》总目录 相关文章: · 单元测试unittest:框架结构 · 单元测试unittest:测试固件 · 单元测试unittest:编写测试用例 · 单元测试unittest:执行测试用例 · 单元测试unittest:用例执行次序 · 单元测试unittest:内置装饰器 · 单元测试unittest:命令行执行测

    2023年04月08日
    浏览(62)
  • 微机原理 || 第3次测试:第八章-常用接口芯片8255&8253(测试题+手写解析)

    一直没有学明白8253和8255芯片,觉得后面难,其实看懂后,就是照着表格去对应填写, 知道地址怎么回事就没问题哒~ 相信你 😘 对应练习部分:测试1-5题足够考试滴~~~  更多8253练习见如下笔记哦~ 微机原理 || 8253接口芯片知识点+4道经典例题+手写解题过程_MSY~学习日记分享

    2024年02月10日
    浏览(43)
  • 编写C#程序实现和西门子1500PLC进行Modbus Tcp通讯仿真

    前言 本文章的主题是介绍Modbus Tcp通讯仿真,其中C#编写的程序充当客户端(Client),西门子1500PLC充当的服务器端(Server),有关Modbus Tcp协议的具体内容在此也不再赘述,大家可以自行阅读官方文档。 注:在实现其基本功能的条件下,本文的代码编写以及软件配置均简化。

    2024年02月11日
    浏览(68)
  • 【51单片机系列】单片机与PC进行串行通信

    工业现场的测控系统中,常使用单片机进行监测点的数据采集,然后单片机通过串口与PC通信,把采集的数据串行传送到PC机上,再在PC机上进行数据处理。 PC机配置的都是RS-232标准串口,为D型9针插座,输入/输出为RS-232电平。D型9针插头引脚如下: 如下表为RS-232C的D型9针插头

    2024年01月17日
    浏览(44)
  • 【测试技术-性能测试-实战1】使用Loadrunner自带的系统学习脚本编写和脚本增强。

    Hp software-start hp web tours server Hp software-hp web tours application 打开Virtual User Generator 创建脚本,协议选择Web - HTTP/HTML,输入脚本名,选择好脚本存放路径,点击create即可创建好一个空白脚本。 设置录制选项,点击record按钮,设置完基本信息后,点击右下角的Recording Options,设置录

    2024年02月02日
    浏览(50)
  • 编写web程序,基于echarts将Mysql表数据进行可视化展示及Hadoop学习心得

    文章目录 目录 前言 一、从MySQL数据库中获取需要展示的数据。 1.引入库 2.连接到MySQL数据库 二、创建图表 三、运行后结果展示 四、学习心得  总结         将Mysql表数据可视化展示在Web程序中可以借助ECharts这样的图表库来实现。通过Web程序连接MySQL数据库,获取数据后,

    2024年02月03日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包