ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:326.68KB ,
资源ID:12024557      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12024557.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(硬件中断时钟设计微机课程设计.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

硬件中断时钟设计微机课程设计.docx

1、硬件中断时钟设计微机课程设计微机原理课程设计报告设计题目:硬件中断时钟设计 姓名: 班级: 学号: 专业: 指导老师: 2012年1月2日课 程 设 计 说 明 书1.课程设计题目:硬件中断时钟设计2.课程设计内容:利用 PC 系列微机现有的硬件和软件资源编写程序, 以便在显示器屏幕上显示 XX (时) :XX(分) :XX(秒) ,并且每秒钟更新一次显示。 3.课程设计目的:1)掌握 8253 可编程定时器计数器的编程方法。 2)掌握在 PC 机上使用中断方式工作时主程序及中断服务程序的编写方法。 4.课程设计要求:编写程序,利用主机内的8253/8254-2的计数器0产生10ms对称方波输

2、出,该输出送至IRQ0使8259A每10ms产生一次中断,100次中断后秒数加1,然后调整时、分、秒并显示在屏幕上。程序从按下任意键开始显示数据区中存放的时间值,运行中按下空格键则停止运行,并返回DOS。摘要微机原理及应用是一门实践性很强的课程;其课程设计目的在于综合运用所学知 识,全面掌握微型计算机与 DOS 方式的工作原理、编程和使用方法;在设计中,通 过小组协作提出并论证设计方案,进行软件调试,最后获得正确的结果,可以加深和 巩固对理论知识的更好掌握,进一步建立计算机应用系统体概念,初步掌握 DOS 开 发方法,为以后进行实际的软件应用开发奠定良好的基础。 汇编语言是微机原理和接口设计的

3、基础,微机主机和接口所要实现的功能都要通 过汇编语言来实现。尽管汇编语言设计程序有编程效率低的缺点,但其运行效率高, 速度快,并且特别适合很多特殊应用的场合,如加密解密、病毒分析和防治、软件破 解等。这些在应用方面的优点是其他语言不可比拟的,面对硬件的直接控制更是其特 长。因此,在很多高级语言(如 C+)中都可嵌入用汇编语言编写的程序段,以实现 优势互补,发挥各自的长处。 索引关键词:微机原理、DOS、软件调试、汇编语言、程序目 录一 概述4 二 设计内容4三 设计目的4四 方案设计及论证4 4.1设计思路4 4.2硬件原理图及相关说明5 4.2.1 82535 4.2.2 8259A 6 4

4、.3软件流程图及其说明7 4.4功能模快设计说明8 4.5 程序代码9 4.6 程序调试 14 4.6.1 程序调试界面14 4.6.2 程序运行过程14五 心得体会15 六 参考文献161、概述 本设计是利用 Masm for window 集成实验环境来实现的,编写程序,利用主机内 的 82538254-2 的计数器 0 产生 10ms 对称方波输出,该输出送至 IRQ0 使 8259A 每 10ms 产生一次中断,100 次中断后秒数加 1,通过计数器值 count 自减,即从 100 自 减到 0 为止,即是 100*10ms=1s,只有当 COUNT 数值减到 1 时,才是 1s 的

5、时间,通过 秒值+1,重复操作秒个位和“9”比较,如果为真,返回 DOS 显示当前时间的数值; 如果为假,即是进位后秒十位加 1 操作而个位清零操作,然后用上述道理,比较分个 位与“9”的大小,如果为真,返回 DOS 显示当前时间的数值;如果为假,即是进位 后分十位加 1 操作而分个位清零操作,并在 DOS 窗口下进行输出显示。程序从按下 任意键开始显示数据区中存放的时间值, 运行中按下空格键则停止运行, 并返回 DOS。2、设计内容 利用 PC 系列微机现有的硬件和软件资源编写程序, 以便在显示器屏幕上显示 XX (时) :XX(分) :XX(秒) ,并且每秒钟更新一次显示。 3、设计目的

