微机原理实验5.docx 您所在的位置:网站首页 乐高收藏展示 微机原理实验5.docx

微机原理实验5.docx

#微机原理实验5.docx| 来源: 网络整理| 查看: 265

微机原理实验5.docx

《微机原理实验5.docx》由会员分享,可在线阅读,更多相关《微机原理实验5.docx(31页珍藏版)》请在冰豆网上搜索。

微机原理实验5.docx

微机原理实验5

实验五中断特性及8259应用编程实验

实验目的:

1、认识TDN86/51系统的中断特性。

2、掌握8259中断控制器的工作原理。

3、

ICW1

ICW2

级联方式?

要ICW4?

ICW4

芯片就绪,接受中断请求

ICW3

Y

Y

N

N

掌握8259可编程中断控制器的应用编程。

4、学习掌握8259级联方式的使用方法。

5、学习在接口实验单元上连接实验电路的方法

相关理论知识:

1、8259A可编程中断控制器

中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片,它将中断源优先级排队、判别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A编程就可以管理8级外部中断,并可以选择优先模式和中断请求方式。

8259A的编程,就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。

命令字

D7

D6

D5

D4

D3

D2

D1

D0

设定值

入口

地址

ICW1

0

0

0

1

1:

电平触发

0:

边沿触发

0

1:

单片

0:

多片

1:

有ICW4

0:

无ICW4

13H

20H

ICW2

中断向量地址T7~T3位

0

0

0

08H

21H

ICW3(主)

1:

IRQi线上有级联从片

0:

无级联从片

21H

ICW3(从)

不用

与主片对应的从片识别码,从000~111

ICW4

不用

1:

特殊嵌套

0:

一般嵌套

1:

缓冲

0:

非缓冲

1:

主片

0:

从片

1:

自动EOI

0:

正常EOI

1

0DH

21H

操作命令字OCW1~OCW3可根据需要随时进行设置,其命令字格式如下:

命令字

D7

D6

D5

D4

D3

D2

D1

D0

入口

地址

OCW1

1:

置中断屏蔽位,0:

清除中断屏蔽位

21H

OCW2

R

SL

EOI

0

0

L2

L1

L0

20H

OCW3

0

00和01:

无意义

10:

撤销特殊屏蔽

11:

设定特殊屏蔽

0

1

P:

查询命令

00和01:

无意义

10:

读IRR

11:

读ISR

20H

其中对于OCW2命令字具体意义如下:

1L2~L0:

对应IRi的编码,取值从000~111

2R、SI、EOI组合编码

001

常规EOI命令

中断结束

011

特殊EOI命令

101

在常规EOI时循环

自动循环

100

在自动EOI时循环(置位)

000

在自动EOI时循环(复位)

111

在特殊EOI时循环

特殊循环

110

置优先权命令

010

无操作

 

2、系统中的8259A芯片

系统中的8259A芯片工作于单片方式,但可由用户扩展接成级联方式,线路如下所示。

图中的圈点表示此为排针形式引出脚。

8088

XD0

XD1

XD2

XD3

XD4

XD5

XD6

XD7

 

IOY1

XIOR

XIOW

XA0

INTR

INAQS1

D0IR0

D1IR1

D2IR2

D3IR2

D4IR2

D5IR2

D6IR2

D78259IR7

INT

INTASP/EN

CS

RDCAS0

WRCAS1

A0CAS2

IRQ0

IRQ1

IRQ2

IRQ3

IRQ4

IRQ5

IRQ6

IRQ7

 

CAS0

CAS1

CAS2

INTA

+5V

系统启动时,8259A被初始化,其初始化是通过系统中的初始化程序设置初始化命令字ICW来实现的。

系统初始化时,规定0#和4#中断源分别提供给实时时钟和与PC微机联机的串口通信使用,用户可以使用其余中断源。

在进入监控后,只有4#中断源处于开启状态,其他中断源都被屏蔽了。

中断矢量地址和中断号之间的关系如下表:

中断序号

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

说明

时钟

可用

可用

串口2

串口1

可用

可用

可用

3、接口实验单元中的R-S触发器电路

7400

+5V

kk1+

kk1-

kk1

1k

KK2-

KK2+

KK1-

KK1+

8259A

IRQ7

图R-S触发器图实验

(1)线路

实验内容:

一、8259应用实验

(1)

