《微机系统与汇编语言》 课程设计 实时时钟的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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位