硬件中断时钟设计_第1页
硬件中断时钟设计_第2页
硬件中断时钟设计_第3页
硬件中断时钟设计_第4页
硬件中断时钟设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、计程序有编程效率低的缺点,但其运行效率高,速 度快,并且特别适合很多特殊应用的场合,如加密解密、病毒分 析和防治、软件破 解等。这些在应用方面的优点是其他语言不 可比拟的,面对硬件的直接控制更是其特 长。因此,在很多高 级语言(如C+)中都可嵌入用汇编语言编写的程序段,以实现 优势互补,发挥各自的长处。索引关键词:微机原理、DOS、软件调试、汇编语言、程序目录 TOC o 1-5 h z 一概述4 HYPERLINK l bookmark37 o Current Document 二设计内容4 HYPERLINK l bookmark41 o Current Document 三设计目的4 H

4、YPERLINK l bookmark47 o Current Document 四 方案设计及论证4 HYPERLINK l bookmark51 o Current Document 4.1设计思路4 HYPERLINK l bookmark55 o Current Document 4.2硬件原理图及相关说明5825358259A 6 HYPERLINK l bookmark65 o Current Document 4.3软件流程图及其说明7 HYPERLINK l bookmark69 o Current Document 4.4功能模快设计说明8 HYPERLINK l bookm

5、ark73 o Current Document 4.5程序代码94.6程序调试144.6.1程序调试界面14程序运行过程14五心得体会15 HYPERLINK l bookmark91 o Current Document 六参考文献16_、概述本设计是利用Masm for window集成实验环境来实现的,编写程序,利用 主机内的8253 / 8254-2的计数器0产生10ms对称方波输出,该输出送至 IRQ0使8259A每10ms产生一次中断,100次中断后秒数加1,通过计数器值 count自减,即从100自减到0为止,即是100*10ms=1s,只有当COUNT数 值减到1时,才是1s

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

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

8、也可以用以下指令将中断矢 量压入堆栈保存。具体过程:等待按键按下,调用DOS的显示字符串功能,并 对中断进行压栈操作 后,建立数据段的可寻址性,通过装载现行的中断服务程 序,使用8253初始化的0通道,3方式,二进制计数进行方式3的10ms方 波,即每10ms中断一次,通过保护原4有的8259A的中断屏蔽寄存器IMR的 内存,进行下一步的IMR的重写,只开放始终和 键盘的中断处理。进而开中断, 运行TIMER模块的时间调用及DOS显示系统时间的功 能,待TIMER模块运行 结束之后,关闭中断返回DOS,程序结束。CLI;关中断CLD; DF=0MOV AX , 0000HMOV DS,AX;

9、DS: SI指向08H中断矢量表中的位置MOV SI , 0020HLODSWMOV BX , AX;BX:原中断服务程序入口偏移地址LODSW;AX:原中断服务程序入口的段地址PUSH AX;压栈保护PUSH BX硬件原理图及相关说明8253:数据总婿 籍中器控制字寄存器读/写 谡辑内部数据总践M瓯*. CLK1GATE1CUT1计数通道1D7A1D6 *D5 3A4D3 5D2 7D0 8CLK0 9OUTO 11撕封12CLE2氏GATE2OUTZ.HI 10. 2韵*引脚图Vcc姬CSA1AD cm oirrz 血TEZ CEElGATEi 0UT110. 1欧53内部结构框图这是82

10、53的相关图形,一般8253要实现定时、计数控制大致可采用三种 方法:(1)设计数字逻辑电路来实现定时或计数的要求。即由硬件电路实现的定时器 /计数器。(2)用软件来实现定时和计数的要求。即采用循环方式执行若干条指令,使程 序段执行时占用一定的延时时间。(3)采用可编程定时器/计数器。其定时与计数功能可由程序灵活设定,设定 后于CPU并行工作,不占用CPU的时间,可以很好地解决以上两种定时存 在的不足,这种方式广泛应用于各种定时或计数场合。8253的工作方式三是方波发生器,方式三的输出为方波,具有“初始化自 动重装”功能。向8253写入控制字后,OUT输出变为高电平,在写完计数初值 后计数器自

11、动开始对输入时钟CLK计数,OUT输出保持高电平。当计数到一半时,输出变为低电平,直至计数到0,在重装计数初值,OUT端变高开始新一轮计数。8259A:图6.9眦59A内部结构及引脚信号8259A常用于中断优先级管理电路,它的功能有三种:(1)它可以接受多个外部中断源的中断请求,并进行优先级别判断,选中当前 优先级别最高的中断请求,再将此请求送到微处理器的中断输入端。(2)具有提供中断向量、屏蔽中断输入等功能。(3)8259A使用单+5V电源供电,有多种中断管理方式,自动提供中断服务程 序入口地址,使用灵活方便。软件流程图及其说明开始等待键按下(DOS7号调用)取原8H中断的中断矢量并压栈保护

12、建立数据段的可寻址性装载现在的中断服务程序T8253初始化产生10ms方波,10ms中断一次保护原8259A的IMR(中断屏蔽寄存器)内容重写IMR,只开放时钟和键盘中断开中断检测键盘(DQS6号调用)=二 有键按下? _二二&F关中断1F恢复IMR1重新设置8253, 55ms中断一次显示时间值(DOS9号调用)1取消秒Y 二 口-一-.是空格键?一一N小恢复原中断矢景1F开中断1F返回DOS1结束二一一秒值变否? _- WNY图1.0硬件中断时钟设计流程图硬件中断时钟设计算法具体描述,等待建按下调用DOS的7号功能键,并将 中断的中断矢量进行压栈保护,建立数据段的可寻址性,通过装载现行的中

