当前位置:首页 >> 工学 >>

合肥工业大学电气与自动化专业实验中心 80X86微机原理及接口技术实验教程 思考题部分参考答案(5)


硬件实验
2.1 2.4 静态存储器扩展实验 8255 并行接口实验 8253 方波实验

实验四

实验五(2)

8259A 中断控制器实验

2.3 8254 定时/计数器应用实验

2.1
2.1.1 实验目的

静态存储器扩展实验

1. 了解存储器扩展的方法和存储器的读/写。 2. 掌握 CPU 对 16 位存储器的访问方法。

2.1.2

实验设备

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

2.1.3

实验内容

编写实验程序,将 0000H~000FH 共 16 个数写入 SRAM 的从 0000H 起始的一段 空间中,然后通过系统命令查看该存储空间,检测写入数据是否正确。

2.1.4

实验原理
A14 A12 A7 A6 A5 A4 A3 A2 A1 A0 D0 D1 D2 GND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 28 27 26 25 24 23 22 21 20 19 18 17 16 15 VCC WE A13 A8 A9 A11 OE A10 CS D7 D6 D5 D4 D3

存储器是用来存储信息的部件,是计算机的重要组成部分, 静态 RAM 是由 MOS 管组成的触发器电路, 每个触发器可以存 放 1 位信息。只要不掉电,所储存的信息就不会丢失。因此, 静态 RAM 工作稳定,不要外加刷新电路,使用方便。但一般
图 2.1 62256 引脚图

62256

SRAM 的每一个触发器是由 6 个晶体管组成,SRAM 芯片的集成度不会太高,目前较常用 的有 6116(2K×8 位) ,6264(8K×8 位)和 62256(32K×8 位) 。本实验平台上选用 的是 62256,两片组成 32K×16 位的形式,共 64K 字节。62256 的外部引脚图如图 4.1 所示。 本系统采用准 32 位 CPU,具有 16 位外部数据总线,即 D0、D1、…、D15,地址总 线为 BHE#(#表示该信号低电平有效) 、BLE#、A1、A2、…、A20。存储器分为奇体 和偶体,分别由字节允许线 BHE#和 BLE#选通。 存储器中,从偶地址开始存放的字称为规则字,从奇地址开始存放的字称为非规则字。 处理器访问规则字只需要一个时钟周期,BHE#和 BLE#同时有效,从而同时选通存储器 奇体和偶体。处理器访问非规则字却需要两个时钟周期,第一个时钟周期 BHE#有效,访 问奇字节;第二个时钟周期 BLE#有效,访问偶字节。处理器访问字节只需要一个时钟周 期,视其存放单元为奇或偶,而 BHE#或 BLE#有效,从而选通奇体或偶体。写规则字和 非规则字的简单时序图如图 2.2 所示。
CS# WR# DATA
D15:D0

CS# WR# DATA
D15:D8 D7:D0

图 2.2 写规则字(左)和非规则字(右)简单时序图

实验单元电路图
10 9 8 7 6 5 4 3 25 24 21 23 2 26 1 D0 D1 D2 D3 D4 D5 D6 D7 11 12 13 15 16 17 18 19 D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 10 9 8 7 6 5 4 3 25 24 21 23 2 26 1 D0 D1 D2 D3 D4 D5 D6 D7 11 12 13 15 16 17 18 19 D8 D9 D10 D11 D12 D13 D14 D15 RD WE

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 62256(1)

OE WE CS VCC VSS

22 27 20 28 VCC 14 GND

RD WR

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 62256(2)

OE WE CS VCC VSS

22 27 20 28 14

VCC GND

BLE CS

1 3 2 74LS32

BHE

4 5

74LS32 6

A3 A1~A8 A8~A15 D0~D7 低 CS0 BLE BHE MEMW MRMD

B4 A0~A7 A8~A15 D0~D7 CS BLE BHE WR RD

图 2.3

SRAM 单元电路图

实验程序清单(MEM1.ASM)
SSTACK SSTACK CODE START SEGMENT STACK DW 32 DUP(?) ENDS SEGMENT PROC FAR ASSUME CS:CODE MOV AX, 8000H MOV DS, AX MOV SI, 0000H MOV CX, 0010H MOV AX, 0000H MOV [SI], AX INC AX INC SI INC SI LOOP AA1 MOV AX,4C00H INT 21H ENDP ENDS END START

; 存储器扩展空间段地址

...

XA15 XD0

AA1:

...

系 统 总 线

...
D7 D8

...
A14 D0

AA0:

; 数据首地址

XA1

A0

SRAM

XD7 XD8

XD15 BLE# BHE# MWR# MRD# MY0

D15 BLE# BHE# WR RD CS

单 元

...

;程序终止

START CODE

图 2.4

SRAM 实验接线图

2.1.5

实验步骤

(注:本章实验选择 16 位寄存器) 1. 实验接线图如图 2.4 所示,按图接线。 2. 编写实验程序,经编译、链接无误后装入系统。 3. 先运行程序,待程序运行停止。 4. 通过 D 命令查看写入存储器中的数据: D8000:0000 回车,即可看到存储器中的数据,应为 0000、0001、0002、…、

...

