华电微机原理与接口实验实验(完整可用程序)

更新时间:2024-05-16 13:09:01 阅读量: 综合文库 文档下载

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

《计算机接口技术》实验指导 (第一版)

TPC-1实验系统的结构及使用说明

1. 结构

TPC—l实验系统不能单独使用,它必须和PC机相连才能工作。

系统由一块 PCI总线驱动卡和一个实验台构成,实验台上有8251A、8255A、8253、DAC0832、ADC0809等芯片和小键盘、数码管、8MHz晶振等器件。实验台的结构如图1所示。

图1 TPC—1实验台主要部件分布图

为了实验方便,在每一部分实验电路附近都预留有单线信号插孔,实验时只要将相应插孔用单股导线相连即可。 2. 安装

安装时请按下述步骤进行。

(1) 用60芯扁平电缆线连接总线驱动卡和实验台。 (2) 连接实验台电源。

(3) 启动计算机。

(4) 打开实验台电源开关,实验台上的指示灯亮即可进行实验。

注意:在进行线路的连接过程中,必须关闭实验台的电源,在断电条件下进行操作,否则可能会引起实验台的损坏。

3. 实验台上的I/O地址

实验台上的I/O地址为200~23F共64个,分8个插孔引出,它们分别是200~207;208~20F;210~217;218~21F;220~227;228~22F;230~237;238~23F;实验时只要用导线将任一插孔信号引到相应电路的CS端即可。图2是I/O地址译码电路。

1

华北电力大学计算机科学与技术系

图2 I/O译码电路

4. 编写汇编程序时使用的I/O地址

因为PCI总线结构支持P&P即插即用功能,所以微机分配给PCI扩展板的资源也是动态浮动的,而不是固定不变的,因此分配给设备的I/O地址、内存储器MEM地址以及中断INT号会随着微机不同而有所变化,所以在实验前必须确定当前微机中PCI卡的资源分配,从而确定实验台上的实际I/O地址和内存储器MEM地址,并在程序中使用该地址。

操作步骤如下:

(1)打开“控制面板”中“系统”对话框,找到并打开“设备管理器”,可以看到“微机原理教学实验装置”,如图3所示。

(2)查看TPC的属性,如图4所示。可以看到两个输入/输出范围(具体数值不同计算机可能不同),其中一个范围大小是0FFH的是PCI接口芯片占用的I/O地址空间,另一个一个范围大小是07FH的是TPC设备占用的I/O地址空间;两个内存范围,一个范围大小是0FFH的是PCI接口芯片占用的内存储器MEM地址空间,另一个范围大小是0FFFFFH的是TPC设备占用的内存储器MEM地址空间。

它们的起始地址即为我们实际使用的基地址,图中PCI接口芯片I/O地址范围是D400~D4FF,基址为D400H;TPC设备的I/O地址范围是DC00~DC7F,基址为DC00H;TPC设备的内存储器MEM地址范围是FE900000~FE9FFFFF,基址为FE900000H。

在编写汇编程序时使用的实际I/O地址应该是:

实际I/O地址=TPC设备的I/O基地址-实验台I/O端口基地址+实验台I/O端口地址 =0DC00H-200H+实验台I/O端口地址

即地址0DC00H相当于实验台I/O端口的起始地址200H,如果实验台上的I/O端口地址是208H,则编程时实际使用的地址应该是:0DC00H-200H+208H=0DC08H

《计算机接口技术》实验指导 (第一版)

图3 设备管理器 图4 “TPC属性”对话框

同理,0FE900000H相当于实验台上扩展的存储器的起始地址。

如果程序中使用了中断,则需要根据TPC属性窗口中的中断请求号码来设置中断向量。 下面以实验6:8255A并行接口实验(4)为例,说明具体的编程地址应用。 实验程序如下:

PA55 EQU 0DC00H-200H+218H ;8255端口 PB55 EQU 0DC00H-200H+219H P55CTL EQU 0DC00H-200H+21BH DATA SEGMENT

MES DB 'ENTER ANY KEY CAN EXIT TO DOS!',0AH,0DH ;提示信息 DATA ENDS

STACKS SEGMENT DB 100 DUP (?) STACKS ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACKS START: MOV AX, DATA MOV DS, AX

MOV AX, STACKS MOV SS, AX

MOV DX, OFFSET MES ;显示提示信息 MOV AH, 09 INT 21H MOV AL, 90H MOV DX, P55CTL

3

华北电力大学计算机科学与技术系

OUT DX, AL ;8255初始化,PA方式0输入,PB方式0输出 NEXT: MOV DX, PA55 IN AL, DX ;从PA读入开关状态 MOV DX, PB55 OUT DX, AL ;将开关状态送到PB控制灯的亮灭 MOV AH, 01H INT 16H ;判断键盘是否有键按下,若有则退出程序 JNZ EXIT CALL DELAY JMP NEXT