按上右图所示实验线路编写程序,使每次响应外部中断IRQ7时,显示字符“7”,中断10次后,程序退出。

主程序

修改IRQ7中断矢量

CX=00AH

CX=0?

开中断

屏蔽IRQ7

开中断

停机

Y

N

显示“7”

CX=CX-1

关中断

返回

IRQ7中断服务处理

修正IMR,使IRQ7中断允许

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK

START:

PUSHDS

MOVAX,0000H

MOVDS,AX;数据段段寄存器清零

MOVAX,OFFSETIRQ7;取中断服务程序入口地址(相对地址)

ADDAX,2000H;加装载时IP地址(绝对地址)

MOVSI,003CH;填8259中断7中断矢量

MOV[SI],AX;填偏移地址

MOVAX,0000H

MOVSI,003EH

MOV[SI],AX;填段地址

CLI;关中断

POPDS

INAL,21H;读8259中断屏蔽字

ANDAL,7FH;开8259中断7

OUT21H,AL

MOVCX,000AH;设置中断次数

A1:

CMPCX,0000H

JNZA2

INAL,21H;读8259中断屏蔽字

ORAL,80H;关8259中断7

OUT21H,AL

STI

HLT

A2:

STI

JMPA1

IRQ7:

MOVAH,01H;中断服务程序入口

MOVAL,37H

INT10H

MOVAL,20H;“空格”

INT10H

DECCX

MOVAL,20H

OUT20H,AL;结束中断命令

CLI

IRET

CODEENDS

ENDSTART

实验步骤:

(1)按图连接试验线路,检查无误后打开实验箱电源。

(2)输入程序并检查无误,经汇编、连接后通过调试窗口装入系统0000:

2000处。

(3)G=0000:

2000运行程序。

(4)重复按KK2微动开关,观察显示屏上显示结果。

 

二、8259应用实验

(2)

KK2-

KK2+

KK1-

KK1+

8259A

IRQ7

IRQ6

编写程序实现:

⏹当无中断请求时,执行主程序,延时显示“main”,每显示一个空一格;

⏹若有中断请求,则执行其中断服务程序,显示对应中断号“6”或“7”;

⏹若正在执行较低级的中断服务程序,则允许比它优先级高的中断被相应(IRQ6>IRQ7)。

实验程序如下:

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

DATASEGMENT

TABLEDB4DH,41H,49H,4EH,20H,00H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

PUSHDS

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETIRQ6;取中断服务程序入口地址

ADDAX,2000H

MOVSI,0038H;填8259中断6中断矢量

MOV[SI],AX

MOVAX,0000H

MOVSI,003AH

MOV[SI],AX

MOVAX,OFFSETIRQ7;取中断服务程序入口地址

ADDAX,2000H

MOVSI,003CH;填8259中断7中断矢量

MOV[SI],AX

MOVAX,0000H

MOVSI,003EH

MOV[SI],AX

POPDS

MOVAL,13H;初始化ICW1

OUT20H,AL

MOVAL,08H;初始化ICW2

OUT21H,AL

MOVAL,09H;初始化ICW4

OUT21H,AL

MOVAL,3DH;配置OCW1

OUT21H,AL

STI

A1:

MOVCX,0007H

MOVAL,0DH

MOVAH,01H

INT10H;显示回车

A2:

MOVAH,06H

MOVBX,OFFSETTABLE

INT10H;显示main

CALLDALLY

LOOPA2;循环显示main

JMPA1

IRQ6:

STI;开中断

CALLDALLY

MOVAL,36H

MOVAH,01H

INT10H;显示6

MOVAL,20H

OUT20H,AL

IRET

IRQ7:

STI;开中断

CALLDALLY

MOVAL,37H

MOVAH,01H

INT10H;显示7

MOVAL,20H

OUT20H,AL

IRET

DALLY:

PUSHCX;出栈CX

PUSHAX

MOVCX,0040H

A3:

MOVAX,056CH

A4:

DECAX

JNEA4

LOOPA3

POPAX

POPCX

RET

CODEENDS

ENDSTART

实验步骤:

(1)画出以上程序流程图,并在程序后面填写相应注释。

Begin

 

把IRQ6的服务程序的地址,填入中断向量表中

 

把IRQ7的服务程序的地址,填入中断向量表中

 

初始化8259相关的寄存器(ICW1,ICW2,ICW3,ICW4)

 

开始程序,显示字符“main“

 

中断请求

无中断请求

