接口实验.docx
《接口实验.docx》由会员分享,可在线阅读,更多相关《接口实验.docx(24页珍藏版)》请在冰豆网上搜索。
![接口实验.docx](https://file1.bdocx.com/fileroot1/2023-1/31/1e9c3365-b2b1-4d02-ad7f-6a997d87954b/1e9c3365-b2b1-4d02-ad7f-6a997d87954b1.gif)
接口实验
计算机09级微机接口实验报告
班级:
09065801
学号:
0906840534
姓名:
温泉
实验一汇编语言程序设计实验
一、实验目的
熟悉汇编语言程序设计及TD-PITE80X86实验环境的使用。
二、实验设备
PC机一台,TD-PITE实验装置或TD-PITC实验装置一套。
三、实验内容
2.在数据段的3000H开始的存储单元中写入“0-9”的ASCII码值,将它们传送到同一段的4000H开始的存储单元中。
四、实验步骤
(1)完成汇编程序格式,编写实验程序。
(2)编译、链接无误后装入系统。
(3)先运行程序,待程序运行停止。
(4)通过键入D命令查看程序运行的结果。
(5)可以反复测试几组数据,观察结果,验证程序的正确性。
五、实验代码
STACKSSEGMENTSTACK;堆栈段
DW128DUP(?
);注意这里只有128个字节
STACKSENDS
DATASSEGMENT;数据段
BUFFERDB'0','1','2','3','4','5''6','7','8','9'
DATASENDS
CODESSEGMENT;代码段
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS;初始化
MOVDS,AX
MOVES,AX
MOVSI,3000H
MOVCX,10
MOVDI,0
TEMP:
MOVAL,BUFFER[DI]
INCDI
MOV[SI],AL
INCSI
LOOPTEMP
MOVSI,3000H
MOVDI,4000H
MOVCX,10
REPMOVSB
MOVAX,4C00H;退出程序
INT21H
CODESENDS
ENDSTART
实验二8259中断控制实验
一、实验目的
1.掌握8259中断控制器的工作原理。
2.学习8259的应用编程方法。
3.掌握8259级联方式的使用方法。
二、实验设备
PC机一台,TD-PITE实验装置或TD-PITC实验装置一套。
三、实验内容及步骤
1.中断控制器8259简介
在Intel386EX芯片中集成有中断控制单元(ICU),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。
该中断控制单元就功能而言与工业上标准的82C59A是一致的,操作方法也相同。
从片的INT连接到主片的IR2信号上构成两片8259的级联。
在TD-PITE实验系统中,将主控制器的IR6、IR7以及从控制器的IR1开放出来供实验使用,主片8259的IR4供系统串口使用。
8259的内部连接及外部管脚引出如图2.1:
图2。
18259内部连续及外部管脚引出图
表2.1列出了中断控制单元的寄存器相关信息。
表2.1ICU寄存器列表
寄存器
口地址
功能描述
ICW1(主)
ICW1(从)
(只写)
0020H
00A0H
初始化命令字1:
决定中断请求信号为电平触发还是边沿触发。
ICW2(主)
ICW2(从)
(只写)
0021H
00A1H
初始化命令字2:
包含了8259的基址中断向量号,基址中断向量是IR0的向量号,基址加1就是IR1的向量号,依此类推。
ICW3(主)
(只写)
0021H
初始化命令字3:
用于识别从8259设备连接到主控制器的IR信号,内部的从8259连接到主8259的IR2信号上。
ICW3(从)
(只写)
00A1H
初始化命令字3:
表明内部从控制器级联到主片的IR2信号上。
ICW4(主)
ICW4(从)
(只写)
0021H
00A1H
初始化命令字4:
选择特殊全嵌套或全嵌套模式,使能中断自动结束方式。
OCW1(主)
OCW1(从)
(读/写)
0021H
00A1H
操作命令字1:
中断屏蔽操作寄存器,可屏蔽相应的中断信号。
OCW2(主)
OCW2(从)
(只写)
0020H
00A0H
操作命令字2:
改变中断优先级和发送中断结束命令。
OCW3(主)
OCW3(从)
(只写)
0020H
00A0H
操作命令字3:
使能特殊屏蔽方式,设置中断查询方式,允许读出中断请求寄存器和当前中断服务寄存器。
IRR(主)
IRR(从)
(只读)
0020H
00A0H
中断请求:
指出挂起的中断请求。
ISR(主)
ISR(从)
(只读)
0020H
00A0H
当前中断服务:
指出当前正在被服务的中断请求。
POLL(主)
POLL(从)
(只读)
0020H
0021H
00A0H
00A1H
查询状态字:
表明连接到8259上的设备是否需要服务,如果有中断请求,该字表明当前优先级最高的中断请求。
初始化命令字1寄存器(ICW1)说明见图2.2所示。
图2.2初始化命令字1寄存器
初始化命令字2寄存器(ICW2)说明见图2.3所示。
图2.3初始化命令字2寄存器
初始化命令字3寄存器(ICW3)说明,主片见图2.4,从片见图2.5。
图2.4主片初始化命令字3寄存器
图2.5从片初始化命令字3寄存器
初始化命令字4寄存器(ICW4)说明见图2.6。
图2.6初始化命令字4寄存器
操作命令字1寄存器(OCW1)说明见图2.7。
图2.7操作命令字1寄存器
操作命令字2寄存器(OCW2)说明如图2.8所示。
图2.8操作命令字2寄存器
操作命令字3寄存器(OCW3)说明如图2.9所示。
图2.9操作命令字3寄存器
查询状态字(POLL)说明如图2.10所示。
图2.10程序状态字寄存器
在对8259进行编程时,首先必须进行初始化。
一般先使用CLI指令将所有的可屏蔽中断禁止,然后写入初始化命令字。
8259有一个状态机控制对寄存器的访问,不正确的初始化顺序会造成异常初始化。
在初始化主片8259时,写入初始化命令字的顺序是:
ICW1、ICW2、ICW3、然后是ICW4,初始化从片8259的顺序与初始化主片8259的顺序是相同的。
系统启动时,主片8259已被初始化,且4号中断源(IR4)提供给与PC联机的串口通信使用,其它中断源被屏蔽。
中断矢量地址与中断号之间的关系如下表所示:
主片中断序号
0
1
2
3
4
5
6
7
功能调用
08H
09H
0AH
0BH
0CH
0DH
0EH
0FH
矢量地址
20H~23H
24H~27H
28H~2BH
2CH~2FH
30H~33H
34H~37H
38H~3BH
3CH~3FH
说明
未开放
未开放
未开放
未开放
串口
未开放
可用
可用
从片中断序号
0
1
2
3
4
5
6
7
功能调用
30H
31H
32H
33H
34H
35H
36H
37H
矢量地址
C0H~C3H
C4H~C7H
C8H~CBH
CCH~CFH
D0H~D3H
D4H~D7H
D8H~DBH
DCH~DFH
说明
未开放
可用
未开放
未开放
未开放
未开放
未开放
未开放
2.8259单中断实验
实验接线图如图2.11所示,单次脉冲输出与主片8259的IR7相连,每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7”。
2.118259单中断实验接线图
实验程序示例
SSTACKSEGMENTSTACK
DW32DUP(?
)
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
PUSHDS
MOVAX,0000H
MOVDS,AX;取中断入口地址
;中断矢量地址
……;填IRQ7的偏移矢量
;段地址
;填IRQ7的段地址矢量
CLI
POPDS
……;初始化主片8259
STI
AA1:
NOP
JMPAA1
MIR7:
STI
CALLDELAY
……;有中断就在屏幕显示一个字符
IRET
CODEENDS
ENDSTART
实验步骤
(1)按图2.11连接实验线路。
(2)编写实验程序,经编译、链接无误后装入系统。
(3)运行程序,重复按单次脉冲开关KK1+,显示屏会显示字符相应字符,说明响应了中断。
四、实验代码
SSTACKSEGMENTSTACK
DW32DUP(?
)
SSTACKENDS
DATASEGMENT
SDB'H','e','l','l','o','W','o','r','l','d','!
',0DH,'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
PUSHDS
MOVAX,0000H
MOVDS,AX
MOVBX,38H;获取中断入口地址
MOVAX,OFFSETMIR7;中断适量地址
MOV[BX],AX;填IRQ7偏移
MOVAX,SEGMIR7;段地址
INCBX
INCBX
MOV[BX],AX;段地址矢量
POPDS
CLI
MOVDX,20H;初始化8259A
MOVAL,11H
OUTDX,AL;ICW1
MOVAL,08H
MOVDX,21H
OUTDX,AL;ICW2
MOVAL,04H
OUTDX,AL;ICW3
MOVAL,01H
OUTDX,AL;ICW4
MOVDX,21H
MOVAL,0BFH;OCW1
STI
AA1:
NOP
JMPAA1
MIR7:
;显示所定义的字符串
MOVDX,OFFSETS
MOVAH,09H
INT21H
MOVDX,20H
MOVAL,20H
OUTDX,AL
IRET
CODEENDS
ENDSTART
实验三8254定时/计数器应用实验
一、实验目的
1.掌握8254的工作方式及应用编程。
2.掌握8254典型应用电路的接法。
二、实验设备
PC机一台,TD-PITE实验装置或TD-PITC实验装置一套,示波器一台。
三、实验内容
计数应用实验。
编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动‘KK1+’N次后,产生一次计数中断,并在屏幕上显示一个字符。
四、实验原理
8254是Intel公司生产的可编程间隔定时器。
是8253的改进型,比8253具有更优良的性能。
8254具有以下基本功能:
(1)有3个独立的16位计数器。
(2)每个计数器可按二进制或十进制(BCD)计数。
(3)每个计数器可编程工作于6种不同工作方式。
(4)8254每个计数器允许的最高计数频率为10MHz(8253为2MHz)。
(5)8254有读回命令(8253没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。
(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。
计数初值公式为:
n=fCLKi÷fOUTi、其中fCLKi是输入时钟脉冲的频率,fOUTi是输出波形的频率。
图3.1是8254的内部结构框图和引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。
8254的工作方式如下述:
(1)方式0:
计数到0结束输出正跃变信号方式。
(2)方式1:
硬件可重触发单稳方式。
(3)方式2:
频率发生器方式。
(4)方式3:
方波发生器。
(5)方式4:
软件触发选通方式。
(6)方式5:
硬件触发选通方式。
图3.18254的内部接口和引脚
8254的控制字有两个:
一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。
这两个控制字共用一个地址,由标识位来区分。
控制字格式如表3.1—3.3所示。
表3.18254的方式控制字格式
D7
D6
D5
D4
D3
D2
D1
D0
计数器选择
读/写格式选择
工作方式选择
计数码制选择
00-计数器0
01-计数器1
10-计数器2
11-读出控制
字标志
00-锁存计数值
01-读/写低8位
10-读/写高8位
11-先读/写低8位
再读/写高8位
000-方式0
001-方式1
010-方式2
011-方式3
100-方式4
101-方式5
0-二进制数
1-十进制数
表3.28254读出控制字格式
D7
D6
D5
D4
D3
D2
D1
D0
1
1
0-锁存计数值
0-锁存状态信息
计数器选择(同方式控制字)
0
表3.38254状态字格式
D7
D6
D5
D4
D3
D2
D1
D0
OUT引脚现行状态
1-高电平
0-低电平
计数初值是否装入
1-无效计数
0-计数有效
计数器方式(同方式控制字)
8254实验单元电路图如下图所示:
图3.28254实验电路原理图
五、实验步骤
1.计数应用实验
编写程序,将8254的计数器0设置为方式3,计数值为十进制数4,用单次脉冲KK1+作为CLK0时钟,OUT0连接MIR7,每当KK1+按动5次后产生中断请求,在屏幕上显示字符。
实验步骤:
1.实验接线如图3.3所示。
2.编写实验程序,经编译、链接无误后装入系统。
3.运行程序,按动KK1+产生单次脉冲,观察实验现象。
4.改变计数值,验证8254的计数功能。
图3.38254计数应用实验接线图
实验程序示例
A8254EQU06C0H
B8254EQU06C2H
C8254EQU06C4H
CON8254EQU06C6H
SSTACKSEGMENTSTACK
DW32DUP(?
)
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
SSTACK
START:
;8259
……
;中断8259初始化
;8254
……;计数器8254初始化
STI
AA1:
JMPAA1
IRQ7:
……;中断服务程序
IRET
CODEENDS
ENDSTART
六、实验代码
;========================================================
;文件名:
TIMER.ASM
;功能描述:
8254计数器,按动KK1+5次后产生中断请求,在屏幕上显示字符
;========================================================
SSTACKSEGMENTSTACK
DW64DUP(?
)
SSTACKENDS
DATASEGMENT
STRINGDB'ILNUDT','$'
LEN=$-STRING
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX;初始化
;INITIAL8259A
PUSHDS
MOVAX,0000H
MOVDS,AX
MOVAX,OFFSETMIR6
MOVBX,38H
MOV[BX],AX
MOVBX,3AH
MOVAX,SEGMIR6
MOV[BX],AX
NOP
NOP
;VECTOR
POPDS
MOVSI,OFFSETSTRING
MOVAL,11H
MOVDX,20H
OUTDX,AL
INCDX
MOVAL,08H
OUTDX,AL
MOVAL,04H
OUTDX,AL
MOVAL,01H
OUTDX,AL
;INITIAL8254
MOVDX,646H;CONTROL
MOVAL,50H
OUTDX,AL
MOVDX,642H;1
MOVAL,5;计数5次
OUTDX,AL
NOP
NOP
MOVBX,0
AA1:
JMPAA1
MIR6:
MOVDL,[SI]
MOVAH,02H
INT21H
INCSI
INCBX
MOVCX,12
CMPBX,CX
JZB
JMPC
B:
MOVSI,OFFSETSTRING
MOVBX,0
C:
MOVDX,642H;1
MOVAL,5
OUTDX,AL
NOP
MOVDX,20H
MOVAL,20H
OUTDX,AL
IRET
MOVAX,4C00H
INT21H;程序终止
CODEENDS
ENDSTART
实验四8255并行接口实验
一、实验目的
1.学习并掌握8255的工作方式及其应用。
2.掌握8255典型应用电路的接法。
二、实验设备
PC机一台,TD-PITE实验装置或TD-PITC实验装置一套。
三、实验内容
1.基本输入输出实验。
编写程序,使8255的A口为输入,B口为输出,完成拨动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就发生相应改变。
2.流水灯显示实验。
编写程序,使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。
3.驱动数码管显示字符”0-9”。
编写程序,选择一个或多个数码管来显示0到9十个数字字符。
四、实验原理
图4.18255内部结构及外部引脚图
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:
方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图4.1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图4.2所示。
图4.28255控制字格式
8255实验单元电路图如图4.3所示:
图4.38255实验单元电路图
五、实验步骤
1.基本输入输出实验
本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。
用一组开关信号接入端口A,端口B输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。
具体实验步骤如下述:
(1)实验接线图如图4.34所示,按图连接实验线路图。
(2)编写实验程序,经编译、连接无误后装入系统。
(3)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。
图4.48255基本输入输出实验接线图
2.流水灯显示实验
使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。
实验接线图如图4.5所示。
实验步骤如下所述:
(1)按图4.5连接实验线路图。
(2)编写实验程序,经编译、链接无误后装入系统。
(3)运行程序,观察LED灯的显示,验证程序功能。
(4)自己改变流水灯的方式,编写程序。
图4.58255流水灯实验接线图
3.驱动数码管显示“0-5”
(1)根据要求,自行连接实验线路图。
(2)编写实验程序,经编译、链接无误后装入系统。
(3)运行程序,观察数码管的显示,验证程序功能。
(4)改变数码管的显示方式,编写程序。
六、实验代码
SSTACKSEGMENTSTACK
DW64DUP(?
)
SSTACKENDS
DATASEGMENT
SDB3FH,06H,5BH,4FH,66H,6DH;0、1、2、3、4、5的字型码
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
;INITIAL
MOVDX,646H;CONTROL
MOVAL,80H;AOUT,B,OUTA、B口输出的方式
OUTDX,AL
MOVDX,640H
NOP
MOVAL,00H
OUTDX,AL
MOVDX,642H
MOVAL,0FEH
OUTDX,AL
MOVDX,640H;A口
B:
MOVCX,6;0、1、2、3、4、5共循环显示6次
MOVSI,OFFSETS
A:
MOVAL,[SI]
MOVDX,640H
OUTDX,AL
INCSI;显示下一个字形
CALLDELAY
CALLDELAY
CALLDELAY
CALLDELAY
CALLDELAY
LOOPA
JMPB;一直循环显示
MOVAL,00H
MOVAX,4C00H
INT21H;程序终止
DELAYPROC;供调用的延时子程序
PUSHCX
MOVCX,0FFFFH
M:
NOP
LOOPM
POPCX
RET
DELAYENDP
CODEENDS
ENDSTART