北理工计算机原理与应用实验二

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本科实验报告实验名称:计算机原理与应用实验二

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

一、实验目的

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

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

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

IRQ)。

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

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

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

二、实验内容与步骤

1) 接线(参考):

PB7~PB0/8255 接dp~a /LED 数码管

CS /8254 接Y0 /IO 地址

PC3~PC0 /8255 接S3~S0/LED 数码管

CS/8255 接Y1 /IO 地址

IRQ /总线接OUT1/8254

GATE0 /8254 接+5V

CLK0 /8254 接1M时钟

OUT0 /8254 接CLK1 /8254

GATE1 /8254 接+5V

三、实验原理

1、PC 机用户可使用的硬件中断只有可屏蔽中断,由8259 中断控制器管理。中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU 发出可屏蔽中断请求。IBMPC、PC/XT 机内有一片8259 中断控制器对外可以提供8个中断源:

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

IRQ0 08H 时钟

IRQ1 09H 键盘

IRQ2 0AH 保留

IRQ3 OBH 串行口2

IRQ4 0CH 串行口1

IRQ5 0DH 硬盘

IRQ6 0EH 软盘

IRQ7 0FH 并行打印机

8 个中断源的中断请求信号线IRQ0~IRQ7 在主机的62 线ISA 总线插座中可以引出,系统已设定中断请求信号为“边沿触发”,普通结束方式。对于PC/AT 及286 以上微机内又扩展了一片8259 中断控制,IRQ2 用于两片8259 之间级连,对外可以提供16 个中断源:

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

IRQ8 070H 实时时钟

IRQ9 071H 用户中断

IRQ10 072H 保留

IRQ11 O73H 保留

IRQ12 074H 保留

IRQ13 075H 协处理器

IRQ14 076H 硬盘

IRQ15 077H 保留

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

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

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

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

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

XX:XX

(分秒)

其中X 为一数码管。

6、数码管显示接口电路如图所示。实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。

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

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

7、程序流程图

四、实验代码:

p8259 equ 20h ;端口首地址

p8255 equ 288h ;端口首地址

p8253 equ 280h ;IO Y1

data segment

led db 3fh,06h,5bh,4fh,

66h,6dh,7dh,07h,7fh,6fh ;数码管

sec1 db 0

sec2 db 0

min1 db 0

min2 db 0

mes db 42h

Old_0A DW 0,0 ;原中断向量 Old_8259 DB 0

data ends

stacks segment

db 64 dup (0)

stacks ends

code segment

assume cs:code,ds:data,es:data start:

mov ax,data

mov ds,ax

cli;关闭中断

mov al,00110110b

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

out dx,al

mov ax,10000

mov dx,p8253

out dx,al

mov al,ah ;先赋高八位再赋低八位

out dx,al

mov al,01110110b

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

out dx,al

mov ax,100

mov dx,p8253+1

out dx,al

mov al,ah ;先赋高八位再赋低八位

out dx,al ;设置中断向量表 PUSH ES

PUSH BX

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

mov ah,35h

INT 21H ;读中断向量表

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

MOV Old_0A,BX

POP BX

POP ES

push ds

mov al,0bh ; 写新中断向量

mov ah,25h

mov dx,seg INT_0A

mov ds,dx

mov dx,offset INT_0A

int 21h

pop ds

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

mov dx,p8255+3

out dx,al

in al,p8259+1 ;8259奇地址中断向量屏蔽

mov old_8259,al ;字设置保护原屏蔽字

and al,11110111b ;开IRQ3

out p8259,al

sti ;开中断

play:

lea bx,led ;led段码

mov dl,sec1 ;秒个位

mov dh,0

mov si,dx

mov al,[bx][si]

mov dx,p8255+1 ;点亮led

out dx,al

mov ah,00001110b

mov al,ah

相关文档
最新文档