《微机系统与汇编语言》 课程设计 实时时钟的设计与实现

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

《微机系统与汇编语言》

课程设计

题目:实时时钟的设计与实现

姓名:

班级:

学号:

2013年 12 月 25 日

内容要求:

一.设计内容

设计并实现实时时钟并通过LED显示时、分、秒。

二.设计要求

①、通过8254产生1s信号中断信号。

②、每秒钟产生中断,在中断子程序中修改时间。

③、在LED上显示时、分、秒。

④、通过键盘修改时钟。

三. 总体设计

1. 设计思路:

初始化8259A,将中断子程序入口地址写入中断向量表.

使用8254的计数器0,方式0计数,输入CLK0=18.432KHz,计数初值等于48H.端口OUT0连接到SIR1(即从8259A的IR1).一秒钟后,输出高电平,请求中断,中断响应后,中断子程序将内存中存储的时间的秒+1,同时控制分和时进位.通过转换数据格式,将时间打入内存中6个LED灯对应的位置,同时8254再次开始计数.中断结束.

使用8255A控制LED灯的显示,循环读取内存中的6位LED灯存储信息,显示、清屏、扫描键盘.通过键盘调节时间,读取按键码,调整数据格式,修改内存中的时间,在下一秒刷新时间时,显示修改后的时间.

注:(第一次用8259A的主片的MIR7接口,第二次使用从片的SIR1接口.)

(1)如果使用8259A的主片的MIR7接口请求中断,向中断向量表的003CH和003EH分别写入中断服务子程序的偏移地址和段基址,初始化主片的ICW2=08H,其中,中断类型码的高五位是00001B(计算方法是3CH÷4),中断服务子程序结束时,OUT 20H,20H ;(结束中断).

(2)如果使用8259A的从片的SIR1接口请求中断,向中断向量表的00C4H和00C6H分别写入中断服务子程序的偏移地址和段基址,初始化主片的方法不变,初始化从片的ICW2=30H,中断类型码高五位是00110B(计算方法是C4H÷4),中断服务子程序结束时,执行OUT 0A0H,20H和OUT 20H,20H ;(结束中断).

2.硬件连接图

图一

图二

图三

3.软件流程图

4.程序代码

代码如下:

MY8255_A EQU 0600H

MY8255_B EQU 0602H

MY8255_C EQU 0604H

MY8255_CON EQU 0606H

A8254 EQU 06C0H ;计数器0的接口地址

CON8254 EQU 06C6H ;控制口

SSTACK SEGMENT STACK

DW 64 DUP(?)

SSTACK ENDS

DATA SEGMENT

TEMPWORD DW 0000H ;放置当前要调的是哪一位

TEMPT DB 01H,00H,00H ;临时数据

TIME DB 00H,00H,00H ;时分秒

DTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;定义16进制数字DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H

DATA ENDS

CODE EGMENT

ASSUME CS:CODE,DS:DATA

START:

PUSH DS

PUSH SI

MOV AX,0000H

MOV DS,AX

MOV AX,OFFSET IRQ7 ;取中断入口地址

MOV SI,00C4H ;中断矢量地址

MOV [SI],AX ;填IRQ7的偏移矢量

MOV AX,CS ;段地址

MOV SI,00C6H

MOV [SI],AX ;填IRQ7的段地址矢量

CLI

POP SI

POP DS

;初始化主片8259

MOV AL,11H

OUT 20H,AL ;ICW1

MOV AL,08H

OUT 21H,AL ;ICW2

MOV AL,04H ; 表明,IR2接口上接从片

OUT 21H,AL ;ICW3

MOV AL,01H

OUT 21H,AL ;ICW4

;从片

MOV AL,11H

OUT 0A0H,AL ;ICW1

MOV AL,30H

OUT 0A1H,AL ;ICW2

MOV AL,02H ;02H = 0000 0010 B

OUT 0A1H,AL ;ICW3 (中断类型码是010 ,中断源是IR2)

MOV AL,01H

OUT 0A1H,AL ;ICW4 = 1010 0001 B

MOV AL,0FDH

OUT 0A1H,AL ;OCW1 = 1111 1101 B (=0FDH) 只有IR1 不被屏蔽MOV AL,6BH ; = 0110 1011 B

OUT 21H,AL ;主8259 OCW1 (IR7,IR4,IR2不被屏蔽)

STI

;以下内容为时钟显示

MOV AX,DATA

MOV DS,AX

MOV SI,3000H

MOV AL,00H

MOV [SI],AL ;清显示缓冲

MOV [SI+1],AL

MOV [SI+2],AL

MOV [SI+3],AL

MOV [SI+4],AL ;第二个LED

MOV [SI+5],AL ;第一个LED

LEA DI,TIME

MOV DX,MY8255_CON ;写8255控制字

MOV AL,81H ;10000001B A口,B口方式0,C口下半部输入,其它口做输出OUT DX,AL

;计数器

PUSH DX

PUSH AX

MOV DX,CON8254

MOV AL,00110000B ;计数器0,16位计数,方式0,2进制

OUT DX,AL

MOV DX,A8254

MOV AL,00H ;计数器初值是18432(十进制)

OUT DX,AL ;写低8位

相关文档
最新文档