微机原理与接口技术实验指导书(2 译码电路、简单并口、8253实验)

更新时间:2023-06-05 04:59:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一 I/O地址译码

一、实验目的

掌握I/O地址译码电路的工作原理。

二、实验原理和内容

实验电路如图11所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,…… 当CPU执行I/ O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。

例如:执行下面两条指令

MOV DX,2A0H

OUT DX,AL(或IN AL,DX)

Y4输出一个负脉冲,执行下面两条指令

MOV DX,2A8H

OUT DX,AL(或IN AL,DX)

Y5输出一个负脉冲。

注意:由于使用PCI卡,命令中的实际端口地址应通过计算来重新确定。是根据PCI卡的基址再加上偏移量计算出来的,不同的微机器PCI卡的基址可能不同,需要事先查找出来,查找方法1:使用WINDOWS的设备管理器,查看此PCI卡的属性来获得。方法2:利用实验台配套的集成开发软件检测出来。例如:PCI卡的基址为:0D400H.

计算公式如下:

计算出的地址= 查找出的PCI卡的基址+ 偏移量;

(其中:偏移量= 2A0H - 280H 或2A8H –280H)

利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。

三、编程提示

1、实验电路中D触发器CLK端输入脉冲时,上升沿使Q端输出高电平L7发光,CD端加低电平L7灭。

2、由于TPC卡使用PCI总线,所以分配的IO地址每台微机可能都不同,编程时需要了解当前的微机使用那段IO地址并进行设置,获取方法前面已经介绍。

3、参考程序:

ioport equ 0d400h-0280h

outport1 equ ioport+2a0h

outport2 equ ioport+2a8h

start:

mov dx,outport1

out dx,al

call delay ;调延时子程序

mov dx,outport2

out dx,al

call delay ;调延时子程序

mov ah,1

int 16h

je start

mov ah,4ch

int 21h

delay proc near ;延时子程序

mov bx,2000

lll: mov cx,0

ll: loop ll

dec bx

jne lll

ret

delay endp

实验程序应有信息提示,按什么键开始,按什么键退出程序等控制功能。

实验二 简单并行接口

一、实验目的

掌握简单并行接口的工作原理及使用方法。

二、实验内容

1、按下面图12简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。

2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。

3、按下面图13简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。

4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。

图12 图13

三、编程提示

1、上述并行输出接口的地址为2A8H,并行输入接口的地址为2A0H,通过上述并行

接口电路输出数据需要3条指令:

MOV AL,数据

MOV DX,2A8H

OUT DX,AL

通过上述并行接口输入数据需要2条指令:

MOV DX,2A0H

IN AL,DX

参考程序1:

ioport equ 0d400h-0280h

ls273 equ ioport+2a8h

start:

exit:

参考程序2:

start:

exit:

mov ah,2 ;回车符 mov dl,0dh int 21h mov ah,1 ;等待键盘输入 int 21h cmp al,’E’ ;判断是否为E键 je exit ;若是则退出 mov dx,ls273 ;若不是,从2A8H输出其ASCII码out dx,al jmp start ;转start mov ah,4ch ;返回DOS int 21h ioport equ 0d400h-0280h ls244 equ ioport+2a0h mov dx,ls244 ;从2A0输入一数据 in al,dx mov dl,al ;将所读数据保存在DL中 mov ah,02 int 21h mov dl,0dh ;显示回车符 int 21h mov dl,0ah ;显示换行符 int 21h mov ah,06 ;是否有键按下 mov dl,0ffh int 21h jnz exit je start ;若无,则转start mov ah,4ch ;返回DOS int 21h

实验三 可编程定时器/计数器(8253)

一、实验目的

掌握8253的基本工作原理和编程方法。

二、实验内容

1、按图14虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。

图14

2、按图15连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)。

图15

三、编程提示

1、8253控制寄存器地址283H

计数器0地址280H

计数器1地址281H

CLK0连接时钟1MHZ

2、参考流程图(见图16、17)

图16 图17

3、参考程序1:

ioport equ 0d400h-0280h

io8253a equ ioport+283h

io8253b equ ioport+280h

start: mov al,10h ;设置8253通道0为工作方式0,二进制计数

mov dx,io8253a

out dx,al

mov dx,io8253b ;送计数初值为0FH

mov al,0fh

out dx,al

lll: in al,dx ;读计数初值

call disp ;调显示子程序

push dx

mov ah,06h

mov dl,0ffh

int 21h

pop dx

jz lll

mov ah,4ch ;退出

int 21h

disp proc near ;显示子程序

push dx

num: and al,0fh ;取低四位 mov dl,al cmp dl,9 ;判断是否<=9 jle num ;若是则为'0'-'9',ASCII码加30H add dl,7 ;否则为'A'-'F',ASCII码加37H add dl,30h

mov ah,02h ;显示

int 21h

mov dl,0dh ;加回车符

int 21h

mov dl,0ah ;加换行符

int 21h

pop dx

ret ;子程序返回

disp endp

4、参考程序2:

ioport equ 0d400h-0280h

io8253a equ ioport+280h

io8253b equ ioport+281h

io8253c equ ioport+283h

start: mov dx,io8253c ;向8253写控制字

mov al,36h ;使0通道为工作方式3

out dx,al

mov ax,1000 ;写入循环计数初值1000

mov dx,io8253a

out dx,al ;先写入低字节

mov al,ah

out dx,al ;后写入高字节

mov dx,io8253c

mov al,76h ;设8253通道1工作方式3

out dx,al

mov ax,1000 ;写入循环计数初值1000

mov dx,io8253b

out dx,al ;先写低字节

mov al,ah

out dx,al ;后写高字节

mov ah,4ch ;程序退出

int 21h

提示:若要8253某计数通道停止输出,可向该通道重新写入控制字,但不写入计数初值即可。

本文来源:https://www.bwwdw.com/article/b6q1.html

Top