000F 共 16 个字。 5. 改变实验程序,按非规则字写存储器,观察实验结果。 SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT START PROC FAR ASSUME CS:CODE MOV AX, 8001H ; 存储器扩展空间段地址 MOV DS, AX AA0: MOV SI, 0000H ; 数据首地址 MOV CX, 0010H MOV AX, 0000H AA1: MOV [SI], AX INC AX INC SI INC SI LOOP AA1 MOV AX,4C00H INT 21H ;程序终止 START ENDP CODE ENDS END START 6. 改变实验程序,按字节方式写存储器,观察实验现象。 SSTACK SEGMENT STACK DB 32 DUP(?) SSTACK ENDS CODE SEGMENT START PROC FAR ASSUME CS:CODE MOV AX, 8000H ; 存储器扩展空间段地址 MOV DS, AX AA0: MOV SI, 0000H ; 数据首地址 MOV CX, 0010H MOV AX, 0000H AA1: MOV [SI], AL INC AX INC SI LOOP AA1 MOV AX,4C00H INT 21H ;程序终止 START ENDP CODE ENDS END START

7. 将实验程序改为死循环程序,分别按规则字与非规则字的方式写存储器。 。 SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT START PROC FAR ASSUME CS:CODE MOV AX, 8000H ; 存储器扩展空间段地址 MOV DS, AX AA0: MOV SI, 0000H ; 数据首地址 MOV CX, 0010H MOV AX, 0000H AA1: MOV [SI], AX INC AX INC SI INC SI JMP AA1 ;无条件循环 START ENDP CODE ENDS END START

2.4
2.4.1 实验目的

8255 并行接口实验

1. 学习并掌握 8255 的工作方式及其应用。 2. 掌握 8255 典型应用电路的接法。

2.4.2

实验设备

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

2.4.3

实验内容

1. 基本输入输出实验。编写程序,使 8255 的 A 口为输入,B 口为输出,完成拨动开 关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就发生相应改变。 2. 流水灯显示实验。编写程序,使 8255 的 A 口和 B 口均为输出,数据灯 D7~D0 由左向右,每次仅亮一个灯,循环显示,D15~D8 与 D7~D0 正相反,由右向左,每次仅 点亮一个灯,循环显示。

2.4.4

实验原理
A口 (8位) I/O PA7-PA0

A组 控制 部件

双向数据总线 D0-D7

数据 总线 缓冲 器

C口 (高4位) 8位内总线 C口 (低4位) B组 控制 部件

I/O PC7-PC4

I/O PC3-PC0

RD WR A1 A0 RESET CS

读/写 控制 逻辑 B口 (8位) I/O PB7-PB0

PA3 PA2 PA1 PA0 RD CS GND A1 A0 PC7 PC6 PC5 PC4 PC0 PC1 PC2 PC3 PB0 PB1 PB2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

8255

40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21

PA4 PA5 PA6 PA7 WR RESET D0 D1 D2 D3 D4 D5 D6 D7 VCC PB7 PB6 PB5 PB4 PB3

图 2.31 8255 内部结构及外部引脚图

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

C口的位选择 位 D3D2D1 0 0 0 0 1 0 0 1 2 0 1 0 3 0 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1 0

图 2.32 8255 控制字格式

8255 实验单元电路图如图 2.33 所示:

D0 D1 D2 D3 D4 D5 D6 D7 RD WR A0 A1 CS

34 33 32 31 30 29 28 27 5 36 9 8 35 6

D0 D1 D2 D3 D4 D5 D6 D7 RD WR A0 A1 RESET CS

PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7

4 3 2 1 40 39 38 37 18 19 20 21 22 23 24 25 14 15 16 17 13 12 11 10

PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7

RST

8255

图 2.33 8255 实验单元电路图

2.4.5

实验步骤

1. 基本输入输出实验 本实验使 8255 端口 A 工作在方式 0 并作为输入口,端口 B 工作在方式 0 并作为输出 口。用一组开关信号接入端口 A,端口 B 输出线接至一组数据灯上,然后通过对 8255 芯 片编程来实现输入输出功能。具体实验步骤如下述: (1)实验接线图如图 4.34 所示,按图连接实验线路图。 (2)编写实验程序,经编译、连接无误后装入系统。 (3)运行程序,改变拨动开关,同时观察 LED 显示,验证程序功能。
XD0 D0

...

...

PA0

K0

...

...

IOW# IOR# IOY1

WR RD CS

PB7

8255单元

图 2.34 8255 基本输入输出实验接线图

A3 CS1 A1 A2

D3 CS A0 A1 A0~7

F4

开关

...
D7

系 统 总 线

...
K7 D0

XD7

D7

开 关 及

LED

PA7 XA1 XA2 A0 A1 PB0

显 示 单 元

B0~7 实验程序清单(A82551.ASM)
SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV DX, 276H MOV AL, 90H OUT DX, AL AA1: MOV DX, 270H IN AL, DX CALL DELAY MOV DX, 272H 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 第一个程序为何能联系到开关?是哪条程序?

灯1

2. 流水灯显示实验 使 8255 的 A 口和 B 口均为输出,数据灯 D7~D0 由左向右,每次仅亮一个灯,循环 显示,D15~D8 与 D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。实验接线 图如图 2.35 所示。实验步骤如下所述: (1)按图 2.35 连接实验线路图。 (2)编写实验程序,经编译、链接无误后装入系统。 (3)运行程序,观察 LED 灯的显示,验证程序功能。 (4)自己改变流水灯的方式,编写程序。
XD0 D0

...

...

PA0

D0

...

...

IOW# IOR# IOY1

WR RD CS

PB7

8255单元

图 2.35 8255 流水灯实验接线图

A0~7 改成灯 2 实验程序清单(A82552.ASM)
SSTACK SEGMENT STACK DW 32 DUP(?)

...
D15

系 统 总 线

...
D7 D8

