微机原理实验5汇编.docx

上传人:b****6 文档编号:15972892 上传时间:2023-07-09 格式:DOCX 页数:31 大小:314.59KB
下载 相关 举报
微机原理实验5汇编.docx_第1页
第1页 / 共31页
微机原理实验5汇编.docx_第2页
第2页 / 共31页
微机原理实验5汇编.docx_第3页
第3页 / 共31页
微机原理实验5汇编.docx_第4页
第4页 / 共31页
微机原理实验5汇编.docx_第5页
第5页 / 共31页
微机原理实验5汇编.docx_第6页
第6页 / 共31页
微机原理实验5汇编.docx_第7页
第7页 / 共31页
微机原理实验5汇编.docx_第8页
第8页 / 共31页
微机原理实验5汇编.docx_第9页
第9页 / 共31页
微机原理实验5汇编.docx_第10页
第10页 / 共31页
微机原理实验5汇编.docx_第11页
第11页 / 共31页
微机原理实验5汇编.docx_第12页
第12页 / 共31页
微机原理实验5汇编.docx_第13页
第13页 / 共31页
微机原理实验5汇编.docx_第14页
第14页 / 共31页
微机原理实验5汇编.docx_第15页
第15页 / 共31页
微机原理实验5汇编.docx_第16页
第16页 / 共31页
微机原理实验5汇编.docx_第17页
第17页 / 共31页
微机原理实验5汇编.docx_第18页
第18页 / 共31页
微机原理实验5汇编.docx_第19页
第19页 / 共31页
微机原理实验5汇编.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机原理实验5汇编.docx

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

微机原理实验5汇编.docx

微机原理实验5汇编

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

实验目的:

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

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

3、

掌握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芯片工作于单片方式,但可由用户扩展接成级联方式,线路如下所示。

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

系统启动时,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触发器电路

图R-S触发器图实验

(1)线路

实验内容:

一、8259应用实验

(1)

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

主程序

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)

编写程序实现:

⏹当无中断请求时,执行主程序,延时显示“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)画出以上程序流程图,并在程序后面填写相应注释。

 

 

 

 

(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的初始化编程

二、系统中的8253芯片

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

实验内容:

一、计数中断实验

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

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”十个数,系统默认线路如下。

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:

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

注意:

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定时器/计数器的内部工作原理,透彻理解了8253的方式控制字,状态字等功能的实现原理,这是本次实验最大的收获!

并且,掌握了对8253的初始化以及运行的过程。

锻炼。

本次实验比较成功,获益匪浅

 

教师评语:

实验七8255并行接口实验

实验目的:

1、学习并掌握8255的各种工作方式及其应用。

2、学习在系统接口实验单元上构造实验电路。

相关理论知识:

一、8255可编程并行接口芯片介绍

8255是Intel公司生产的通用并行IO接口芯片,它具有ABC三个并行接口,能在以下三种方式下工作:

方式0:

基本输入/输出方式

方式1:

选通输入/输出方式

方式2:

双向选通工作方式

8255工作方式控制字及C口置位/复位控制字如下图所示:

其中:

数据传送方向0—输出,1—输入

二、系统中的8255芯片

8255的数据线、片选信号线、地址线、读写控制线等分别与系统总线相连,其ABC三个端口以排针形式引出,供8255实验使用,其线路如图所示,端口地址为60H~63H。

实验内容及实验步骤:

一、8255接口应用实验

(1)

按图所示实验线路编写程序,使8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。

用一组开关信号接入端口B,端口A输出线接至一组发光二极管上,然后通过对8255芯片编程来实现输入/输出功能。

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK

START:

MOVAL,82H

OUT63h,AL

A1:

INAL,61H

OUT60H,AL

JMPA1

CODEENDS

ENDSTART

实验步骤:

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

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

(3)运行程序,拨动开关组,观察发光二极管与开关组状态的对应关系。

(4)修改程序,实现以下功能应增加什么指令:

1发光状态与开关组状态相反:

NOTAL

2高4位与低4位状态相反:

MOVCL,4RCRAL,CL

 

二、8255接口应用实验

(2)

按图所示实验线路编写程序,使8255端口A工作在方式0并作为输出口。

利用KK1+触发系统的IRQ7中断,进入中断服务后,利用8255的A口输出中断计数状态给LED灯显示,中断10次关闭中断IRQ7并返回系统。

STACKSEGMEN

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2