微机原理实验报告

  |  

文章导航

大三上微机原理课程实验报告

1.8259中断控制实验

1.1实验目的

1.掌握8259中断控制器的工作原理;

2.学习8259的应用编程方法;

3.掌握8259级联方式的使用方法。

1.2实验设备

PC机一台,TD-PITE实验装置- -套。

1.3实验内容及步骤

1.中断控制器8259简介

在Intel 386EX芯片中集成有中断控制单元(ICU) ,该单元包含有两个级联中断控制器,一个

为主控制器,一个为从控制器。该中断控制单元就功能而言与工业上标准的82C59A是一致的,操作方法也相同。从片的INT连接到主片的IR2信号上构成两片8259的级联。

在TD-PITE实验系统中,将主控制器的IR6、IR7以及从控制器的IR1开放出来供实验使用,

主片8259的IR4供系统串口使用。8259的内部连接及外部管脚引出如图2-3-1所示。

表2-3-1列出了中断控制单元的寄存器相关信息。

初始化命令字1寄存器(ICW1) 说明见图2-3-2所示。

初始化命令字2寄存器(ICW2)说明见图2-3-3所示。

初始化命令字3寄存器(ICW3) 说明,主片见图2-3-4,从片见图2-3-5。

初始化命令字4寄存器(ICW4) 说明见图2-3-6。

操作命令字1寄存器(OCW1) 说明见图2-3-7。

操作命令字2寄存器(OCW2) 说明如图2-3-8所示。

操作命令字3寄存器(OCW3) 说明如图2-3-9所示。

查询状态字(POLL) 说明如图2-3-10 所示。

在对8259进行编程时,首先必须进行初始化。一般先使用CLI指令将所有的可屏蔽中断禁止,然后写入初始化命令字。8259有--个状态机控制对寄存器的访问,不正确的初始化顺序会造成异常初始化。在初始化主片8259时,写入初始化命令字的顺序是: ICW1、 ICW2、ICW3、 然后是ICW4,初始化从片8259的顺序与初始化主片8259的顺序是相同的。

系统启动时,主片8259已被初始化,且4号中断源(IR4) 提供给与PC联机的串口通信使用,其它中断源被屏蔽。

2.8259单中断实验

实验接线图如图2-3-1 1所示,单次脉冲输出与主片8259的IR7相连,每按动一次单次脉冲,产生一次外部中断,在显示屏.上输出一个字符“7”

实验步骤

(1)按图2-3-11 连接实验线路;

(2)编写实验程序,经编译、链接无误后装入系统;

(3)运行程序,重复按单次脉冲开关KK1 +,显示屏会显示字符“7” 以说明响应了中断。

源程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
;=========================================================
; 文件名: INT1.ASM
; 功能描述: 8259中断实验,中断源为主片8259的IRQ7
; 每产生一次中断输出显示一个字符6
;=========================================================

SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS

CODE SEGMENT
ASSUME CS:CODE
START: PUSH DS
MOV AX, 0000H
MOV DS, AX
MOV AX, OFFSET MIR7 ;取中断入口地址
MOV SI, 003CH ;中断矢量地址
MOV [SI], AX ;填IRQ7的偏移矢量
MOV AX, CS ;段地址
MOV SI, 003EH
MOV [SI], AX ;填IRQ7的段地址矢量
CLI
POP DS
;初始化主片8259
MOV AL, 11H
OUT 20H, AL ;ICW1
MOV AL, 08H
OUT 21H, AL ;ICW2
MOV AL, 04H
OUT 21H, AL ;ICW3
MOV AL, 01H
OUT 21H, AL ;ICW4
;初始化从片8259
;MOV AL,11H
;OUT 0A0H,AL
;MOV AL,30H
;OUT 0A1H,AL
;MOV AL,02H
;OUT 0A1H,AL
;MOV AL,01H
;OUT 0A1H,AL
;MOV AL,0FFH
;OUT 0A1H,AL