XD7

D7

开 关 及 LED 显 示 单 元

PA7 XA1 XA2 A0 A1 PB0

SSTACK CODE START:

AA1:

DELAY: AA2:

CODE

ENDS SEGMENT ASSUME CS:CODE MOV DX, 276H MOV AL, 80H OUT DX, AL MOV BX, 8001H MOV DX, 270H MOV AL, BH OUT DX, AL ROR BH, 1 MOV DX, 272H MOV AL, BL OUT DX, AL ROL BL, 1 CALL DELAY CALL DELAY JMP AA1 PUSH CX MOV CX, 05000H PUSH AX POP AX LOOP AA2 POP CX RET ENDS END START

思考题: 1:执行程序后,使发光二极管闪动。
SSTACK SSTACK CODE START: SEGMENT STACK DW 32 DUP(?) ENDS SEGMENT ASSUME CS:CODE MOV DX, 276H MOV AL, 80H OUT DX, AL MOV BX, 00000H MOV DX, 270H MOV AL, BH OUT DX, AL NOT BH MOV DX, 272H MOV AL, BL OUT DX, AL NOT BL CALL DELAY CALL DELAY JMP AA1 PUSH CX MOV CX, 05000H PUSH AX POP AX LOOP AA2 POP CX RET

AA1:

DELAY: AA2:

CODE

ENDS END START

2:执行程序后,使发光二极管高八位和低八位亮灭相反。
SSTACK SSTACK CODE START: SEGMENT STACK DW 32 DUP(?) ENDS SEGMENT ASSUME CS:CODE MOV DX, 276H MOV AL, 80H OUT DX, AL MOV BX, 0FF00H MOV DX, 270H MOV AL, BH OUT DX, AL NOT BH MOV DX, 272H MOV AL, BL OUT DX, AL NOT BL CALL DELAY CALL DELAY JMP AA1 PUSH CX MOV CX, 05000H PUSH AX POP AX LOOP AA2 POP CX RET ENDS END START

AA1:

DELAY: AA2:

CODE

3:利用中断完成实验一。 4:利用方式一发中断请求信号。

实验四

8253 方波实验

一、实验目的与要求 了解 8253 的内部结构、工作原理;了解 8253 与 8086 的接口逻辑;熟悉 8253 的控制寄 存器和初始化编程方法,熟悉 8253 的 6 种工作模式。 二、实验设备

SUN 系列实验仪一套、PC 机一台 三、实验内容 1、编写程序:使用 8253 的计数器 0 和计数器 1 实现对输入时钟频率的两级分频,得到 一个周期为 1 秒的方波,用此方波控制蜂鸣器,发出报警信号,也可以将输入脚接到逻辑笔 上来检验程序是否正确。 2、连接线路,验证 8253 的功能,熟悉它的使用方法。 四、实验原理图
D 0 8 U34 1 D 0 OUT0 0 OUT0 D 1 7 1 1 D 1 GATE0 GATE

D

2

6

D

2

CLK0

9

D

3

5

D

D

4

4

D

D

5

3

D

D

6

2

5

4

3

1

3

CLK0

D

6

D

7

1

OUT1

1

4

D

7

GATE1

1

CS2(0260H)

CLK1

5

OUT1

2

1

C

R

D

2

2

R

C

S

W

R

2

3

W

D

S

R

1

7

CLK1

A

0

1

9

OUT2

1

A

0

A

0

2

0

GATE2

1

A

1

A

1

CLK2

8

6

A

1

8

2

5

五、实验步骤 1、连线说明: C4 区:CS、A0、A1 C4 区:CLK0 C4 区:OUT0 C4 区:OUT1 C4 区:GATE —— —— —— —— —— A3 区:CS2、A0、A1 B2 区:2M C4 区:CLK1 F8 区:Ctrl(蜂鸣器) C1 区的 VCC

2、测试实验结果:蜂鸣器发出时有时无的声音;用逻辑笔测试蜂鸣器的输入端口,红 绿灯交替点亮。 六、演示程序 COM_ADDR T0_ADDR T1_ADDR .MODEL EQU EQU EQU .STACK .CODE MOV MOV OUT MOV MOV OUT MOV TINY 0263H 0260H 0261H 100 DX,COM_ADDR AL,35H DX,AL DX,T0_ADDR AL,00H DX,AL AL,10H

START:

3

;计数器T0设置在模式2状态,BCD码计数

CLK2

OUT2

Ctrl(F8)

2MHz(B2)

VCC

OUT MOV MOV OUT MOV MOV OUT MOV OUT JMP END

DX,AL DX,COM_ADDR AL,77H DX,AL DX,T1_ADDR AL,00H DX,AL AL,10H DX,AL $ START

;CLK0/1000

;计数器T1为模式3状态, 输出方波,BCD码计数

;CLK1/1000 ;OUT1输出1S的方波

七、实验扩展及思考 1、8253 还有其它五种工作方式,其它工作模式下,硬件如何设计?程序如何编写? 2、使用 8253,编写一个实时钟程序。

.MODEL TINY COM_ADDR EQU 0263H T0_ADDR EQU 0260H T1_ADDR EQU 0261H T2_ADDR EQU 0262H .STACK 100 .CODE START: MOV DX,COM_ADDR MOV AL,00110101B OUT DX,AL ;计数器 T0,方式 2,BCD 码计数 MOV DX,T0_ADDR MOV AL,00H OUT DX,AL MOV AL,10H OUT DX,AL ;CLK0/1000 MOV DX,COM_ADDR MOV AL,01110111B OUT DX,AL ;计数器 T1 为模式 3 状态,输出方波,BCD 码计数 MOV DX,T1_ADDR MOV AL,00H OUT DX,AL MOV AL,20H OUT DX,AL ;CLK1/1000 ;OUT1 接到 LED 灯 MOV DX,COM_ADDR MOV AL,10010101B OUT DX,AL