EXIT: MOV AX, 4C00H INT 21H ;退出 DELAY PROC NEAR

PUSH CX ;延时子程序 MOV CX, 6000 DELAY1:LOOP DELAY1 POP CX RET DELAY ENDP CODE ENDS END START

根据实验要求完成接线,打开实验台电源,运行上面的程序就可以看到实验效果。

上面这个驱动程序只能适用于一台微机,因为在P&P方式下不同微机分配的资源不一定相同,为了达到通用的目的,使我们编写的驱动程序适用于任何一台微机,我们可以通过一个小程序FINDTPC来获得相关的资源信息,则可以将上面的程序修改如下:

IO_PLX_DEVICE_ID EQU 05406H ;TPC卡设备ID

IO_PLX_VENDOR_ID EQU 010B5H ;TPC卡厂商ID

IO_PLX_SUB_ID EQU 0905410B5H ;TPC卡子设备及厂商ID DATA SEGMENT

IO_BASE_ADDRESS DB 4 DUP(0) ;TPC卡I/O基地址暂存空间 PCICARDNOTFIND DB 0DH,0AH,'TPC card not find !!!',0DH,0AH,'$' MES DB 'ENTER ANY KEY CAN EXIT TO DOS!',0AH,0DH ;提示信息 PA55 DB 2 DUP(0) ;8255端口

PB55 DB 2 DUP(0) P55CTL DB 2 DUP(0)

DATA ENDS

STACKS SEGMENT DB 100 DUP (?) STACKS ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACKS START: .386

MOV AX, DATA

MOV DS, AX

MOV AX, STACKS

《计算机接口技术》实验指导 (第一版)

MOV SS, AX CALL FINDTPC ;查找TPC卡资源 MOV AX, WORD PTR IO_BASE_ADDRESS SUB AX, 200H ADD AX, 218H MOV WORD PTR PA55, AX

MOV AX, WORD PTR IO_BASE_ADDRESS

SUB AX, 200H ADD AX, 219H MOV WORD PTR PB55, AX

MOV AX, WORD PTR IO_BASE_ADDRESS

SUB AX, 200H ADD AX, 21BH MOV WORD PTR P55CTRL, AX MOV DX, OFFSET MES ;显示提示信息 MOV AH, 09 INT 21H MOV AL, 90H MOV DX, WORD PTR P55CTL OUT DX, AL ;8255初始化,PA方式0输入,PB方式0输出 NEXT: MOV DX, WORD PTR PA55 IN AL, DX ;从PA读入开关状态 MOV DX, WORD PTR PB55 OUT DX, AL ;将开关状态送到PB控制灯的亮灭 MOV AH, 01H INT 16H ;判断键盘是否有键按下,若有则退出程序 JNZ EXIT CALL DELAY JMP NEXT

EXIT: MOV AX, 4C00H INT 21H ;退出

FINDTPC PROC NEAR ;查找TPC卡资源 PUSHAD PUSHFD MOV AX, 0B101H INT 1AH

JC FINDTPC_NOTFIND ;检查PCI BIOS是否存在 MOV AX, 0B102H

MOV CX, IO_PLX_DEVICE_ID MOV DX, IO_PLX_VENDOR_ID MOV SI, 0 INT 1AH JC FINDTPC_NOTFIND ;检查TPC卡是否安装,设备号、厂商号MOV AX, 0B10AH

MOV DI, 02CH

5

华北电力大学计算机科学与技术系

INT 1AH

JC FINDTPC_NOTFIND

CMP ECX, IO_PLX_SUB_ID JNZ FINDTPC_NOTFIND ;检查TPC卡是否安装,子设备号、厂商号 MOV AX, 0B10AH MOV DI, 18H INT 1AH

JC FINDTPC_NOTFIND ;读TPC卡I/O基址信息 MOV DWORD PTR IO_BASE_ADDRESS, ECX AND ECX, 1

JZ FINDTPC_NOTFIND ;检查是否为i/o基址信息 MOV ECX, DWORD PTR IO_BASE_ADDRESS AND ECX, 0FFFFFFFEH

MOV DWORD PTR IO_BASE_ADDRESS, ECX ;去除i/o指示位并保存 POPFD POPAD RET

FINDTPC_NOTFIND:

MOV DX, OFFSET PCICARDNOTFIND ;显示未找到tpc卡提示信息 MOV AH, 09H INT 21H

MOV AX, 4C00H

INT 21H ;退出 FINDTPC ENDP

DELAY PROC NEAR

PUSH CX ;延时子程序 MOV CX, 6000 DELAY1:LOOP DELAY1 POP CX RET DELAY ENDP

CODE ENDS END START

《计算机接口技术》实验指导 (第一版)

实验2 8253计数器/定时器的实验(2)

1. 目的

(1)学会通过62芯PC/XT总线、驱动器、译码器等,在PC/XT机外连接扩展芯片。 (2)掌握8253定时器的编程原理,用示波器观察不同模式下的波形。 2. 内容

