计算机原理与接口技术实验1.docx

上传人:b****5 文档编号:5666337 上传时间:2022-12-31 格式:DOCX 页数:11 大小:415.44KB
下载 相关 举报
计算机原理与接口技术实验1.docx_第1页
第1页 / 共11页
计算机原理与接口技术实验1.docx_第2页
第2页 / 共11页
计算机原理与接口技术实验1.docx_第3页
第3页 / 共11页
计算机原理与接口技术实验1.docx_第4页
第4页 / 共11页
计算机原理与接口技术实验1.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

计算机原理与接口技术实验1.docx

《计算机原理与接口技术实验1.docx》由会员分享,可在线阅读,更多相关《计算机原理与接口技术实验1.docx(11页珍藏版)》请在冰豆网上搜索。

计算机原理与接口技术实验1.docx

计算机原理与接口技术实验1

本科实验报告

实验名称:

利用中断方式设计数字时钟

课程名称:

计算机原理与接口技术实验

实验时间:

2014.5.19

任课教师:

实验地点:

信息系统及安全

对抗实验中心

实验教师:

实验类型:

□原理验证

■综合设计

□自主创新

学生姓名:

学号/班级:

组号:

学院:

同组搭档:

专业:

成绩:

实验二利用中断方式设计数字时钟

一、实验目的

1.掌握PC机中断处理系统的基本原理。

2.熟悉定时/计数器8254工作原理及其编程方法。

3.利用实验板上的8254定时器为中断源发中断申请,中断请求用IRQ3(系统总线区的IRQ)。

4.熟悉数码管显示原理,掌握数码管显示接口技术。

5.学习数字时钟原理,实现数字时钟。

6.掌握中断控制器8259管理。

二、实验内容与步骤

1.接线:

三、实验原理

1.PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。

中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。

IBMPC、PC/XT机内有一片8259中断控制器对外可以提供8个中断源:

中断源中断类型号中断功能

IRQ008H时钟

IRQ109H键盘

IRQ20AH保留

IRQ3OBH串行口2

IRQ40CH串行口1

IRQ50DH硬盘

IRQ60EH软盘

IRQ70FH并行打印机

8个中断源的中断请求信号线IRQ0~IRQ7在主机的62线ISA总线插座中可以引出,系统已设定中断请求信号为“边沿触发”,普通结束方式。

对于PC/AT及286以上微机内又扩展了一片8259中断控制,IRQ2用于两片8259之间级连,对外可以提供16个中断源:

中断源中断类型号中断功能

IRQ8070H实时时钟

IRQ9071H用户中断

IRQ10072H保留

IRQ11O73H保留

IRQ12074H保留

IRQ13075H协处理器

IRQ14076H硬盘

IRQ15077H保留

实验系统总线区的IRQ接到了3号中断IRQ3上,即进行中断实验时,所用中断类型号为0BH。

2、中断控制器8259可利用系统初始化设定,如不进行新的初始化,只需对8259中断控制器的屏蔽寄存器设定IRQ3为中断允许,其他原有中断允许保持不变。

3、将实验板上的8253的通道,设定为10ms周期信号发生器,该芯片的通道1设定为计数器,其输入来自定时器通道0的输出,利用通道1的计数器输出作为IRQ3中断请求信号。

4、8254定时器的CLK0由实验板上的1MHZ振荡器来提供。

见图1。

5、编写中断服务程序,进行数字钟显示:

XX:

XX

(分:

秒)

其中X为一位数码管。

6、数码管显示接口电路如图2所示。

实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。

实验时用PB7~PB0/8255接dp~a/LED数码管,PC3~PC0/8255接S3~S0/LED数码管。

七段数码管的字型代码表如下表:

6.程序流程图如图3

四、实验心得与体会

本次实验主要是在掌握8255的基础上使用定时器8254进行操作,尤其是对应用终端请求方面。

由于计算机原理与接口技术的授课老师在实验之前对本次实验进行了比较详细的讲解,再加上课后我们对相关中断原理及代码的认识、对数码管数字时钟原理的掌握,另外在上课时老师对实验的代码进行了部分书写演示,大大降低了本次实验带给我们本身的难度。