有请求

等待

执行中断服务程序,显示“6“或”7“

 

执行完成

 

延时

 

完成

 

(2)按图连接实验电路,检查无误后打开实验箱电源。

(3)输入程序并检查无误,经汇编、连接后装入系统。

(4)G=0000:

2000运行实验程序,记录运行结果:

1没有按键时:

延时显示MAIN,每显示一个空一格

2单独按下KK1或KK2时:

按下KK1显示6,接着延时显示MAIN,每显示一个空一格

按下KK2显示7,接着延时显示MAIN,每显示一个空一格

3先按下KK1再按下KK2时:

延时显示6,接着延时显示MAIN,

4先按下KK2再按下KK1时:

延时显示67,接着延时显示MAIN

分析结果:

实验小结:

实验5主要是中断实验,通过这次实验:

1、掌握了8259A的工作原理;

2、掌握了编写中断服务程序的方法;

3、掌握了初始化中断向量的方法。

教师评语:

实验六8253定时/计数器应用实验

实验目的:

1、熟悉定时/计数器在系统中的典型接法。

2、掌握定时/计数器的工作方式及应用编程

相关理论知识:

一、8253可编程定时/计数器介绍

8253可编程定时/计数器是Intel公司生产的通用外围芯片之一。

它有3个独立的十六位计数器,计数频率范围为0-2MHz,所有计数方式和操作方式都通过编程进行控制。

1、8253的功能

在实际应用当中,8253可以在不同场合实现以下功能:

延时终端、可编程频率发生器、事件计数器、分频器、实时时钟、数字单稳、复杂的电机控制器。

2、8253的工作方式

方式0

计数结束产生中断

方式1

可重触发的单稳触发器

方式2

分频器

方式3

方波频率发生器

方式4

软件触发的选通信号

方式5

硬件触发的选通信号

3、8253的内部结构及引脚

4、8253的控制字格式

 

5、8253的初始化编程

送控制字到控制端口

(43H)

送计数初值到计数器端口

(40H、41H、42H)

系统总线

IOY2

XIOR

XIOW

XA0

XA1

+5V

+5V

8259-IRQ0

OPCLK

8251-TXCLK

1.8432MHz

+5V

XD0

XD1

XD2

XD3

XD4

XD5

XD6

XD7

二、系统中的8253芯片

系统中装有一片8253芯片,线路如上右图所示:

实验内容:

一、计数中断实验

8253的通道2工作于方式0,用于事件计数,当计数5次时,向8259A发出中断请求信号,显示“M”,实验线路如图所示:

KK1

 

8253

计数/定时器

+5V

GATE2

CLK2

OUT2

 

8259

中断控制器

IRQ7

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK

START:

INAL,21H

ANDAL,7FH;OCW1,开IRQ7中断

OUT21H,AL

MOVAL,90H

OUT43h,AL;设置8253控制字

A1:

MOVAL,5H

OUT42h,AL;设置计数初值

HLT

STI;开外部中断(cpu)

JMPA1

MOVAX,014DH;中断服务子程序

INT10H

MOVAX,0120H

INT10H

MOVAL,20H;OCW2,常规EOI命令

OUT20H,AL

IRET

CODEENDS

ENDSTART

(1)关闭电源,按图接线,接通电源。

(2)输入程序并检查无误,经汇编、连接后装入系统。

(3)用U2000命令查看“MOVAX,014DH”指令的偏移地址为2012。

(4)在0000:

003CH单元填入中断矢量,即0000:

003C12200000。

(5)运行程序,并按动KK1键,在按动5次后,屏幕上显示一个“M”,这是因为当计数超过5的时候,就会产生中断,然后运行中断程序:

显示“M“。

二、定时中断实验

利用8253的通道0工作于方式2来产生定时中断(IRQ0),循环显示“0”-“9”十个数,系统默认线路如下。

1.19MHz

 

8253

计数/定时器

+5V

GATE0

CLK0

OUT0

 

8259

中断控制器

IRQ0

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK

START:

PUSHDS

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETIRQ0

ADDAX,2000H

MOVSI,0020H;填中断矢量表中的IP

MOV[SI],AX

MOVAX,0000H

MOVSI,0021H;填中断矢量表中的CS

MOV[SI],AX

POPDS

MOVAL,FEh;OCW1,开IRQ0中断

OUT21H,AL

MOVAL,1Dh;设置8253控制字