(1)用8253构成一个方波发生器或分频器,即基于图2-1再完成下述连接:

① 将分频器74LS393的B端与8MHz信号相连; ② 将分频器74LS393的A端接 +5V;

③ 将8253的 CLK0与8MHz分频得到的250KHz信号(74LS393的Q4端)相连; ④ 将8253的OUT0和CLK1相连; ⑤ 将8253的GATE0、GATEl 接+5V; ⑥ 将8253的CS插孔接200~207;

图2-1 8253的实验

(2)完成编程。将定时器0设为模式3(方波发生器),定时器1设为模式2(分频器),定时器0的输出脉冲作为定时器1的时钟输入。设置不同计数初值以改变方波宽度和分频信号周期,在示波器中,观察定时器0和 l的输出波形及其关系,并画出(CLK、GATE、OUT)波形。 3. 参考流程

图2-2 8253实验参考流程

7

华北电力大学计算机科学与技术系

实验6 8255A并行接口实验(4)

1. 目的

掌握8255A的编程原理。 2. 内容

用8255A的A端口读取8个开关量来控制B端口的8个LED发光二极管的亮和灭(端口输出为0则亮,输出为 l则灭)。实验台上有12个开关K1~K12,与之相应的12个引线孔为电平输出端。开关向上拔,电平输出为1;向下拨,电平输出为0。 (1)按图6-1连接硬件线路,即: ① 将 PA0~PA7与开关K1~K8相连;

② 将 PB0~PB7与发光二极管L1~L8相连; ③ CS与218~21F相连;

图6-1 读开关控制LED的原理图

+5V 8255 K1 PA0 PB0 ∶ ∶ ∶ ∶ PA7 PB7 CS A1 A0 +5V 地 218~21F A1 A0

(2)编程实现用开关控制发光二极管的亮灭。 3. 编程提示

(1)此实验比较简单,主要是要注意设置好8255A各端口的工作模式,实验中应当使3个端口均工作于方式0,并使A口为输入口和B口为输出口。

(2)参考流程 开始 Enter any key can exit to DOS!

显示提示信息

8255初始化 读PA开关状态 将开关状态送到PB控制灯的亮灭 N 有键按下 延时 Y 结束

图6-2 读开关控制LED的流程图

《计算机接口技术》实验指导 (第一版)

实验9 8251A串行口实验(1)

1. 目的

(1)了解串行通信的一般原理和8251A的工作原理。 (2)掌握8251A的编程方法。 2. 内容

采用自发自收方式,通过8251A将主机键盘输入字符串行发送出去,再将串行接收到的字符显示在主机屏幕上,发送和接收时钟信号由8253提供。

(1)如图9-1连接线路,即:

① 将分频器74LS393的B端与8MHz信号相连; ② 将分频器74LS393的A端接 +5V;

③ 将8253的 CLK2与8MHz分频得到的250KHz信号(74LS393的Q4端)相连; ④ 8253的GATE2接+5V;

⑤ 8253的OUT2与8251的TXC、RXC相连,作为发送和接收时钟,波特率自定; ⑥ 8253的CLK2和250KHz(74LS393的Q4)相连;

⑦ RXRDY和 PC总线的 IRQ2(或B4)相连,由此端向PC主机发中断请求; ⑧ 8253的CS和200~207插孔相连,8251A的CS和208~20F插孔相连; ⑨ 将8251A的TXD与RXD端连接,形成自发自收;

(2)编写程序,将主机键盘输入字符从8251A串行发送出去,再将8251A串行接收到的字符显示在主机屏幕上。串行通信波特率可选1200BPS、4800BPS;发送数据用查询方式;接收数据用查询方式或中断方式。

图9-1显示键入字符的线路

3. 编程提示 (1)将8253计数器2构成一个方波发生器,提供8251A接收和发送时钟信号。 (2)发送、接收字符均采用查询方式。 计数器初值计算公式:

计数器2初值=FDK2/(BPS*波特率因子); FDK2为8253计数器2的时钟频率;

BPS为8251A和终端之间数据传送的波特率; 波特率因子在825lA初始化时通过编程确定。

9

华北电力大学计算机科学与技术系

(3)8251A数据口地址 208H 控制口地址 209H

8253定时器2地址 202H

控制口地址 203H

(4)参考流程见图7-2和7-3。

开始 8253初始化 8251A初始化 显示提示信息:请键入字符,’$’结束 读键入的字符存BL 读8251A状态字 N TXRDY=1? Y 从8251A数据口发送BL中字符 读8251A状态字 N RXRDY=1? Y 从8251A数据口读入接收的字符 将该字符显示在屏幕上 N 该字符=’$’? Y 返回DOS 图9-2 查询方式自发自收的程序参考流程

图9-3 中断方式接收的中断处理程序参考流程

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

Top