6、1) 掌握 8253 可编程定时器计数器的编程方法。 2)掌握在 PC 机上使用中断方式工作时主程序及中断服务程序的编写方法。 4、方案设计与论证 1.设计思路 IBM PC/XT 系统板上使用了一片 8253-5,其地址为 40H 43H,其中 0 通道在方 式 3 下工作,初值设置 23 小时 59 分 50 秒,每隔 55ms 向中断控制器 8259A 的 IRQ0 端发一次中断请求。此定时中断的用途之一是系统报时。现在借用原有电路,重新设 置定时器、编写中断服务程序来做硬件时钟实验,为此程序开始应首先保护原系统的 08H 中断的中断矢量(中断服务程序入口地址) ,以便程序退出时恢复原系

7、统的设置。 保护原系统的 08H 中断的中断矢量可用 DOS 35H 功能调用读出,并加以适当保存,也 可以用以下指令将中断矢量压入堆栈保存。 具体过程:等待按键按下,调用 DOS 的显示字符串功能,并对中断进行压栈操作 后,建立数据段的可寻址性,通过装载现行的中断服务程序,使用 8253 初始化的 0 通道,3 方式,二进制计数进行方式 3 的 10ms 方波,即每 10ms 中断一次,通过保护原 4 有的 8259A 的中断屏蔽寄存器 IMR 的内存,进行下一步的 IMR 的重写,只开放始终和 键盘的中断处理。进而开中断,运行 TIMER 模块的时间调用及 DOS 显示系统时间的功 能,待

8、 TIMER 模块运行结束之后,关闭中断返回 DOS,程序结束。 CLI ;关中断CLD ;DF=0MOV AX ,0000HMOV DS ,AX ;DS:SI指向08H中断矢量表中的位置MOV SI ,0020HLODSWMOV BX ,AX ;BX:原中断服务程序入口偏移地址LODSW ;AX:原中断服务程序入口的段地址PUSH AX ;压栈保护PUSH BX2.硬件原理图及相关说明8253:这是8253的相关图形,一般8253要实现定时、计数控制大致可采用三种方法:(1) 设计数字逻辑电路来实现定时或计数的要求。即由硬件电路实现的定时器/计数器。(2) 用软件来实现定时和计数的要求。即采

9、用循环方式执行若干条指令,使程序段执行时占用一定的延时时间。(3) 采用可编程定时器/计数器。其定时与计数功能可由程序灵活设定,设定后于CPU并行工作,不占用CPU的时间,可以很好地解决以上两种定时存在的不足,这种方式广泛应用于各种定时或计数场合。8253的工作方式三是方波发生器,方式三的输出为方波,具有“初始化自动重装”功能。向8253写入控制字后,OUT输出变为高电平,在写完计数初值后计数器自动开始对输入时钟CLK计数,OUT输出保持高电平。当计数到一半时,输出变为低电平,直至计数到0,在重装计数初值,OUT端变高开始新一轮计数。8259A:8259A常用于中断优先级管理电路,它的功能有三

10、种:(1) 它可以接受多个外部中断源的中断请求,并进行优先级别判断,选中当前优先级别最高的中断请求,再将此请求送到微处理器的中断输入端。(2) 具有提供中断向量、屏蔽中断输入等功能。(3) 8259A使用单+5V电源供电,有多种中断管理方式,自动提供中断服务程序入口地址,使用灵活方便。3.软件流程图及其说明 图1.0 硬件中断时钟设计流程图硬件中断时钟设计算法具体描述,等待建按下调用DOS的7号功能键,并将中断的中断矢量进行压栈保护,建立数据段的可寻址性,通过装载现行的中断服务程序,使用8253初始化产生10ms方波,每10ms中断一次,保护原有的8259A的中断屏蔽寄存器IMR的内存,进行下