;计数器 T2 为模式 2 状态,输出方波,BCD 码计数

MOV DX,T2_ADDR MOV AL,60H OUT DX,AL END START

;CLK1/60 ;OUT2 输出 60S 的方波 ;OUT2 接到蜂鸣器

实验五(2)

8259A 中断控制器实验

一、实验目的与要求 了解 8259A 的内部结构、工作原理;了解 8259A 与 8086 的接口逻辑;掌握对 8259A 的 初始化编程方法,了解 8086 是如何响应中断、退出中断的;体会 8259A 的中断优先级处理 方法。 复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。 二、实验设备 SUN 系列实验仪一套、PC 机一台 三、实验内容 1、编制程序:拨动单脉冲开关, “ ”送给 8259A 的 IR0, “ ” 送给 8259A 的 IR7, F5 区的最左边数码管对应 IR7 中断:没有触发中断或中断处理完毕,显示“0” ,正在响应 中断,显示“1” ;F5 区的最右边数码管对应 IR0 中断:没有触发中断或中断处理完毕,显 示“0” ,正在响应中断,显示“1” ,如果 IR0 中断 IR7,显示“2” 四、实验原理图
U33 C S 1 2 (0250H)CS3 C S VCC 8 VCC A 0 W R 2 2 W R A 0 7

A

R

D

3

2

6

R

D

INTA

INTA

D

7

4

2

5

D

7

IR7

IR7

INTA

0

D

6

5

2

D

6

D

5

6

IR6

2

D

5

D

4

7

IR5

2

D

4

D

3

8

IR4

2

D

3

D

2

9

IR3

2

D

2

IR2

0

1

2

3

4

D

1

1

0

1

D

1

IR1

9

D

0

1

1

1

8

D

0

IR0

IR0

IR1

IR2

1

2

1

7

CAS0

CAS0

INT

INT

1

3

1

CAS1

CAS1

SP/EN

6

1

4

1

G

N

D

CAS2

5

8

2

5

9

1

2

3

4

RN11

2

K

8

7

6

五、实验步骤 1、连线说明: B3 区:CS、A0 —— A3 区:CS3、A0

5

VCC

1

0

K

R109

CAS2

SP/EN

INTR

(B2)

(B2)

B3 区:INT、INTA B3 区:IR07 D3 区:CS、A0、A1 D3 区:JP20、B、C D3 区:PC0、PC1 2、运行程序.MODEL TINY IO8259_0 EQU 0260H IO8259_1 EQU 0261H .DATA BUFFER DB 8 DUP(?) Counter DB ? ReDisplayFlag DB 0 .STACK 100

—— —— —— —— ——

A3 区:INTR、INTA B2 区:单脉冲 A3 区:CS1、A0、A1 F4 F4 白线

.CODE START: MOV AX,@DATA MOV DS,AX MOV ES,AX PUSH DS WriIntver CLI POP DS ;初始化主片 8255 MOV DX, 0273H MOV AL, 80H OUT DX, AL ;初始化主片 8259 MOV DX,IO8259_0 MOV AL, 13H OUT DX, AL MOV DX,IO8259_1 MOV AL, 08H OUT DX, AL MOV OUT MOV OUT AL, DX, AL, DX, 09H AL 0 AL

CALL

;ICW1

;ICW2

;ICW4 ;OCW1

AA1:

MOV CX,0 STI NOP JMP AA1 NEAR

WriIntver PROC PUSH ES MOV AX,0 MOV ES,AX MOV DI,20H LEA AX,MIR7 STOSW MOV AX,CS STOSW POP ES RET WriIntver ENDP MIR7: STI

ADD MOV MOV OUT MOV MOV OUT

CX,1 DX, 0270H AL, CL DX, AL DX, 0271H AL, CH DX, AL

MOV AL, 20H MOV DX,IO8259_0 OUT DX, AL IRET

;中断结束命令

END

START

3、拨动单脉冲开关, “ ”送给 8259A 的 IR0, “ ” 送给 8259A 的 IR7,G5 区的最 左边数码管对应 IR7 中断:没有触发中断或中断处理完毕,显示“0” ,正在响应中断,显示 “1” ;G5 区的最右边数码管对应 IR0 中断:没有触发中断或中断处理完毕,显示“0” ,正 在响应中断,显示“1” ,如果 IR0 中断 IR7,显示“2” 六、演示程序 (例子程序名 8259_3.asm)

七、实验扩展及思考 1、从 8259A 收到上升沿,到 8086 响应中断,试画这个过程的时序图。

2.2
2.2.1 实验目的

8259 中断控制实验

1. 掌握 8259 中断控制器的工作原理。 2. 学习 8259 的应用编程方法。 3. 掌握 8259 级联方式的使用方法。

2.2.2

实验设备

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

2.2.3

实验内容及步骤

1. 中断控制器 8259 简介 在 Intel 386EX 芯片中集成有中断控制单元(ICU) ,该单元包含有两个级联中断控制 器, 一个为主控制器, 一个为从控制器。 该中断控制单元就功能而言与工业上标准的 82C59A 是一致的,操作方法也相同。从片的 INT 连接到主片的 IR2 信号上构成两片 8259 的级联。 在 TD-PITE 实验系统中,将主控制器的 IR6、IR7 以及从控制器的 IR1 开放出来供实 验使用,主片 8259 的 IR4 供系统串口使用。8259 的内部连接及外部管脚引出如图 2.5:

INTR (内核)

主片8259A IR2 INT IR4 CAS2:0 IR6 IR7 串口0 MIR6 MIR7

从片8259A INT CAS2:0 IR1 SIR1

图 2.5

8259 内部连续及外部管脚引出图

表 2.1 列出了中断控制单元的寄存器相关信息。 表 2.1 ICU 寄存器列表
寄存器 ICW1(主) ICW1(从) (只写) ICW2(主) ICW2(从) (只写) ICW3(主) (只写) ICW3(从) (只写) ICW4(主) ICW4(从) (只写) OCW1(主) OCW1(从) (读/写) OCW2(主) OCW2(从) (只写) OCW3(主) OCW3(从) (只写) IRR(主) IRR(从) (只读) ISR(主) ISR(从) (只读) POLL(主) POLL(从) (只读) 口地址 0020H 00A0H 0021H 00A1H 0021H 功能描述 初始化命令字 1: 决定中断请求信号为电平触发还是边沿触发。 初始化命令字 2: 包含了 8259 的基址中断向量号,基址中断向量是 IR0 的向量号,基址加 1 就是 IR1 的向量号,依此类推。 初始化命令字 3: 用于识别从 8259 设备连接到主控制器的 IR 信号,内部的从 8259 连接到主 8259 的 IR2 信号上。 初始化命令字 3: 表明内部从控制器级联到主片的 IR2 信号上。 初始化命令字 4: 选择特殊全嵌套或全嵌套模式,使能中断自动结束方式。 操作命令字 1: 中断屏蔽操作寄存器,可屏蔽相应的中断信号。 操作命令字 2: 改变中断优先级和发送中断结束命令。 操作命令字 3: 使能特殊屏蔽方式,设臵中断查询方式,允许读出中断请求寄存器和当前中断服 务寄存器。 中断请求: 指出挂起的中断请求。 当前中断服务: 指出当前正在被服务的中断请求。 查询状态字: 表明连接到 8259 上的设备是否需要服务,如果有中断请求,该字表明当前优先 级最高的中断请求。

00A1H 0021H 00A1H 0021H 00A1H 0020H 00A0H 0020H 00A0H 0020H 00A0H 0020H 00A0H 0020H 0021H 00A0H 00A1H

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

7 ICW1 0 0 0 1 LS 0 0:边沿触发 1:电平触发 0 1

0

图 2.6 初始化命令字 1 寄存器

初始化命令字 2 寄存器(ICW2)说明见图 2.7 所示。
7 ICW2 T7 T6 T5 T4 T3 0 0 0 0

中断向量地址

图 2.7 初始化命令字 2 寄存器

初始化命令字 3 寄存器(ICW3)说明,主片见图 2.8,从片见图 2.9。
7 ICW3(主片) S7 S6 S5 S4 S3 S2 S1 0 0

S7-S3:0表示无8259被连接到主片上 1表示有8259被连接到主片上 S2:0表示内部从片没被使用 1表示内部从片被级联到主片的IR2上 S1:0表示无8259通过IR1连接到主片上 1表示有8259通过IR1连接到主片上

图 2.8 主片初始化命令字 3 寄存器
7 ICW3(从片) 0 0 0 0 0 0 1 0 0

图 2.9 从片初始化命令字 3 寄存器

初始化命令字 4 寄存器(ICW4)说明见图 2.10。
7 ICW4 0 0 0 SNFM 0 0 AEOI 1 0

SNFM:0=选择全嵌套模式 1=选择特殊全嵌套模式,仅主8259能够工作在特殊全嵌套模式 AEOI:0=禁止中断自动结束 1=使能中断自动结束,仅主8259能够工作在中断自动结束方式

图 2.10 初始化命令字 4 寄存器

操作命令字 1 寄存器(OCW1)说明见图 2.11。
7 OCW1 M7 M6 M5 M4 M3 M2 M1 M0 0

M7--M0:0=对应IR信号上的中断请求得到允许 1=对应IR信号上的中断请求被屏蔽 注意:设置屏蔽位不影响各自中断挂起位

图 2.11 操作命令字 1 寄存器

操作命令字 2 寄存器(OCW2)说明如图 2.12 所示。
7 OCW2 R SL EOI 0 0 L2 L1 L0 0

R SL EOI 命令 0 0 0 取消优先级自动循环 * 0 0 1 一般的中断结束命令 0 1 0 无操作 0 1 1 特殊的中断结束命令 ** 1 0 0 中断优先级自动循环 * 1 0 1 在一般中断结束方式中优先级循环 1 1 0 优先级特殊循环方式 ** 1 1 1 在特殊中断结束方式中优先级循环 ** * 当8259工作在中断自动结束方式下时,这些情况可以改变优先级结构。 ** 在这些情况下优先级由L2:L0指定。 L2、L1、L0:在给出特殊的中断结束命令时,L2、L1、L0指出了具体要清除当 前中断服务寄存器的哪一位;当给出特殊的优先级循环方式命令时,L2、L1、 L0指出了循环开始时哪个中断的优先级最低。

图 2.12 操作命令字 2 寄存器

操作命令字 3 寄存器(OCW3)说明如图 2.13 所示。
7 OCW3 0 ESMM SMM 0 1 P RR RIS 0