MOV AL, 6FH ;OCW1
OUT 21H, AL
STI
AA1: NOP
JMP AA1

MIR7: STI
CALL DELAY
MOV AX, 0136H
INT 10H ;显示字符
MOV AX, 0120H
INT 10H
MOV AL, 20H
OUT 20H, AL ;中断结束命令
IRET

DELAY: PUSH CX
MOV CX, 0F00H
AA0: PUSH AX
POP AX
LOOP AA0
POP CX
RET

CODE ENDS
END START

结果拍照

按动一次按钮显示一个6

PS:将“7”改为了“6”。

3.8259级联实验

实验接线图如图2-3-12所示,KK1 +连接到主片8259的IR7. 上, KK2+连接到从片8259的IR1上,当按一-次KK1 +时,显示屏上显示字符“M7”,按- -次KK2+时,显示字符“S1”。编写程序。

实验步骤

(1)按图2-3-12 连接实验线路;

(2)输入程序,编译、链接无误后装入系统;

(3)运行程序,按动KK1+或KK2+,观察实验结果,验证实验程序的正确性;

(4)若同时按下FKK1 +和KK2+,观察实验结果,解释实验现象。.

源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
;=========================================================
; 文件名: INTcas1.ASM
; 功能描述: 8259级联中断实验,中断源为主片8259的IR7,
; 从片8259的IR1。从片8259通过主片8259的IR2
; 进行级联。
; 主片每产生一次中断输出显示一个字符M7,从片
; 每产生一次中断输出显示一个字符S1。
;=========================================================

SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS

CODE SEGMENT
ASSUME CS:CODE
START: PUSH DS
MOV AX, 0000H
MOV DS, AX
MOV AX, OFFSET MIR7 ;取中断入口地址
MOV SI, 003CH ;中断矢量地址
MOV [SI], AX ;填IRQ7的偏移矢量
MOV AX, CS ;段地址
MOV SI, 003EH
MOV [SI], AX ;填IRQ7的段地址矢量

MOV AX, OFFSET SIR1
MOV SI, 00C4H
MOV [SI], AX
MOV AX, CS
MOV SI, 00C6H
MOV [SI], AX

CLI
POP DS
;初始化主片8259
MOV AL, 11H
OUT 20H, AL ;ICW1
MOV AL, 08H
OUT 21H, AL ;ICW2
MOV AL, 04H
OUT 21H, AL ;ICW3
MOV AL, 01H
OUT 21H, AL ;ICW4
;初始化从片8259
MOV AL, 11H
OUT 0A0H, AL ;ICW1
MOV AL, 30H
OUT 0A1H, AL ;ICW2
MOV AL, 02H
OUT 0A1H, AL ;ICW3
MOV AL, 01H
OUT 0A1H, AL ;ICW4
MOV AL, 0FDH
OUT 0A1H,AL ;OCW1 = 1111 1101

MOV AL, 6BH
OUT 21H, AL ;主8259 OCW1
STI
AA1: NOP
JMP AA1

MIR7: CALL DELAY
MOV AX, 014DH
INT 10H ;M
MOV AX, 0137H
INT 10H ;显示字符7
MOV AX, 0120H
INT 10H
MOV AL, 20H
OUT 20H, AL ;中断结束命令
IRET

SIR1: CALL DELAY
MOV AX, 0153H
INT 10H ;S
MOV AX, 0131H
INT 10H ;显示字符1
MOV AX, 0120H
INT 10H
MOV AL, 20H
OUT 0A0H, AL
OUT 20H, AL
IRET

DELAY: PUSH CX
MOV CX, 0F00H
AA0: PUSH AX
POP AX
LOOP AA0
POP CX
RET

CODE ENDS
END START

结果拍照

(1) 重复按单次脉冲开关KK1+,显示屏会显示字符“M7”

(2) 当按一次KK1+时,显示屏上显示字符“M7”,按一次KK2+时,显示字符“S1”