11、一步的IMR的重写。进而开中断,然后调用DOS的6好功能键,通过判断是否有键按下和是否按下的是空格键实现显示时间和关闭中断返回DOS,程序结束。4.功能模快设计说明 模块1: 这部分模块是实现当按下空格键时程序关中断,恢复IMR,重新设置8253中断时间,恢复中断矢量以及开中断。 模块2: 这部分模块是实现当没按键的时候显示时间。 模块3: 这个模块是实现的等待功能 模块4: 根据秒值是否相同来执行循环,但秒值变化了就返回继续执行程序。5.程序代码STACK SEGMENT DB 256 DUP(0)STACK ENDSDATA SEGMENT COUNT DB 100 TENH DB 2 H

12、OUR DB 3: TENM DB 5 MINUTE DB 9 DB : TENS DB 5 SECOND DB 0,0DH,$DATA ENDSCODE SEGMENT START PROC FAR ASSUME CS:CODE PUSH DS MOV AX,0 PUSH AX MOV AH, 07H ;等待键按下,AL=字符的ASCII码 INT 21H ;将中断矢量压入堆栈保存 CLI ;清中断允许位 CLD ;清方向标志位 MOV AX, 0000H MOV DS, AX MOV SI, 0020H ;DS:SI指向08H中断向量 LODSW ;取08中断入口的偏移地址 MOV BX,

13、AX LODSW ;取08中断入口段地址 PUSH AX ;压栈保护 PUSH BX ;将中断矢量压入堆栈保存 MOV AX,DATA ;建立数据段的可寻址性 MOV DS, AX ASSUME DS:DATA ;将向中断矢量写入新地址 MOV AX, 0000H MOV ES, AX MOV DI, 0020H ;ES:DS指向08中断向量存放地址 MOV AX,OFFSET TIMER STOSW ;写入偏移地址 MOV AX,CS STOSW ;写入段地址 ;将向中断矢量写入新地址 MOV AL,00110110B ;8253初始化,0通道,3方式,二进制计数 OUT 43H,AL MO

14、V AX,11932 ;初值11932 OUT 40H, AL MOV AL ,AH OUT 40H, AL IN AL,21H ;读8259的中段屏蔽寄存器IMR PUSH AX ;压栈保护 ;MOV AL, 0FCH STI ;开中断 FOREVER: MOV DL,0FFH ;有键按下吗? MOV AH, 06H INT 21H JZ DISP ;无键按下则转显示DISP CMP AL, 20H ;是空格键吗? JZ EXIT ;是则退出DISP: MOV DX, OFFSET TENH ;不是则显示时间 MOV AH, 09H INT 21H MOV AL, SECOND ;取秒单元值

15、 WAITCHA: CMP AL,SECOND ;改变否? JZ WAITCHA ;没变则等待 JMP FOREVER ;变则转FOREVER EXIT: CLI ;有空格键按下退出 关中断 CLD ;清方向标志位 POP AX OUT 21H,AL ;恢复IMR MOV AL, 36H ;8253初始化,55ms OUT 43H,AL MOV AL, 0 OUT 40H,AL OUT 40H,AL ;恢复中断矢量 MOV AX,0 ;恢复08H中断中断向量 MOV ES, AX MOV DI, 4*8 POP AX STOSW POP AX STOSW STI ;恢复中断矢量 RET TIM

16、ER PROC FAR PUSH AX DEC COUNT JNZ L2 ;不到1秒L2 MOV COUNT, 100 ;到1秒,重置COUNT,并修改时间 INC SECOND CMP SECOND,9 JLE TIMEXT ;如果小于等于9 MOV SECOND,0 INC TENS CMP TENS,6 JL TIMEXT ;如果小于6 MOV TENS,0 INC MINUTE CMP MINUTE,9 JLE TIMEXT ;如果小于等于9 MOV MINUTE ,0 INC TENM CMP TENM,6 ;如果小于6 JL TIMEXT MOV TENM,0 JMP L3 L2:

17、 JMP TIMEXTL3: MOV AL ,HOUR AND AL, 0FH MOV AH, TENH AND AH, 0FH MOV CL, 4 ; ROR AH,CL OR AL,AH ;AH放到AL高四位 ADD AL, 1 DAA CMP AL, 24 JL L1 ;小于24转 不然置0 MOV TENH,0 MOV HOUR ,0 JMP TIMEXT L1: MOV AH,AL AND AL, 0FH OR AL, 30H MOV HOUR, AL MOV CL,4 ROR AH,CL AND AH, 0FH OR AH, 30H MOV TENH,AH TIMEXT: MOV

18、AL, 20H OUT 20H, AL ;发中断结束命令 POP AX IRETTIMER ENDPSTART ENDPCODE ENDSEND START6.程序调试说明(1)程序调试界面(2)程序运行过程打开运行窗口按下任意键显示时间按下空格键停止计时按下任意键退出窗口5、学习心得在本次课程设计中,我的设计题目是硬件中断时钟设计。经过两周的课程设计,我们不但对课本上的知识有了更深的了解和巩固,而且我还学到了平时在课堂上都学习不到的知识,使我对系统的开发过程有了更加完整的认识。 在设计过程中虽然遇到了不少困难,但当我通过自己查资料以及向同学请教在网上询问,在克服了一个又一个难点之后,我的设计

19、正是进入具体操作阶段: 1、设计思路的分析阶段。我根据一些经典的算法再加上我的自我分析, 写出了符合这次设计要求的算法,并就此画出相应的流程图;2、源代码的编写阶段。这一过程我还是参考了不少经典例子,再结合实际需要,运用从课堂上掌握的基本汇 编语言知识,终于完成了初步的源代码;3、代码的调试过程。这算是本次课设的重点 过程之一,因为发现错误并改正错误就靠这一过程来完成,经过老师的指点和多次调试,我终于得到了一个正确的程序,使得设计方案中发现的问题得到解决并成功实现 系统所需功能,那种成就感和满足感足以让我忘记了这些天来的辛苦;4、设计报告的 编写过程。当然这是对本次课程设计的一个总结,在付出那

20、么多努力之后,能看到自 己的劳动成果还是很开心的。 两周的微机原理课程设计在忙碌、紧张、而又充实氛围中度过了,在这短暂的两周时间里,我学到了很多知识,熟悉了好多程序代码,也认识到自己很多不足的地方。 时间虽短,我却收获颇丰,不单单是对于知识的收获,还是对自己的一种肯定。这次课程设计给了我们一次应用自己所学知识的机会,使我微机原理这门课程有更深层次 的理解,让我们深刻体会到了:一个人的力量是有限的,多请教别人,虚心求问是我在以后学习中应该多多发扬的。总之,珍惜每一次课程设计的机会,好好锻炼自己提高自己,才真正达到课程设 计这门课的目的。6、参考文献1 谢微成.微型计算机原理与接口技术.第一版.武

21、汉:华中科技大学出版社,20092 宋杰.微型计算机原理与接口技术课程设计.第一版.北京:机械工业出版社,2006东华理工大学长江学院课程设计评分表学生姓名: 班级: 学号:课程设计题目:项目内容满分实 评选题能结合所学课程知识、有一定的能力训练。符合选题要求(5人一题)10工作量适中,难易度合理10能力水平能熟练应用所学知识,有一定查阅文献及运用文献资料能力10理论依据充分,数据准确,公式推导正确10能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等10能体现创造性思维,或有独特见解10成果质量总体设计正确、合理,各项技术指标符合要求。10说明书综述简练完整,概念清楚、立论正确、技术用语准确、结论严谨合理;分析处理科学、条理分明、语言流畅、结构严谨、版面清晰10设计说明书栏目齐全、合理,符号统一、编号齐全。格式、绘图、表格、插图等规范准确,符合国家标准10有一定篇幅,字符数不少于500010总 分100指导教师评语: 指导教师签名: 年 月 日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1