ESMM SMM 0 0 无影响 0 1 无影响 1 0 禁止特殊屏蔽模式 1 1 使能特殊屏蔽模式 P:设置该位使8259工作在中断查询方式 RR RIS 0 0 无影响 0 1 无影响 1 0 读中断请求寄存器IRR 1 1 读当前中断服务寄存器ISR

图 2.13 操作命令字 3 寄存器

查询状态字(POLL)说明如图 2.14 所示。
7 POLL INT L2 L1 L0 0

INT:0=无请求 1=连接在8259上的设备请求服务 L2、L1、L0:当INT为1时,这些位指出了需要服务的最高优先级的IR;当INT 为0时这些位不确定。

图 2.14 程序状态字寄存器

在对 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.13 所示,单次脉冲输出与主片 8259 的 IR7 相连,每按动一次单次脉冲,产生一次外 部中断,在显示屏上输出一个字符?7? 。

系 统 总 线

MIR7

KK1+

主8259

单 次 脉 冲 单 元

图 2.15 8259 单中断实验接线图

实验程序清单(INT1.ASM)
SSTACK SSTACK CODE START: SEGMENT STACK DW 32 DUP(?) ENDS SEGMENT ASSUME CS:CODE PUSH DS MOV AX, 0000H MOV DS, AX MOV AX, OFFSET MIR7 MOV SI, 003CH MOV [SI], AX MOV AX, CS MOV SI, 003EH MOV [SI], AX CLI POP DS ;初始化主片 8259 MOV AL, 11H OUT 20H, AL MOV AL, 08H OUT 21H, AL MOV AL, 04H OUT 21H, AL MOV AL, 01H OUT 21H, AL MOV AL, 6FH OUT 21H, AL STI NOP JMP AA1 STI CALL DELAY MOV AX, 0137H INT 10H MOV AX, 0120H

;取中断入口地址 ;中断矢量地址 ;填 IRQ7 的偏移矢量 ;段地址 ;填 IRQ7 的段地址矢量

;ICW1 ;ICW2 ;ICW3 ;ICW4 ;OCW1

AA1: MIR7:

;显示字符 7

DELAY: AA0:

CODE

INT 10H MOV AL, 20H OUT 20H, AL IRET PUSH CX MOV CX, 0F00H PUSH AX POP AX LOOP AA0 POP CX RET ENDS END START

;中断结束命令

实验步骤 (1)按图 2.15 连接实验线路。 (2)编写实验程序,经编译、链接无误后装入系统。 (3)运行程序,重复按单次脉冲开关 KK1+,显示屏会显示字符?7? ,说明响应了中 断。 思考题: 1.在中断中完成BCD码转换为二进制数。 将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入 3510H起始的内存单元中,每次中断完成一个二位十进制数的BCD码转换。 实验步骤:将四个二位十进制数的BCD码存入3500H~3507H中,即:先键入E3500, 然后输入01 02 03 04 05 06 07 08.运行程序,按一次单次脉冲开关KK1+,查看3510内 容,应为0ch。再按一次单次脉冲开关KK1+,查看3511内容,应为22。继续发中断,依次 查看3512,3513内容。 2.在上述试验基础上, 第五次中断结束中断, 再按单次脉冲开关KK1+将无法进入中断服务 程序。 3.在上述试验基础上,每进一次中断记录中断次数,存放在3000H内存单元。 4.将 IR7 改到 IR6,完成实验 3. 8259 级联实验 实验接线图如图 2.16 所示, KK1 +连接到主片 8259 的 IR7 上,KK2+连接到从片 8259 的 IR1 上, 当按一次 KK1+时,显示屏上显示字符?M7? ,按一次 KK2+时,显示字符?S1? 。编写程序。

系 统 总 线

主8259
SIR1

MIR7

KK1+

从8259

KK2+

单 次 脉 冲 单 元

图 2.16

8259 级联实验

实验程序清单(INTCAS1.ASM)
SSTACK SSTACK CODE START: SEGMENT STACK DW 32 DUP(?) ENDS SEGMENT ASSUME CS:CODE PUSH DS MOV AX, 0000H MOV DS, AX

AA1: MIR7:

SIR1:

MOV AX, OFFSET MIR7 MOV SI, 003CH MOV [SI], AX MOV AX, CS MOV SI, 003EH MOV [SI], AX 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 MOV AL, 08H OUT 21H, AL MOV AL, 04H OUT 21H, AL MOV AL, 01H OUT 21H, AL ;初始化从片 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, 0FDH OUT 0A1H,AL MOV AL, 6BH OUT 21H, AL STI NOP JMP AA1 CALL DELAY MOV AX, 014DH INT 10H MOV AX, 0137H INT 10H MOV AX, 0120H INT 10H MOV AL, 20H OUT 20H, AL IRET CALL DELAY MOV AX, 0153H INT 10H MOV AX, 0131H INT 10H MOV AX, 0120H INT 10H MOV AL, 20H OUT 0A0H, AL

;取中断入口地址 ;中断矢量地址 ;填 IRQ7 的偏移矢量 ;段地址 ;填 IRQ7 的段地址矢量

;ICW1 ;ICW2 ;ICW3 ;ICW4

;ICW1 ;ICW2 ;ICW3 ;ICW4 ;OCW1 = 1111 1101 ;主 8259 OCW1

;M ;显示字符 7

;中断结束命令

;S ;显示字符 1

DELAY: AA0:

CODE

OUT 20H, AL IRET PUSH CX MOV CX, 0F00H PUSH AX POP AX LOOP AA0 POP CX RET ENDS END START

