微机原理与接口技术综合实验电子钟实验报告

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

微机原理综合实验:电子钟

实验要求

8253每1s产生中断请求给8259,中断服务程序利用8255控制数码管,构建一个电子钟。

一、实验原理(相关芯片大致介绍)

1.8254

8254 是Intel 公司生产的可编程间隔定时器,是8253 的改进型,比8253 具有更优良的性能。8254 具有以下基本功能:

(1)有3 个独立的16 位计数器。

(2)每个计数器可按二进制或十进制(BCD)计数。

(3)每个计数器可编程工作于6 种不同工作方式。

(4)8254 每个计数器允许的最高计数频率为10MHz(8253 为2MHz)。

(5)8254 有读回命令(8253 没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。

(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为:n=fCLKi÷fOUTi、其中fCLKi是输入时钟脉冲的频率,fOUTi是输出波形的频率。

2.8259

Intel公司专为控制优先级中断而设计开发的芯片,包括中断源优先级排队、辨别中断源以及提供中断矢量的电路,无需附加任何电路,用户只需对8259 进行编程,就可以管理8 级中断,并选择优先模式和中断请求方式。同时,在不需增加其他电路的情况下,通过多片8259 的级连,能构成多达64 级的矢量中断系统。管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU 传送中断类型号。

3.8255

并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。CPU 和接口之间的数据传送总是并行的,即可以同时传递8 位、16 位或32 位等。8255 可编程外围接口芯片是Intel 公司生产的通用并行I/O 接口芯片,它具有A、B、C 三个并行接口,用+5V 单电源供电,能在以下三种方式下工作:

方式0--基本输入/输出方式、

方式1--选通输入/输出方式、

方式2--双向选通工作方式。

二、设计方案

①:初始化各芯片,选定工作方式。

②:使用功能调用获取当前时间,作为初值装入。

③:8254芯片开始计数,每隔1s产生一个中断信号。

④:8259芯片接受到中断信号,并传给cpu,cpu响应中断。

⑤:返回到③循环执行。

⑥:添加子程序,判断当有按键按下时,终止计时。

三、接线设计

8255 PA0~PA7,PB0~PB7……………………数码管显示

8259IQ1……………………8253OUT

18.432KHZ……………………853CLK

+5V……………………8253GATE

四、源代码

CS0 EQU 3000H ;片选CS0对应的端口始地址

CS2 EQU 3040H ;片选CS2对应的端口始地址

MY8255_A EQU CS0+00H ;8255的A口地址

MY8255_B EQU CS0+01H ;8255的B口地址

MY8255_C EQU CS0+02H ;8255的C口地址

MY8255_MODE EQU CS0+03H ;8255的控制寄存器地址

MY8254_COUNT0 EQU CS2+00H ;8254计数器0端口地址

MY8254_MODE EQU CS2+03H ;8254控制寄存器端口地址

IRQ_IVADD EQU 01C8H ;IRQ10对应的中断矢量地址

IRQ_OCW1 EQU 0A1H ;IRQ10对应PC机内部8259的OCW1地址

IRQ_OCW2 EQU 0A0H ;IRQ10对应PC机内部8259的OCW2地址

IRQ_IM EQU 0FBH ;IRQ10对应的中断屏蔽字

STACK1 SEGMENT STACK

DW 256 DUP(?)

STACK1 ENDS

DATA SEGMENT

CS_CHUSHI DW ? ;保存IRQ10原中断处理程序入口段地址的变量

IP_CHUSHI DW ? ;保存IRQ10原中断处理程序入口偏移地址的变量

IM_CHUSHI DB ? ;保存IRQ10原中断屏蔽字的变量

HOUR DB 0

MINUTE DB 0

SECOND DB 0

DTABLE

DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H

DATA ENDS ;键值表,0~F对应的7段数码管的段位值

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

CLI ;清除中断标志位

MOV AX,0000H ;替换IRQ10的中断矢量

MOV ES,AX

MOV DI,IRQ_IVADD

MOV AX,ES:[DI]

MOV IP_CHUSHI,AX ;保存IRQ10原中断处理程序入口偏移地址 MOV AX,OFFSET MYISR

MOV ES:[DI],AX ;设置当前中断处理程序入口偏移地址

ADD DI,2

MOV AX,ES:[DI]

MOV CS_CHUSHI,AX ;保存IRQ10原中断处理程序入口段地址 MOV AX,SEG MYISR

MOV ES:[DI],AX ;设置当前中断处理程序入口段地址

MOV DX,IRQ_OCW1 ;设置中断屏蔽寄存器,打开IRQ10的屏蔽位 IN AL,DX

MOV IM_CHUSHI,AL ;保存IRQ10原中断屏蔽字

AND AL,IRQ_IM

OUT DX,AL

MOV AH,2CH ;获取现在的时间

INT 21H

MOV second,DH

MOV MINUTE,CL

MOV HOUR,CH

STI

MOV SI,3000H ;建立缓冲区,存放要显示的键值

MOV AL,00H ;先初始化键值为0

MOV [SI],AL

MOV [SI+1],AL

MOV [SI+2],AL

MOV [SI+3],AL

MOV [SI+4],AL

MOV [SI+5],AL

MOV DI,3005H

MOV DX,MY8255_MODE ;初始化8255工作方式

MOV AL,81H ;方式0,A口、B口输出,C口低4位输入 OUT DX,AL

MOV DX,MY8254_MODE ;初始化8254工作方式

MOV AL,34H ;计数器0,方式2

OUT DX,AL

相关文档
最新文档