OUT43H,AL

MOVAL,0FFH;设置8253计数初值低8位

OUT40H,AL

MOVDL,30H;设置起始字符‘0’

A1:

STI

JMPA1;等待中断

IRQ0:

MOVAH,01H;中断服务子程序

MOVAL,DL

CMPAL,3AH;字符9,比较

JNZA2;未完毕时转A2继续显示

MOVAL,0DH;显示完毕后换行

INT10H

MOVAL,30H;重新设置起始字符

A2:

INT10H

INCAX

MOVDL,AL

MOVAX,0120H

INT10H

CALLDALLY

MOVAL,20H;OCW2,常规EOI命令

OUT20H,AL

IRET

DALLY:

MOVCX,0100H;延时

A3:

MOVBX,0560H

A4:

DECBX

JNZA4

LOOPA3

RET

CODEENDS

ENDSTART

(1)输入程序并检查无误,经汇编、连接后装入系统。

(2)运行程序,显示屏上出现现象为0123456789。

(3)修改8253的时常数为0FH,再运行程序,显示速度明显变快。

三、电子发声实验

系统的OPCLK(1.1625MHz)作为音乐节拍,从表格TABLE中查出每个音符对应的时常数送给计数器2(工作在方式3:

方波频率发生器),以确定音调,驱动扬声器产生音乐,实验线路图如下:

OPCLK

1.1625MHz

 

8253

计数/定时器

+5V

GATE2

CLK2

OUT2

 

SPKUNIT

SPK

注意:

SPK接线要在装入程序并运行后进行。

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

DATASEGMENT

TABLEDB33H,33H,3DH,33H,26H,26H,26H,26H,2DH,2DH,26H,2DH,33H

DB33H,33H,33H,33H,33H,4DH,45H,3DH,3DH,3DH,45H,4DH,45H

DB45H,45H,45H,45H,45H,45H,45H,33H,33H,3DH,33H,26H,26H

DB26H,28H,2DH,2DH,26H,26H,33H,33H,33H,33H,45H,3DH,39H

DB39H,39H,52H,4DH,4DH,4DH,4DH,4DH,4DH,4DH,4DH,2DH,2DH

DB26H,26H,26H,26H,26H,26H,28H,28H,2DH,28H,26H,26H,26H

DB26H,2DH,28H,26H,2DH,2DH,33H,3DH,4DH,45H,45H,45H,45H

DB45H,45H,45H,45H,33H,33H,3DH,33H,26H,26H,26H,28H,2DH

DB2DH,26H,2DH,33H,33H,33H,33H,33H,33H,45H,3DH,39H,39H

DB39H,52H,4DH,4DH,4DH,4DH,4DH,4DH,4DH,4DH,00H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETTABLE

MOVAL,[BX]

MOVAH,00H

A1:

MOVDL,25H;时常数*25H作为计数值保存于AX中

MULDL;发音频率=1.1625MHz/37=314Hz

PUSHAX

MOVAL,B7;计数器2,方式3,写16位BCD初值

OUT43H,AL

POPAX

OUT42H,AL;设置低八位计数初值

MOVAL,AH

OUT42H,AL;设置高八位计数初值

INCBX

MOVAH,00H

MOVAL,[BX];取下一个时常数

TESTAL,0FFH;测试是否为最后一个00H

JZA3

MOVCX,77FFH;延时播放当前音符

A2:

PUSHAX

POPAX

LOOPA2

JMPA1;转A1播放下一个音符

A3:

MOVBX,OFFSETTABLE;取第一个时常数,重新播放

MOVAL,[BX]

MOVAH,00H

JMPA1

CODEENDS

ENDSTART

(1)关闭电源,按图接线,检查无误后打开电源。

(2)输入程序并检查无误,经汇编、连接后装入系统。

(3)运行程序,注意听扬声器发出的音乐声。

 

思考题:

1、在将计数初值赋给8253后,马上就可以启动并进行定时或计数吗?

答:

不会马上就可以启动并进行定时

 

2、假设8253的通道1输入时钟频率为2MHz,现在需要使用其作为分频器,输出62.5KHz频率的时钟,则应设置计数初值(分频系数)为多少?

应采用哪种工作方式?

请写出初始化程序。

MOVAL,57H

OUT27H,AL

MOVAL,32H

OUT25H,AL

 

实验小结:

通过本次实验,熟悉了8253定时器/计数



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有