实验步骤 (1)按图 2.16 连接实验线路。 (2)输入程序,编译、链接无误后装入系统。 (3)运行程序,按动 KK1+或 KK2+,观察实验结果,验证实验程序的正确性。 (4)若同时按下 KK1+和 KK2+,观察实验结果,解释实验现象。

2.3
2.3.1 实验目的

8254 定时/计数器应用实验

1. 掌握 8254 的工作方式及应用编程。 2. 掌握 8254 典型应用电路的接法。

2.3.2

实验设备

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

2.3.3

实验内容

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

2.3.4

实验原理

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.27 是 8254 的内部结构框图和引脚图,它是由与 CPU 的接口、内部控制电路和 三个计数器组成。8254 的工作方式如下述: (1)方式 0:计数到 0 结束输出正跃变信号方式。 (2)方式 1:硬件可重触发单稳方式。 (3)方式 2:频率发生器方式。 (4)方式 3:方波发生器。 (5)方式 4:软件触发选通方式。 (6)方式 5:硬件触发选通方式。
D[7:0] 数据总线 缓冲器 计数器0 CLK0 GATE 0 OUT0

内部总线

RD WR A0 A1 CS

R/W 逻辑电路

计数器1

CLK1 GATE 1 OUT1

控制 寄存器

计数器2

CLK2 GATE 2 OUT2

D7 D6 D5 D4 D3 D2 D1 D0 CLK0 OUT0 GATE 0 GND

1 2 3 4 5 6 7 8 9 10 11 12

8254

24 23 22 21 20 19 18 17 16 15 14 13

VCC WR RD CS A1 A0 CLK2 OUT2 GATE 2 CLK1 GATE 1 OUT1

图 2.27 8254 的内部接口和引脚

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

D7

D6

D5

D4

D3

D2

D1

D0 计数码制选择 0-二进制数 1-十进制数

计数器选择 00-计数器 0 01-计数器 1 10-计数器 2 11-读出控制 字标志

读/写格式选择 00-锁存计数值 01-读/写低 8 位 10-读/写高 8 位 11-先读/写低 8 位 再读/写高 8 位
表 2.4

工作方式选择 000-方式 0 001-方式 1 010-方式 2 011-方式 3 100-方式 4 101-方式 5

8254 读出控制字格式

D7 1

D6 1

D5 0-锁存计数值 D7

D4 0-锁存状态信息
表 2.5

D3

D2

D1

D0 0

计数器选择(同方式控制字) D5 D4 D3 D2 D1 D0

8254 状态字格式

D6 计数初值是否装入 1-无效计数 0-计数有效

OUT 引脚现行状态 1-高电平 0-低电平

计数器方式(同方式控制字)

8254 实验单元电路图如下图所示:
D0 D1 D2 D3 D4 D5 D6 D7 CS RD WR A0 A1 8 7 6 5 4 3 2 1 21 22 23 19 20 D0 D1 D2 D3 D4 D5 D6 D7 CS RD WR A0 A1 OUT0 GATE0 CLK0 10 11 9 OUT0 GATE0 CLK0 4.7k OUT1 GATE1 CLK1 13 14 15 OUT1 GATE1 CLK1 VCC

8254

OUT2 GATE2 CLK2

17 16 18

OUT2 GATE2 CLK2

8251-TRCLK VCC CLK1.8432MHz

图 2.28 8254 实验电路原理图

2.3.5

实验步骤

1. 计数应用实验 编写程序, 将 8254 的计数器 0 设臵为方式 3, 计数值为十进制数 4, 用单次脉冲 KK1 +作为 CLK0 时钟,OUT0 连接 MIR7,每当 KK1+按动 5 次后产生中断请求,在屏幕上 显示字符?M? 。 实验步骤: (1)实验接线如图 2.29 所示。 (2)编写实验程序,经编译、链接无误后装入系统。 (3)运行程序,按动 KK1+产生单次脉冲,观察实验现象。 (4)改变计数值,验证 8254 的计数功能。
XD0 D0 4.7K VCC GATE0

...

XD7

...
D7

系 统 总 线

CLK0 XA1 XA2 A0 A1 OUT0 IOW# IOR# IOY3 WR RD CS

KK1+

单次脉冲单元

8254单元

MIR7

图 2.29 8254 计数应用实验接线图

实验程序清单(A82541.ASM)
A8254 B8254 C8254 CON8254 SSTACK SSTACK CODE START: EQU EQU EQU EQU 06C0H 06C2H 06C4H 06C6H

SEGMENT STACK DW 32 DUP(?) ENDS SEGMENT ASSUME CS:CODE, SS:SSTACK PUSH DS MOV AX, 0000H MOV DS, AX MOV AX, OFFSET IRQ7 MOV SI, 003CH MOV [SI], AX MOV AX, CS MOV SI, 003EH MOV [SI], AX CLI POP DS ;初始化主片 8259 MOV AL, 11H OUT 20H, AL MOV AL, 08H OUT 21H, AL MOV AL, 04H OUT 21H, AL MOV AL, 01H OUT 21H, AL MOV AL, 6FH OUT 21H, AL ;8254 MOV DX, CON8254 MOV AL, 10H OUT DX, AL MOV DX, A8254 MOV AL, 04H OUT DX, AL STI JMP AA1 MOV DX, A8254 MOV AL, 04H OUT DX, AL MOV AX, 014DH INT 10H MOV AX, 0120H INT 10H MOV AL, 20H OUT 20H, AL IRET ENDS END START