整体上说,本次实验难度很大,流程也较为简单,实验做得速度也较快。

这也提示了我,只要在实验前对实验有充足的了解,做了充分的准备,可以顺利的快速的完成实验。

 

附:

实验代码

p8259equ20h

p8255equ288h

p8253equ280h;IOY1

datasegment

leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;数码管0-9

sec1db0

sec2db0

min1db0

min2db0

mesdb42h

Old_0ADW0,0;原中断向量

Old_8259DB0

dataends

stackssegment

db64dup(0)

stacksends

codesegment

assumecs:

code,ds:

data,es:

data

start:

movax,data

movds,ax

cli

moval,00110110b

movdx,p8253+3;计数器0,工作在模式3

outdx,al

movax,2710h

movdx,p8253

outdx,al

moval,ah;先赋高八位再赋低八位

outdx,al

moval,01110110b

movdx,p8253+3;计数器1,工作在模式3

outdx,al

movax,100

movdx,p8253+1

outdx,al

moval,ah;先赋高八位再赋低八位

outdx,al

;设置中断向量表

PUSHES

PUSHBX

MOVAl,0BH;保护原中断向量,0B中断类型号

movah,35h

INT21H;读中断向量表

MOVOld_0A+2,ES;ES为段地址,BX为段偏移地址

MOVOld_0A,BX

POPBX

POPES

pushds

moval,0bh;写新中断向量

movah,25h

movdx,segINT_0A

movds,dx

movdx,offsetINT_0A

int21h

popds

moval,10000000b;对8255进行设置,PB/PC输出

movdx,p8255+3

outdx,al

inal,p8259+1;8259奇地址?

中断向量屏蔽

movold_8259,al;字设置保护原屏蔽字

andal,11110111b;开IRQ3

outp8259,al

sti;开中断

play:

leabx,led;led段码

movdl,sec1;秒个位

movdh,0

movsi,dx

moval,[bx][si]

movdx,p8255+1;点亮led

outdx,al

movah,00000001b

moval,ah

movdx,p8255+2;pc输出选通信号

outdx,al

PUSHCX

MOVCX,00f00h;延时

delay1:

LOOPdelay1

POPCX

movah,00000000b

moval,ah

movdx,p8255+2;pc输出选通信号

outdx,al

movdl,sec2;秒十位

movdh,0

movsi,dx

moval,[bx][si]

movdx,p8255+1;点亮led

outdx,al

movah,00000010b

moval,ah

movdx,p8255+2;pc输出选通信号

outdx,al

PUSHCX

MOVCX,00f00h;延时

delay2:

LOOPdelay2

POPCX

movah,00000000b

moval,ah

movdx,p8255+2;pc输出选通信号

outdx,al

movdl,min1;分个位

movdh,0

movsi,dx

moval,[bx][si]

movdx,p8255+1;点亮led

outdx,al

movah,00000100b

moval,ah

movdx,p8255+2;pc输出选通信号

outdx,al

PUSHCX

MOVCX,00f00h;延时

delay3:

LOOPdelay3

POPCX

movah,00000000b

moval,ah

movdx,p8255+2;pc输出选通信号

outdx,al

movdl,min2;分十位

movdh,0

movsi,dx

moval,[bx][si]

movdx,p8255+1;点亮led

outdx,al

movah,00001000b

moval,ah

movdx,p8255+2;pc输出选通信号

outdx,al

PUSHCX

MOVCX,00f00h;延时

delay4:

LOOPdelay4

POPCX

movah,00000000b

moval,ah

movdx,p8255+2;pc输出选通信号

outdx,al

jmpplay

movah,4ch

int21h

 

INT_0Aprocnear;中断服务子程序

cmpsec1,9

jzint1

incsec1

jmpexit

int1:

movsec1,0

incsec2

cmpsec2,6

jnzexit

movsec2,0

incmin1

cmpmin1,10

jnzexit

movmin1,0

incmin2

cmpmin2,6

jnzexit

movmin2,0

exit:

moval,20h

out20h,al

iret

INT_0Aendp

codeends

endstart

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1