北京理工大学微机原理实验报告二

 

本科实验报告

实验名称:       利用中断方式设计数字时钟                

 

 

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

一、 实验目的

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

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

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

IRQ)。

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

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

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

二、 实验内容与步骤

接线:

三、 实验原理

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

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

IRQ0  08H       时钟

IRQ1  09H       键盘

IRQ2  0AH       保留

IRQ3  0BH       串行口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   073H   保留

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 振荡器来提供。见图1。

 

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

( 分 秒)

其中 X 为一数码管。

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

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

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

 

6、程序流程图如图3:

主程序流程图

 

四、实验代码及注释

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 

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

    out dx,al 

    PUSH CX

    MOV CX,00f00h                       ;延时  

delay1:

    LOOP delay1

    POP CX  

    mov ah,00001111b

    mov al,ah 

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

    out dx,al 

    mov dl,sec2                           ;秒十位 

    mov dh,0 

    mov si,dx

    mov al,[bx][si]

    mov dx,p8255+1                       ;点亮led 

    out dx,al

    mov ah,00001101b    

    mov al,ah

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

    out dx,al  

    PUSH CX

    MOV CX,00f00h; 延时  

delay2:

    LOOP delay2      

    POP CX

    mov ah,00001111b     

    mov al,ah 

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

    out dx,al 

    mov dl,min1                           ;分个位 

    mov dh,0

    mov si,dx

    mov al,[bx][si]       

    mov dx,p8255+1                       ;点亮led 

    out dx,al

    mov ah,00001011b    

    mov al,ah

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

    out dx,al 

    PUSH CX

    MOV CX,00f00h                       ;延时  

delay3:

    LOOP delay3      

    POP CX  

    mov ah,00001111b    

    mov al,ah 

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

    out dx,al

    mov dl,min2                           ;分十位

    mov dh,0 

    mov si,dx

    mov al,[bx][si]      

    mov dx,p8255+1                       ;点亮led 

    out dx,al

    mov ah,00000111b     

    mov al,ah 

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

    out dx,al 

    PUSH CX

    MOV CX,00f00h ;延时  

delay4:

    LOOP delay4      

    POP CX  

    mov ah,00001111b     

    mov al,ah

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

    out dx,al 

    jmp play 

    mov ah,4ch

    int 21h

INT_0A proc near                          ;中断服务子程序     

    cmp sec1,9 

    jz  int1 

    inc sec1

    jmp exit

int1: 

    mov sec1,0 

    inc sec2 

    cmp sec2,6

    jnz exit

    mov sec2,0

    inc min1 

    cmp min1,10

    jnz exit

    mov min1,0

    inc min2 

    cmp min2,6

    jnz exit 

    mov min2,0

exit: 

    mov al,20h 

    out 20h,al

    iret

INT_0A  endp

code ends

end start

五、实验心得

通过这次实验,掌握了PC 机中断处理系统的基本原理,熟悉了定时/计数器8254 工作原理及其编程方法。还复习了数码管显示原理,掌握数码管显示接口技术。学习到数字时钟原理, 练习了中断控制器8259 管理。对中断有了全面的理解和掌握。

 

第二篇:北京理工大学物理化学课程实验报告 2

       北京理工大学物理化学课程实验报告

化工与环境 学院   化工与制药类 专业       20##   年    5月   20日

 
相关推荐