;取中断入口地址 ;中断矢量地址 ;填 IRQ7 的偏移矢量 ;段地址 ;填 IRQ7 的段地址矢量

;ICW1 ;ICW2 ;ICW3 ;ICW4 ;OCW1

;计数器 0,方式 0

AA1: IRQ7:

;显示字符 M

;中断结束命令

CODE

2.

定时应用实验

编写程序, 将 8254 的计数器 0 和计数器 1 都设臵为方式 3, 用信号源 1MHz 作为 CLK0 时钟,OUT0 为波形输出 1ms 方波,再通过 CLK1 输入,OUT1 输出 1s 方波。 实验步骤: (1)接线图如图 2.30 所示。 (2)根据实验内容,编写实验程序,经编译、链接无误后装入系统。 (3)单击 按钮,运行实验程序,8254 的 OUT1 会输出 1s 的方波。 按钮或直接单击工

(4)用示波器观察波形的方法:单击虚拟仪器菜单中的 具栏的 按钮, 在新弹出的示波器界面上单击

按钮运行示波器, 就可以观测出 OUT1

输出的波形。 实验程序清单(A82542.ASM)
A8254 B8254 C8254 CON8254 SSTACK SSTACK CODE START: EQU EQU EQU EQU 0600H 0602H 0604H 0606H

AA1: CODE

SEGMENT STACK DW 32 DUP(?) ENDS SEGMENT ASSUME CS:CODE MOV DX, CON8254 MOV AL, 36H OUT DX, AL MOV DX, A8254 MOV AL, 0E8H OUT DX, AL MOV AL, 03H OUT DX, AL MOV DX, CON8254 MOV AL, 76H OUT DX, AL MOV DX, B8254 MOV AL, 0E8H OUT DX, AL MOV AL, 03H OUT DX, AL JMP AA1 ENDS END START

;8254 ;计数器 0,方式 3

;8254 ;计数器 1,方式 3

XD0 XD7 XA1 XA2 IOW# IOR# IOY0

D0

...

...

D7 A0 A1

系 统 总 线

WR RD CS CLK 0

...

OUT0

CLK1 GATE1 OUT1 VCC 1s方波输出

CLK

8254 单元
XD0 XD7 IOW# IOR# IOY3

D0 D7

CLK

8254思考题: 1:将CLK0接到时钟源,使程序每隔一秒显示一次M。 2: 编写程序使8254计数器0工作于方式0,OUT0接到发光二极管,使其闪动。 3:编写程序利用8254计数器0和计数器1分别作为8259IR6,IR7的中断请求信号; 将8255PA0接到发光二极管D0,8255PA7接到发光二极管D1;使DO,D1闪动,D0 每闪动10次D1闪动一次。

...

图 2.30 8254 定时应用实验接线图

...
WR RD CS CLK

IN0

A B C

A/D 转换单元


相关文章:
...80X86微机原理及接口技术实验教程 思考题部分参考答...
合肥工业大学电气与自动化专业实验中心 80X86微机原理及接口技术实验教程 思考题部分参考答案(1) 较为完善_工学_高等教育_教育专区。实验一 数据传送 1、子程序 ...
...80X86微机原理及接口技术实验教程 思考题部分参考答...
合肥工业大学电气与自动化专业实验中心 80X86微机原理及接口技术实验教程 思考题部分参考答案(5)_工学_高等教育_教育专区。硬件实验 2.1 2.4 静态存储器扩展实验 ...
...80X86微机原理及接口技术实验教程 思考题部分参考答...
合肥工业大学电气与自动化专业实验中心 80X86微机原理及接口技术实验教程 思考题部分参考答案(2)_工学_高等教育_教育专区。8255 D7 D6 D5 D4 D3 D2 D1 D...
合肥工业大学电气与自动化专业实验中心 80X86微机原理...
合肥工业大学电气与自动化专业实验中心 80X86微机原理及接口技术实验教程 1数制转换实验_工学_高等教育_教育专区。1.2 1.2.1 实验目的 数制转换实验 1. 掌握不...
合肥工业大学电气与自动化专业实验中心 80X86微机原理...
合肥工业大学电气与自动化专业实验中心 80X86微机原理及接口技术实验教程 4排序程序设计实验_工学_高等教育_教育专区。1.6 1.6.1 实验目的 排序程序设计实验 1. 掌...
80X86微机原理及接口技术实验教程
合肥工业大学电气与自动化专业实验中心 80X86 微机原理及接口技术实验教程 目目 ...1.2.4 思考题 1. 实验内容 1 中将一个五位十进制数转换为二进制数(十六位...
80x86微机原理与接口技术()
如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 80x86微机原理与接口技术() 实验指导书实验指导书隐藏>> 80X86实验指导...
80x86微机原理实验报告
苏州大学 微机原理实验报告 80X86 微机原理接口技术 实验报告 学院:沙钢钢铁学院 专业: 材料冶金 学号: 1013401010 姓名: 胥海涛 指导老师:刘文杰 0 苏州大学 微机...
80x86微机原理实验指导
80x86微机原理与接口技术 实验指导书 长安大学信息学院电子通信实验室 第1章 80X86 微机原理及其程序设计实验本章主要介绍汇编语言程序设计,通过实验来学习80X86 ...
微机原理与接口技术第二版答案
微机原理与接口技术第二版答案_工学_高等教育_教育...它将自动加 1,使它指向要取的下一内存单元,每取...2.9 在 80x86 微机的输入/输出指令中,I/O 端...
更多相关标签:

相关文章