一. 实验目的
- 掌握I/O端口地址译码电路的工作原理。
- 掌握简单并行接口的工作原理及使用方法。
二. 实验内容
硬件平台:TPC-ZK-II配套实验箱
软件环境:TPC-ZK-II
实验2-1:I/O端口地址译码实验
电路图:
接线:
实验要求:
实验电路中D触发器CLK端输入脉冲时,上升沿使Q端输出高电平,L7发光,CD端加低电平,L7灭。要求通过编程控制译码电路的负脉冲输出,使L7闪烁发光(亮灭交替),时间间隔通过软件延时实现。
汇编代码:
OUTPORT1 EQU 2A0H
OUTPORT2 EQU 2A8H
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,290h ;将290H(0010 1001 0000)送入控制端口DX
OUT DX,AL ;输出Y2的一个负脉冲
CALL DELAY ;调用延时子程序
MOV DX,2A0h ;将2A0H(0010 1010 0000)送入控制端口DX
OUT DX,AL ;输出Y4的一个负脉冲
CALL DELAY ;调用延时子程序
MOV AH,1 ;将立即数1送入AH中
INT 16H ;读取键盘缓冲区,从键盘读入字符送AL寄存器
JE START ;跳转至START
MOV AH,4CH ;返回DOS
INT 21H ;中断,退出
DELAY PROC NEAR ;延时子程序开始定义
MOV BX,500 ;将立即数500送入BX中,用于控制亮灭的时间间隔为0.5s
label1:
MOV CX,0 ;将立即数0送入CX中
label2:
LOOP label2 ;循环执行label2
DEC BX ;计时,BX自减
JNE label1 ;跳转到label1
RET ;修改IP实现近转移
DELAY ENDP ;延时子程序结束定义
CODE ENDS
END START
运行结果:
观察实验箱中的L7二极管,二极管不停闪烁,如下图所示:
实验2-2:简单并行接口I/O实验
电路图:
接线:
实验要求:
- 利用74LS273和74LS32组合电路,编程从键盘输入一个字符或数字,将其ASCII码通过输出接口Q1-Q8输出,根据8个发光二极管L0-L7的发光情况验证正确性。
- 利用74LS244和74LS32组合电路,通过逻辑电平开关预置某个字母的ASCII码,编程实现输入这个ASCII码,并将其对应字母在屏幕上显示出来。
汇编代码:
ls244 equ 2a0h
code segment
assume cs:code
start:
mov dx,ls244 ;从2A0输入一数据送入dx端口中
in al,dx ;将端口dx中的数据送入al中
mov dl,al ;将所读数据保存在DL中
mov ah,02h ;调用DOS的2号功能
int 21h ;中断,输出
mov dl,0dh ;显示回车符'0dh'
int 21h ;中断,输出
mov dl,0ah ;显示换行符'0ah'
int 21h ;中断,输出
mov ah,06h ;调用DOS的6号功能,直接输入输出字符
mov dl,0ffh ;检测是否有键按下
int 21h ;中断,输出
jnz exit ;如果有键按下,则跳转至exit操作
je start ;如果没有键按下, 则跳转至start操作
exit:
mov ah,4ch ;返回DOS
int 21h ;中断,退出
code ends
end start
运行结果:
拨动实验箱开关,程序窗口显示相应字符:
若取消回车,则显示如下状态:
若取消换行,则始终输出一行的内容。
汇编代码:
ls273 equ 2a8h
code segment
assume cs:code
start:
mov ah,02h ;调用DOS的2号功能
mov dl,0dh ;显示回车符'0dh'
int 21h ;中断,输出
mov ah,01h ;调用DOS的1号功能,等待键盘输入
int 21h ;中断,输出
cmp al,1bh ;判断按下的是否为ESC键'1bh'
je exit ;若是则跳转至exit退出
mov dx,ls273 ;若不是则从端口2A8H读预置的字符
out dx,al ;输出读取的字符al的ASCII码
jmp start ;跳转至start操作
exit:
mov ah,4ch ;返回DOS
int 21h ;中断,退出
code ends
end start
运行结果:
运行程序,在键盘上输入一个字符,实验箱指示灯便可显示相应ASCII码。