硬件中断时钟设计文档格式.docx
《硬件中断时钟设计文档格式.docx》由会员分享,可在线阅读,更多相关《硬件中断时钟设计文档格式.docx(18页珍藏版)》请在冰点文库上搜索。
微机原理与接口技术
8086实验指导书
时间
安排
12月14日--12月15日:
查找资料编写程序
12月16日:
上机调试
12月17日:
验收答辩
教研室主任:
2010年12月18日
内容摘要
微机原理及应用是一门实践性很强的课程;
其课程设计目的在于综合运用所学知识,全面掌握微型计算机与DOS方式的工作原理、编程和使用方法;
在设计中,通过小组协作提出并论证设计方案,进行软件调试,最后获得正确的结果,可以加深和巩固对理论知识的更好掌握,进一步建立计算机应用系统体概念,初步掌握DOS开发方法,为以后进行实际的软件应用开发奠定良好的基础。
汇编语言是微机原理和接口设计的基础,微机主机和接口所要实现的功能都要通过汇编语言来实现。
尽管汇编语言设计程序有编程效率低的缺点,但其运行效率高,速度快,并且特别适合很多特殊应用的场合,如加密解密、病毒分析和防治、软件破解等。
这些在应用方面的优点是其他语言不可比拟的,面对硬件的直接控制更是其特长。
因此,在很多高级语言(如C++)中都可嵌入用汇编语言编写的程序段,以实现优势互补,发挥各自的长处。
索引关键词:
微机原理、DOS、软件调试、汇编语言、程序
目录
一概述…………………………………………………………………………4
二设计内容…………………………………………………………………………4
三设计目的…………………………………………………………………………4
四方案设计及论证………………………………………………………………4
4.1设计思路………………………………………………………………………4
4.2硬件原理图及相关说明……………………………………………………5
4.2.18253………………………………………………………………………5
4.2.28259A……………………………………………………………………6
4.3软件流程图及其说明………………………………………………………6
4.4功能模快设计说明…………………………………………………………7
4.5源程序………………………………………………………………………9
4.6程序调试………………………………………………………………………9
4.5.1程序调试界面……………………………………………………………12
4.5.2程序运行过程……………………………………………………………12
五心得体会………………………………………………………………………14
六参考文献………………………………………………………………………14
一、概述
本设计是利用Masmforwindow集成实验环境来实现的,编写程序,利用主机内的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窗口下进行输出显示。
二、设计内容
利用PC系列微机现有的硬件和软件资源编写程序,以便在显示器屏幕上显示XX(时):
XX(分):
XX(秒),并且每秒钟更新一次显示。
三、设计目的
1)掌握8253可编程定时器/计数器的编程方法。
2)掌握在PC机上使用中断方式工作时主程序及中断服务程序的编写方法。
4、方案设计与论证
1.设计思路
IBMPC/XT系统板上使用了一片8253-5,其地址为40H~43H,其中0通道在方式3下工作,初值设置23小时59分50秒,每隔55ms向中断控制器8259A的IRQ0端发一次中断请求。
此定时中断的用途之一是系统报时。
现在借用原有电路,重新设置定时器、编写中断服务程序来做硬件时钟实验,为此程序开始应首先保护原系统的08H中断的中断矢量(中断服务程序入口地址),以便程序退出时恢复原系统的设置。
保护原系统的08H中断的中断矢量可用DOS35H功能调用读出,并加以适当保存,也可以用以下指令将中断矢量压入堆栈保存。
具体过程:
等待按键按下,调用DOS的显示字符串功能,并对中断进行压栈操作后,建立数据段的可寻址性,通过装载现行的中断服务程序,使用8253初始化的0通道,3方式,二进制计数进行方式3的10ms方波,即每10ms中断一次,通过保护原有的8259A的中断屏蔽寄存器IMR的内存,进行下一步的IMR的重写,只开放始终和键盘的中断处理。
进而开中断,运行TIMER模块的时间调用及DOS显示系统时间的功能,待TIMER模块运行结束之后,关闭中断返回DOS,程序结束。
CLI;
关中断
CLD;
DF=0
MOVAX,0000H
MOVDS,AX;
DS:
SI指向08H中断矢量表中的位置
MOVSI,0020H
LODSW
MOVBX,AX;
BX:
原中断服务程序入口偏移地址
LODSW;
AX:
原中断服务程序入口的段地址
PUSHAX;
压栈保护
PUSHBX
2.硬件原理图及相关说明
(1)8253
这是8253的相关图形,一般8253要实现定时、计数控制大致可采用三种方法:
设计数字逻辑电路来实现定时或计数的要求。
即由硬件电路实现的定时器/
计数器。
用软件来实现定时和计数的要求。
即采用循环方式执行若干条指令,使程
序段执行时占用一定的延时时间。
采用可编程定时器/计数器。
其定时与计数功能可由程序灵活设定,设定后
于CPU并行工作,不占用CPU的时间,可以很好地解决以上两种定时存在的不足,这种方式广泛应用于各种定时或计数场合。
8253的工作方式三是方波发生器,方式三的输出为方波,具有“初始化自动重装”功能。
向8253写入控制字后,OUT输出变为高电平,在写完计数初值后计数器自动开始对输入时钟CLK计数,OUT输出保持高电平。
当计数到一半时,输出变为低电平,直至计数到0,在重装计数初值,OUT端变高开始新一轮计数。
(2)8259A
8259A常用于中断优先级管理电路,它的功能有三种:
它可以接受多个外部中断源的中断请求,并进行优先级别判断,选中当前
优先级别最高的中断请求,再将此请求送到微处理器的中断输入端。
具有提供中断向量、屏蔽中断输入等功能。
8259A使用单+5V电源供电,有多种中断管理方式,自动提供中断服务程序
入口地址,使用灵活方便。
3.软件流程图及其说明
图1.0硬件中断时钟设计流程图
硬件中断时钟设计算法具体描述,等待建按下调用DOS的7号功能键,并将中断的中断矢量进行压栈保护,建立数据段的可寻址性,通过装载现行的中断服务程序,使用8253初始化产生10ms方波,每10ms中断一次,保护原有的8259A的中断屏蔽寄存器IMR的内存,进行下一步的IMR的重写。
进而开中断,然后调用DOS的6好功能键,通过判断是否有键按下和是否按下的是空格键实现显示时间和关闭中断返回DOS,程序结束。
4.功能模快设计说明
(1)模块1
这部分模块是实现当按下空格键时程序关中断,恢复IMR,重新设置8253中断时间,恢复中断矢量以及开中断。
(2)模块2
(3)模块3
这个模块是实现的等待功能
(4)模块4
根据秒值是否相同来执行循环,但秒值变化了就返回继续执行程序。
5.源程序
STACKSEGMENT
DB256DUP(0)
STACKENDS
DATASEGMENT
COUNTDB100
TENHDB'
2'
HOURDB'
3:
'
TENMDB'
5'
MINUTEDB'
9'
DB'
:
TENSDB'
SECONDDB'
0'
0DH,'
$'
DATAENDS
CODESEGMENT
STARTPROCFAR
ASSUMECS:
CODE
PUSHDS
MOVAX,0
PUSHAX
MOVAH,08H;
等待键按下,AL=字符的ASCII码
INT21H;
将中断矢量压入堆栈保存
CLI;
清中断允许位
CLD;
清方向标志位
MOVAX,0000H
MOVDS,AX
MOVSI,0020H;
SI指向08H中断向量
LODSW;
取08中断入口的偏移地址
MOVBX,AX
取08中断入口段地址
PUSHAX;
PUSHBX
;
MOVAX,DATA;
建立数据段的可寻址性
ASSUMEDS:
DATA
将向中断矢量写入新地址
MOVES,AX
MOVDI,0020H;
ES:
DS指向08中断向量存放地址
MOVAX,OFFSETTIMER
STOSW;
写入偏移地址
MOVAX,CS
写入段地址
MOVAL,00110110B;
8253初始化,0通道,3方式,二进制计数
OUT43H,AL
MOVAX,11932;
初值=11932
OUT40H,AL
MOVAL,AH
INAL,21H;
读8259的中段屏蔽寄存器IMR
MOVAL,0FCH
STI;
开中断
FOREVER:
MOVDL,0FFH;
有键按下吗?
MOVAH,06H
INT21H
JZDISP;
无键按下则转显示DISP
CMPAL,20H;
是空格键吗?
JZEXIT;
是则退出
DISP:
MOVDX,OFFSETTENH;
不是则显示时间
MOVAH,09H
MOVAL,SECOND;
取秒单元值
WAITCHA:
CMPAL,SECOND;
改变否?
JZWAITCHA;
没变则等待
JMPFOREVER;
变则转FOREVER
EXIT:
有空格键按下退出关中断
清方向标志位
POPAX
OUT21H,AL;
恢复IMR
MOVAL,36H;
8253初始化,55ms
MOVAL,0
OUT40H,AL
恢复中断矢量
MOVAX,0;
恢复08H中断中断向量
MOVDI,4*8
STOSW
STI
RET
STARTENDP
CODEENDS
ENDSTART
6.程序调试
本次实验采用的是MASMFORWINDOWS集成实验环境2010软件,只需要用记事本将程序保存成.asm文件,然后直接用其打开然后运行即可自动编译连接并出结果。
如程序有问题可直接在MASMFORWINDOWS集成实验环境2010软件中调试并运行直到结果正确。
(1)程序调试界面
(2)运行过程
打开运行窗口
按下任意键显示时间
按下空格键停止计时
按下任意键退出窗口
8、心得体会
一转眼一周的微机原理课程设计在在紧张而又忙碌的氛围中度过了。
在本次课程设计中,我的设计题目是硬件中断时钟设计。
经过一周的课程设计,我们不但对课本上的知识有了更深的了解和巩固,而且我还学到了平时在课堂上都学习不到的知识,使我对系统的开发过程有了更加完整的认识。
在设计过程中虽然遇到了不少困难,但当我通过自己查资料、或是向指导老师请教以及向同学请教在网上询问,在克服了一个又一个难点之后,我的设计正是进入具体操作阶段:
1设计思路的分析阶段。
我根据一些经典的算法再加上我的自我分析,写出了符合这次设计要求的算法,并就此画出相应的流程图;
2源代码的编写阶段。
这一过程我还是参考了不少经典例子,再结合实际需要,运用从课堂上掌握的基本汇编语言知识,终于完成了初步的源代码;
3代码的调试过程。
这算是本次课设的重点过程之一,因为发现错误并改正错误就靠这一过程来完成,经过老师的指点和多次调试,我终于得到了一个正确的程序,使得设计方案中发现的问题得到解决并成功实现系统所需功能,那种成就感和满足感足以让我忘记了这些天来的辛苦;
4设计报告的编写过程。
当然这是对本次课程设计的一个总结,在付出那么多努力之后,能看到自己的劳动成果还是很开心的。
一周的微机原理课程设计在忙碌、紧张、而又充实氛围中度过了,在这短暂的两周时间里,我学到了很多知识,熟悉了好多程序代码,也认识到自己很多不足的地方。
时间虽短,我却收获颇丰,不单单是对于知识的收获,还是对自己的一种肯定。
这次课程设计给了我们一次应用自己所学知识的机会,使我微机原理这门课程有更深层次的理解,让我们深刻体会到了:
一个人的力量是有限的,多请教别人,虚心求问是我在以后学习中应该多多发扬的。
总之,珍惜每一次课程设计的机会,好好锻炼自己提高自己,才真正达到课程设计这门课的目的。
九、参考文献
[1]张荣标.微型计算机原理与接口技术.北京:
机械工业出版社,2008
[2]王爽.汇编语言.北京:
清华大学出版社,2008
电子工程系微机原理课程设计成绩评定表
专业:
电子信息工程班级:
学号:
姓名:
课题名称
硬件中断时钟设计
设计任务与要求
指导教师评语
建议成绩:
指导教师:
课程小组评定
评定成绩:
课程负责人:
年月日