硬件中断时钟设计(微机课程设计)

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

微机原理课程设计

报告

设计题目:硬件中断时钟设计

姓名:

班级:

学号:

专业:

指导老师:

2012年1月2日

课程设计说明书

1.课程设计题目:

硬件中断时钟设计

2.课程设计内容:

利用 PC 系列微机现有的硬件和软件资源编写程序,以便在显示器屏幕上显示 XX (时):XX(分):XX(秒),并且每秒钟更新一次显示。

3.课程设计目的:

1)掌握 8253 可编程定时器/计数器的编程方法。

2)掌握在 PC 机上使用中断方式工作时主程序及中断服务程序的编写方法。

4.课程设计要求:

编写程序,利用主机内的8253/8254-2的计数器0产生10ms对称方波输出,该输出送至IRQ0使8259A每10ms产生一次中断,100次中断后秒数加1,然后调整时、分、秒并显示在屏幕上。程序从按下任意键开始显示数据区中存放的时间值,运行中按下空格键则停止运行,并返回DOS。

摘要

微机原理及应用是一门实践性很强的课程;其课程设计目的在于综合运用所学知识,全面掌握微型计算机与 DOS 方式的工作原理、编程和使用方法;在设计中,通过小组协作提出并论证设计方案,进行软件调试,最后获得正确的结果,可以加深和巩固对理论知识的更好掌握,进一步建立计算机应用系统体概念,初步掌握 DOS 开发方法,为以后进行实际的软件应用开发奠定良好的基础。汇编语言是微机原理和接口设计的基础,微机主机和接口所要实现的功能都要通过汇编语言来实现。尽管汇编语言设计程序有编程效率低的缺点,但其运行效率高,速度快,并且特别适合很多特殊应用的场合,如加密解密、病毒分析和防治、软件破解等。这些在应用方面的优点是其他语言不可比拟的,面对硬件的直接控制更是其特长。因此,在很多高级语言(如 C++)中都可嵌入用汇编语言编写的程序段,以实现优势互补,发挥各自的长处。

索引关键词:微机原理、DOS、软件调试、汇编语言、程序

目录

一概述 (4)

二设计内容 (4)

三设计目的 (4)

四方案设计及论证 (4)

4.1设计思路 (4)

4.2硬件原理图及相关说明 (5)

4.2.1 8253 (5)

4.2.2 8259A (6)

4.3软件流程图及其说明 (7)

4.4功能模快设计说明 (8)

4.5 程序代码 (9)

4.6 程序调试 (14)

4.6.1 程序调试界面 (14)

4.6.2 程序运行过程 (14)

五心得体会 (15)

六参考文献 (16)

一、概述

本设计是利用 Masm for window 集成实验环境来实现的,编写程序,利用主机内的 8253/8254-2 的计数器 0 产生 10ms 对称方波输出,该输出送至IRQ0 使 8259A 每 10ms 产生一次中断,100 次中断后秒数加 1,通过计数器值count 自减,即从 100 自减到 0 为止,即是 100*10ms=1s,只有当 COUNT 数值减到 1 时,才是 1s 的时间,通过秒值+1,重复操作秒个位和“9”比较,如果为真,返回 DOS 显示当前时间的数值;如果为假,即是进位后秒十位加 1 操作而个位清零操作,然后用上述道理,比较分个位与“9”的大小,如果为真,返回 DOS 显示当前时间的数值;如果为假,即是进位后分十位加 1 操作而分个位清零操作,并在 DOS 窗口下进行输出显示。程序从按下任意键开始显示数据区中存放的时间值,运行中按下空格键则停止运行,并返回 DOS。

二、设计内容

利用 PC 系列微机现有的硬件和软件资源编写程序,以便在显示器屏幕上显示 XX (时):XX(分):XX(秒),并且每秒钟更新一次显示。

三、设计目的

1)掌握 8253 可编程定时器/计数器的编程方法。

2)掌握在 PC 机上使用中断方式工作时主程序及中断服务程序的编写方法。

四、方案设计与论证

1.设计思路

IBM PC/XT 系统板上使用了一片 8253-5,其地址为 40H ~ 43H,其中 0 通道在方式 3 下工作,初值设置 23 小时 59 分 50 秒,每隔 55ms 向中断控制器 8259A 的 IRQ0 端发一次中断请求。此定时中断的用途之一是系统报时。现在借用原有电路,重新设置定时器、编写中断服务程序来做硬件时钟实验,为此程序开始应首先保护原系统的 08H 中断的中断矢量(中断服务程序入口地址),以便程序退出时恢复原系统的设置。保护原系统的 08H 中断的中断矢量可用 DOS 35H 功能调用读出,并加以适当保存,也可以用以下指令将中断矢量压入堆栈保存。具体过程:等待按键按下,调用 DOS 的显示字符串功能,并对中断进行压栈操作后,建立数据段的可寻址性,通过装载现行的中断服务程序,使用 8253 初始化的 0 通道,3 方式,二进制计数进行方式 3 的 10ms 方波,即每 10ms 中断一次,通过保护原 4 有的 8259A 的中断屏蔽寄存器 IMR 的内存,进行下一步的 IMR 的重写,只开放始终和键盘的中断处理。进而开中断,运行 TIMER 模块的时间调用及 DOS 显示系统时间的功能,待 TIMER 模块运行结束之后,关闭中断返回 DOS,程序结束。

CLI ;关中断

CLD ;DF=0

MOV AX ,0000H

MOV DS ,AX ;DS:SI指向08H中断矢量表中的位置

MOV SI ,0020H

LODSW

MOV BX ,AX ;BX:原中断服务程序入口偏移地址

LODSW ;AX:原中断服务程序入口的段地址

PUSH AX ;压栈保护

PUSH BX

2.硬件原理图及相关说明

8253:

这是8253的相关图形,一般8253要实现定时、计数控制大致可采用三种方法:

(1)设计数字逻辑电路来实现定时或计数的要求。即由硬件电路实现的定时器/计数器。

(2)用软件来实现定时和计数的要求。即采用循环方式执行若干条指令,使程序段执行时占用一定的延时时间。

(3)采用可编程定时器/计数器。其定时与计数功能可由程序灵活设定,设定后于CPU并行工作,不占用CPU的时间,可以很好地解决以上两种定时存在的不足,这种方式广泛应用于各种定时或计数场合。

8253的工作方式三是方波发生器,方式三的输出为方波,具有“初始化自动重装”功能。向8253写入控制字后,OUT输出变为高电平,在写完计数初值后计数器自动开始对输入时钟CLK计数,OUT输出保持高电平。当计数到一半时,

相关文档
最新文档