(3) 同时按下KK1+和KK2+,程序仅响应主片的中断。这是由于程序中写的控制字ICW4=0A1H,对应的嵌套模式处为0,选择全嵌套模式。全嵌套模式下当接受到同级的中断请求时,不会响应从片的中断请求。

2.8254定时/计数器应用实验

2.1实验目的

1.掌握8254的工作方式及应用编程;

2.掌握8254典型应用电路的接法。

2.2实验设备

PC机一台,TD-PITE 实验装置一套,示波器一台。

2.3实验内容

1.计数应用实验。编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动'KK 1+’5次后,产生一次计数中断,并在屏幕上显示一个字符‘M'。

2.定时应用实验。编写程序,应用8254的定时功能,产生一个1ms 的方波。

2.4实验原理

8254是Intel 公司生产的可编程间隔定时器。是8253 的改进型,比8253具有更优良的性能。8254具有以下基本功能:

(1)有3个独立的16位计数器;

(2)每个计数器可按二进制或十进制(BCD) 计数;

(3)每个计数器可编程工作于6种不同工作方式; .

(4)8254每个计数器允许的最高计数频率为10MHz(8253为2MHz);

  1. 8254 有读回命令(8253 没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容;

(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为:n=fclki/ fouti.其中fclki是输入时钟脉冲的频率,fouti是输出波形的频率。图2-5-1是8254的内部结构框图和引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。8254的工作方式如下述:

(1)方式0:计数到0结束输出正跃变信号方式。

(2)方式1:硬件可重触发单稳方式。

(3)方式2:频率发生器方式。

(4)方式3:方波发生器。

(5)方式4:软件触发选通方式。

(6)方式5:硬件触发选通方式。

8254的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用-一个地址,由标识位来区分。控制字格式如表2-5-1所示。

2.5实验步骤

1.计数应用实验

编写程序,将8254的计数器0设置为方式3,计数值为十进制数4,用单次脉冲KK1 +作为CLK0时钟,OUTO连接MIR7,每当KK1 +按动5次后产生中断请求,在屏幕上显示字符“M”。

实验步骤:

(1)实验接线如图2-5-2所示;

(2)编写实验程序,经编译、链接无误后装入系统;

(3)运行程序,按动KK1+产生单次脉冲,观察实验现象;

(4)改变计数值,验证8254的计数功能。

源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
;=========================================================
; 文件名: A82541.ASM
; 功能描述: 通过对计数器0进行计数,计数初值为4,
; 当计数满后,产生正跳变触发中断,中断
; 程序显示M(每按5次输出一个M)
;=========================================================

A8254 EQU 06C0H
B8254 EQU 06C2H
C8254 EQU 06C4H
CON8254 EQU 06C6H

SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS

CODE SEGMENT
ASSUME CS:CODE, SS:SSTACK
START: PUSH DS
MOV AX, 0000H
MOV DS, AX
MOV AX, OFFSET IRQ7 ;取中断入口地址
MOV SI, 003CH ;中断矢量地址
MOV [SI], AX ;填IRQ7的偏移矢量
MOV AX, CS ;段地址
MOV SI, 003EH
MOV [SI], AX ;填IRQ7的段地址矢量
CLI
POP DS
;初始化主片8259
MOV AL, 11H
OUT 20H, AL ;ICW1
MOV AL, 08H
OUT 21H, AL ;ICW2
MOV AL, 04H
OUT 21H, AL ;ICW3
MOV AL, 01H
OUT 21H, AL ;ICW4

MOV AL, 6FH ;OCW1
OUT 21H, AL

;8254
MOV DX, CON8254
MOV AL, 10H ;计数器0,方式0
OUT DX, AL

MOV DX, A8254
MOV AL, 04H
OUT DX, AL

STI
AA1: NOP
JMP AA1

IRQ7: MOV DX, A8254
MOV AL, 04H
OUT DX, AL
MOV AX, 014DH
INT 10H ;显示字符M
MOV AX, 0120H
INT 10H
MOV AL, 20H
OUT 20H, AL ;中断结束命令
IRET

CODE ENDS
END START

结果拍照

按动一次按钮显示一个M。

2.定时应用实验

编写程序,将8254的计数器0设置为方式3,用信号源1MHz作为CLK0时钟, OUT0为波形输出1ms方波。

实验步骤:

(1)接线图如图2-5-3所示;

(2)根据实验内容,编写实验程序,经编译、链接无误后装入系统;

(3)运行实验程序,用示波器测试OUTO输出,验证程序功能。

按照图接线,将实验程序编译、链接、装入系统,运行程序,OUT0输出方波。根据8254工作原理绘制波形图如图:

8254方波

3.8255并行接口实验

3.1实验目的

1.学习并掌握8255的工作方式及其应用;

2.掌握8255典型应用电路的接法。

3.2实验设备

PC机一台,TD-PITE实验装置一套。

3.3实验内容

1.基本输入输出实验。编写程序,使8255 的A口为输入,B口为输出,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就发生相应改变。

2.流水灯显示实验。编写程序,使8255的A口和B口均为输出,数据灯D7D0由左向右,每次仅亮-一个灯,循环显示,D15D8与D7~D0正相反,由右向左,每次仅点亮-一个灯,循环显示。

3.4实验原理

并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。8255 可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。8255的内部结构及引脚如图2-6-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图2-6-2所示。.

3.5实验步骤

1.基本输入输出实验

本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。用一组开关信号接入端口A,端口B输出线接至- -组数据灯上,然后通过对8255芯片编程来实现输入输出功能。具体实验步骤如下述:

(1)实验接线图如图2-6-3所示,按图连接实验线路图;

(2)编写实验程序,经编译、连接无误后装入系统;

(3)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。

源程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
;=========================================================
; 文件名: A82551.ASM
; 功能描述: A口为输入,B口为输出,将读入的数据输出显示
; IOY1
;=========================================================

SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS

CODE SEGMENT
ASSUME CS:CODE, SS:SSTACK
START: MOV DX, 0646H
MOV AL, 90H
OUT DX, AL

AA1: MOV DX, 0640H
IN AL, DX

CALL DELAY
MOV DX, 0642H
OUT DX, AL
JMP AA1

DELAY: PUSH CX
MOV CX, 0F00H
AA2: PUSH AX
POP AX
LOOP AA2
POP CX
RET

CODE ENDS
END START

结果拍照

流水灯按照开关的开闭被选择点亮。

2.流水灯显示实验

使8255的A口和B口均为输出,数据灯D7D0由左向右,每次仅亮一个灯,循环显示,D15D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。实验接线图如图2-6-5所示。实验步骤如下所述:

(1)按图2-6-5连接实验线路图;

(2)编写实验程序,经编译、链接无误后装入系统;

(3)运行程序,观察LED灯的显示,验证程序功能;

(4)自己改变流水灯的方式,编写程序。.

源程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
;=========================================================
; 文件名: A82552.ASM
; 功能描述: A口为输出,B口为输出,流水灯显示
;=========================================================

SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS

CODE SEGMENT
ASSUME CS:CODE
START: MOV DX, 0646H
MOV AL, 80H
OUT DX, AL
MOV BX, 8001H
AA1: MOV DX, 0640H
MOV AL, BH
OUT DX, AL
ROR BH, 1

MOV DX, 0642H
MOV AL, BL
OUT DX, AL
ROL BL, 1

CALL DELAY
CALL DELAY
JMP AA1

DELAY: PUSH CX
MOV CX, 0F000H
AA2: PUSH AX
POP AX
LOOP AA2
POP CX
RET

CODE ENDS
END START

结果拍照

流水灯依次被点亮。

本站总访问量 您是第位访客