微机接口串行口的测试

您所在的位置:网站首页 8250自发自收异步通信 微机接口串行口的测试

微机接口串行口的测试

2024-07-11 17:26| 来源: 网络整理| 查看: 265

要求

运用微机系统串行口知识,进行微机系统串行偶的测试;完成硬件测试环境,编写程序对微机系统的串口进行自发自收外环测试;数据发送从键盘输入,接收数据在屏幕显示。

硬件

实验前,首先要进行串口的连接以实现外环自发自收。

代码 .586 DATA SEGMENT USE16 OLD0B DD ? FLAG DB 0 DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE ,DS:DATA BEG: MOV AX,DATA MOV DS,AX CLI ;关中断 CALL I8250 ;辅串口初始化 CALL I8259 ;开发8259辅串口中断 CALL RD0B ;读中断向量 CALL WR0B ;写中断向量 STI ;开中断 SCANT: CMP FLAG ,-1 ;测试是否收到结束字符 JE RETURN ;接收到ESC则结束程序 MOV DX,2FDH ;读取通信线状态寄存器 IN AL,DX ;读取通信状态字 TEST AL,20H ;查询D5位——发送保持寄存器空闲标志位 JZ SCANT ; D5为1则空闲,D5为0则不空,接着跳转继续查询 MOV AH,1 INT 16H JZ SCANT MOV AH,0 ;因为进行串性口的自发自收测试,使用BIOS 0号子功能调用 不回显输入 INT 16H AND AL,7FH ;屏蔽最高位,使用AND指令满足ASCII7位的要求 MOV DX,2F8H OUT DX,AL CMP AL,1BH ;判断是否是ESC 结束字符 JNE SCANT TWAIT: MOV DX,2FDH ;读取通信线状态寄存器 IN AL,DX ;读取通信状态字 TEST AL,40H ;D6位为发送移位寄存器空闲标志位 为1则空闲 测试一帧数据是否发送完成 JZ TWAIT RETURN:CALL RESET MOV AH,4CH RECEIVE PROC ;中断方式进行接收 PUSH AX ;保护现场 PUSH DX PUSH DS MOV AX,DATA MOV DS,AX MOV DX,2F8H ;接收缓冲寄存器 IN AL,DX ;读取接收缓冲区的内容 AND AL,7FH ;屏蔽最高位 CMP AL,1BH ;判断是否为结束字符 JE NEXT ;相等则跳转next MOV AH,2 ;调用dos2号子功能 MOV DL,AL INT 21H ;显示接收到的字符串 JMP EXIT NEXT: MOV FLAG ,-1 ;将flag置为-1 EXIT: MOV AL,20H OUT 20H,AL POP DS POP DX POP AX IRET RECEIVE ENDP I8250 PROC MOV DX,2FBH MOV AL,80H OUT DX,AL ;寻址地址为1 MOV DX,2F9H MOV AL,0 OUT DX,AL ;写除数寄存器高8位 MOV DX,2F8H MOV AL,60H OUT DX,AL ;写除数寄存器低8位 MOV DX,2FBH MOV AL,03H OUT DX,AL ;写数据帧格式 MOV DX,2F9H MOV AL,01H OUT DX,AL ;允许8250内部提出接收中断 MOV DX,2FCH MOV AL,08H OUT DX,AL ;8250正常收发并允许送出中断请求 RET I8250 ENDP I8259 PROC IN AL,21H AND AL,11110111B ;将辅串口置为0 OUT 21H,AL ;写中断命令字 RET I8259 ENDP RD0B PROC MOV AX,350BH INT 21H MOV WORD PTR OLD0B ,BX MOV WORD PTR OLD0B+2 ,ES RET RD0B ENDP WR0B PROC PUSH DS MOV AX,CODE MOV DS,AX MOV DX,OFFSET RECEIVE MOV AX,250BH INT 21H POP DS RET WR0B ENDP RESET PROC IN AL,21H OR AL,00001000B OUT 21H,AL MOV AX,250BH MOV DX, WORD PTR OLD0B MOV DS, WORD PTR OLD0B+2 INT 21H RET RESET ENDP CODE ENDS END BEG

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3