13、断服 务程序,使用8253初始化产生10ms方波,每10ms中断一次,保护原有的8259A 的中断屏蔽寄存器IMR的内存,进行下一步的IMR的重写。进而开中断,然后调 用DOS的6好功能键,通过判断是否有键按下和是否按下的是空格键实现显示时 间和关闭中断返回DOS,程序结束。功能模快设计说明模块1:这部分模块是实现当按下空格键时程序关中断,恢复IMR,重新设置8253中 断时间,恢复中断矢量以及开中断。模块2:有键按下?N一显示时间值(DOS9号调用)取消秒这部分模块是实现当没按键的时候显示时间。模块3:秒值变否?这个模块是实现的等待功能模块4:一检测键盘(DOS6号调用)Y秒值变否?根据秒值

14、是否相同来执行循环,但秒值变化了就返回继续执行程序。程序代码STACK SEGMENTDB 256 DUP(0)STACK ENDSDATASEGMENTCOUNT DB 100TENH DB 2HOUR DB 3:TENM DB 5MINUTE DB 9DB :TENS DB 5SECOND DB 0,0DH,$DATAENDSCODE SEGMENTSTART PROC FARASSUME CS:CODEPUSH DSMOV AX,0PUSH AXMOV AH, 07H ;等待键按下,AL=字符的ASCII码INT 21H ;将中断矢量压入堆栈保存CLI;清中断允许位CLD ;清方向标志位

15、MOV AX, 0000HMOV DS, AXMOV SI, 0020H ;DS: SI指向 08H 中断向量LODSW ;取08中断入口的偏移地址MOV BX,AXLODSW ;取08中断入口段地址PUSH AX ;压栈保护PUSH BX;将中断矢量压入堆栈保存MOV AX,DATA;建立数据段的可寻址性MOV DS, AXASSUME DS:DATA;将向中断矢量写入新地址MOV AX, 0000HMOV ES, AXMOV DI, 0020H ;ES: DS指向08中断向量存放地址MOV AX,OFFSET TIMERSTOSW;写入偏移地址MOV AX,CSSTOSW;写入段地址;将向

16、中断矢量写入新地址MOV AL,00110110B;8253初始化,0通道,3方式,二进制计数OUT 43H,ALMOV AX,11932;初值= 11932OUT 40H, ALMOV AL ,AHOUT 40H, ALIN AL,21H ;读8259的中段屏蔽寄存器IMRPUSH AX ;压栈保护;MOV AL, 0FCHSTI;开中断FOREVER:MOV DL,0FFH ;有键按下吗?MOV AH, 06HINT 21HJZ DISP;无键按下则转显示D ISPCMP AL, 20H ;是空格键吗?JZ EXIT;是则退出DISP:MOV DX, OFFSET TENH ;不是则显示时

17、间MOV AH, 09HINT 21HMOV AL, SECOND ;取秒单元值WAITCHA:CMP AL,SECOND ;改变否?JZ WAITCHA;没变则等待JMP FOREVER ;变则转FOREVEREXIT:CLI;有空格键按下退出 关中断CLD ;清方向标志位POP AXOUT 21H,AL;恢复 IMRMOV AL, 36H ;8253初始化,55msOUT 43H,ALMOV AL, 0OUT 40H,ALOUT 40H,AL;恢复中断矢量MOV AX,0 ;恢复08H中断中断向量MOV ES, AXMOV DI, 4*8POP AXSTOSWPOP AXSTOSWSTI;

18、恢复中断矢量RETTIMER PROC FARPUSH AXDEC COUNTJNZ L2 ;不到1秒L2MOV COUNT, 10 0;到1秒,重置CO UNT,并修改时间INC SECONDCMP SECOND,9JLE TIMEXT ;如果小于等于9MOV SECOND,0INC TENSCMP TENS,6JL TIMEXT;如果小于6MOV TENS,0INC MINUTECMP MINUTE,9JLE TIMEXT ;如果小于等于9MOV MINUTE ,0INC TENMCMP TENM,6;如果小于6JL TIMEXTMOV TENM,0JMP L3L2: JMP TIMEXT

19、L3: MOV AL ,HOURAND AL, 0FHMOV AH, TENHAND AH, 0FHMOV CL, 4 ;ROR AH,CLOR AL,AH ;AH放到AL高四位ADD AL, 1DAACMP AL, 24JL L1;小于24转不然置0MOV TENH,0MOV HOUR ,0JMP TIMEXTL1: MOV AH,ALAND AL, 0FHOR AL, 30HMOV HOUR, ALMOV CL,4ROR AH,CLAND AH, 0FH OR AH, 30HMOV TENH,AHTIMEXT:MOV AL, 20HOUT 20H, AL;发中断结束命令POP AXIRET

20、TIMER ENDPSTARTENDPCODE ENDSEND START6.程序调试说明(1)程序调试界面(2)程序运行过程打开运行窗口按下任意键显示时间按下空格键停止计时毋 E:M a s mb i nDWTe m p .exe 1010 : 00 : 0?Press any key to continue按下任意键退出窗口五、学习心得在本次课程设计中,我的设计题目是硬件中断时钟设计。经过两周的课程设 计,我们不但对课本上的知识有了更深的了解和巩固,而且我还学到了平时在课 堂上都学习不到的知识,使我对系统的开发过程有了更加完整的认识。在设计过程中虽然遇到了不少困难,但当我通过自己查资料以及

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论