《微机原理课设(电子时钟)(共22页).doc》由会员分享,可在线阅读,更多相关《微机原理课设(电子时钟)(共22页).doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上学 院: 计算机科学技术 专 业: 计算机科学与技术(工)班 级: 计08-1班 姓 名: 秦振兴 学 号: 27 指导教师: 孙 海 2011年 7月 1日微机原理与汇编语言课程设计任务书一、题目:电子表二、设计的目的1. 掌握利用PC机的的中断及中断服务程序的编写方法;2. 掌握定时器/计数器8253的工作原理及编程方法。三、设计要求编写程序,利用主机内的8253-2的计数器0产生10m的方波输出,此输出送至IRQ0使8259A每10ms产生1次中断,100次后秒加1,然后调整时、分、秒并在屏幕上显示。程序从按下任意键开始显示数据区存放的时间值,运行中按下空格键即
2、停止运行,并返回DOS。要求每人独立完成课程设计。四、设计内容采用PC系列微机现有的硬件和软件资源编写汇编语言程序,在显示器上显示XX(时):XX(分):XX(秒),每秒钟更新1次。五、课程设计工作量一般每人的程序量应在100行有效程序行以上。不得抄袭,否则给不及格成绩。六、课程设计工作计划2011年6月27日1-2节 指导教师讲课,学生准备文献资料;2011年6月28日2011年7月01日 每人完成自己程序并能独立演示;2011年7月01日下午验收,学生撰写课程设计报告。指导教师签字: 专业主任签章: 微机原理与汇编语言课程设计指导教师评语与成绩指导教师评语:课程设计表现成绩: 课程设计验收
3、成绩: 课程设计报告成绩: 课程设计 总成绩: 指导教师签字: 2011年 月 日目录专心-专注-专业第1章 概述1.1 选题来源该课程设计是根据老师提供的三个题目选题:音乐演奏,电子琴,电子表。我选择的是电子表1.2 选题目的设计并实现一个可以显示时间和日期的电子时钟,可以用键盘控制。1.3 选题意义课程设计是培养学生运用有关课程的基础理论和技能解决实际问题,进一步提高学生本专业必要的基本技能、方法和创新能力的重要环节之一。通过课程设计使学生受到设计方法的初步训练,能用文字、图形和现代设计方法简要、系统、正确地表达设计成果。1.4 解决问题电子表一般都有显示时间和日期的功能,用汇编语言设计程
4、序时,由于是在电脑上操作,因而不便于切换时间和日期模式,这时就需要设计一种方式,可以通过键盘来切换这种模式,从而达到设计任务所要求的内容。 设计时间时,要设计时间的计数方式,并会循环运行,符合日常的标准。而设计日期时,同样要注意日期的计数与循环方式。 设计好时间和日期程序后,要把日期和时间值转换成ASCII码字符。这就需要设计转换程序。1.5 技术要求微机接口课程设计主要是训练学生综合运用学过的微机原理的软件和硬件知识,独立完成一个实际的微机应用设计系统,并在实验室实现。此次课设是对个人的程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,为学习后继的基础课和专业
5、课打下坚实的基础。课设所用的是汇编语言,它是一种机器语言,是计算机能提供的最快最有效的语言,也是能够利用计算机所有硬件性能并能直接控制硬件的语言。实验不仅培养了实际动手能力,也进一步学习了汇编语言的结构和使用方法,提高了汇编语言的水平。第2章 总体方案设计2.1 硬件总体设计8259A的主要功能:(1)每片8259A可管理8级优先级中断源,通过开关,最多可管理64级优先权的中断源。(2)对任何一个级别的中断源都可单独进行屏蔽,使该级中断请求暂时被挂起,直到取消屏蔽时为止。(3)能向CPU提供可编程的标识码。(4)具有多种中断优先权管理方式。有完全嵌套方式、自动循环方式、特殊循环方式、特殊屏蔽方
6、式和查询方式五种。这些管理方式均可通过程序动态地进行变化。在本设计中用到了这四种功能,电子时钟的灵活调时功能就是通过对级别的屏蔽或开启来实现的。8255A的主要功能:可编程外设接口芯片可由程序改变其功能,通用性强、使用灵活。通过8255A,CPU可直接同外设相连接,其负责CPU和外设之间的数据传送。8253的主要功能:可编程定时器/计数器,其定时与计数功能可由程序灵活地设定,设定后与CPU并行工作,不占用CPU的时间。通道2工作在3方式下,提供计算一秒的中断请求信号。2.2 软件总体设计电子时钟主要由显示模块、对时模块和时钟运算模块三大部分组成。其中对时模块和时钟运算模块要对时、分、秒的数值进
7、行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。这样,才能循环记时。第3章 详细设计3.1 硬件设计3.1.1显示模块利用数码管的显示功能来设计。数码管是由八个条形发光二极管组成的,这些发光二极管的阴极是互相连接在一起的,所以称为共阴极数码管。通过在这八个发光二极管的阳极加+5 V或0 V的电压使不同的二极管发光,形成不同的字符和数字。电子时钟用到的是0到9十个数字,他们所对应的字符表依次是3FH、06H、5BH、4FH、66H、6DH、7DH、07H、7FH、6FH。该模块主要是将时钟运算模块和对时模块运算出来并存放在内存单元里
8、的十六进制表示的时位和分位数据转化为十进制,并通过四个数码管显示出来。该模块实现的硬件是TND86/88的LED-KEYBOARD UNIT。3.1.2时钟运算模块该模块的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。该模块可以细分为秒定时模块和运算模块。秒定时模块负责提供中断信号,由于CPU运算模块中的指令消耗一定的时间,所以中断信号最好通过硬件来实现,可以选择TND86/88实验箱中的8253定时/计数器来提供,但又因为8253所能提供的信号的周期时毫秒级的,因此必须通过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一
9、变量必须事先在内存里开辟存储单元。中断信号是8253的通道2工作方式为方式3时,产生一个40ms的脉冲信号。运算模块负责时、分、秒的计算,该模块主要通过8259的IRQ7号中断来实现,首先将秒定时模块提供的中断信号为8259的IRQ7中断请求信号。但由于每40ms一次中断请求。所以在中断服务程序必须利用已申请内存单元count来统计中断请求的次数,只有当count的值为25时,才能让秒单元内的数值加1。另外,在中断服务程序里,必须对秒、分和时的单元内的数值进行判断,当秒加到60时,分必须加1 、秒清零;当分加到60时,时加1、分清零。当时加到24啊,直接清零。3.1.3对时模块该模块主要功能是
10、修改时、分内存单元的数值。在对时的时候,秒应停止不变,并且在对分进行调整的时,时单元内的数值不变。由以上分析可见,对时、分的调整用两个优先级高于IRQ7的中断来完成。因此,可以用8259的IRQ2中断来实现,两个中断源的中断请求信号只需直接接在两个按键即可起到对时作用。3.1.4设计电路图电子时钟的完整电路图如下:3.2 软件设计3.2.1程序流程图YesNoNoNoNoYes中断服务程序IRQ7YesYesIRQ7中断COUNT=25?S=S+1COUNT=0S=60?M=M+1S=0M=60?H=H+1M=0H=24?H=0IRETCOUNT=COUNT+1 显示模块程序图 时、分转化为十
11、进制,存到内存单元中计算时、分的各位数值在TABLE中对应编码结束开始依次在61H段输出到LED显示 YesYesIRQ6中断M=M+1M=60?M=0IRET中断服务程序IRQ6OFF=1?NoOFF=2?H=H+1H=24?YesH=0YesNoNoNoOFF=1?IRETOFF=0 屏蔽IRQ6中断,开IRQ2和IRQ7中断OFF=3?中断服务程序IRQ2IRQ2中断OFF=OFF+1OFF=2?NoNoNoYesOFF=0 屏蔽IRQ7中断,开IRQ2和IRQ6中断YesYes第4章 调试与运行结果说明4.1 试验结果程序初始运行界面图1 开始界面这时,开始根据提示输入当前时间,出现如
12、下界面: 图 2 输入时间后单击回车键之后 图 3 运行后4.2 分析将编写好的源程序输入,编译后出现很多错误,经过反复修改直到程序运行通过。将生成的可执行程序装入TND86/88的内存里,在监控状态下运行程序,可是数码管显示的数字并不与理论计算值相符合,并且显示的数字不停地闪动,经过反复分析源程序发现问题出现在内存单元里时位和分位在转化为十进制时,存储转化的结果的地址空间的顺序弄混了。数字闪动的原因应该出在显示子程序里,经过分析问题出在显示子程序里缺少延时程序。编写延时子程序,并在显示子程序调用它;编译源程序,装入生成的可执行文件,并运行。数码管显示的数字与理论值相符合,并能正常计时,但当按
13、动KK1+键时,却不能启动对时功能,按动KK2+时,也不能调时、调分。问题很可能出在两键控制的中断源上,检查源程序也找不出错误,当把IRQ5换成IRQ2后,在进行调试,结果成功。课程设计总结1. 实验过程中碰到了很多的难题和障碍,我认识到平时基础知识的重要性,只有能够熟练的掌握才能在实验过程中得心应手,否则一步错则整个试验都会陷入困境,因而,严谨的态度是试验成功的重要保障!2. 通过这次课程设计,使我对汇编语言有了较清楚的认识,以前在看语言时,有好多地方不明白为什么这么写,这样写有什么优点。对于某些语言句子还不清楚是什么意思。经过这次课程设计,通过查阅资料和向同学请教,明白许多不清楚的地方,能
14、够用汇编语言编写简单的程序,内心感到高兴。3.有了这次课程设计的体验,使我明白了书本上的知识是死的,必须会用,用到实践中,它才算有用。平时上课的理论知识只是停留在理论的层面,只有通过了这样的试验才能更好的体会到,做到了理论和实际的相结合,使理论知识的作用发挥出来。这次设计对我将来的毕业设计有很大启示和帮助。4.在设计过程中,遇到很多问题,通过和同学的共同研究,解决这些问题。遇到问题时候一起探讨,使我在这次设计中获得的启示。谢启通过本次课程设计是深深的体会到了自学能力的重要性和独立决绝问题的能力以及凝聚力的重要。在本次课程设计当中我们遇到了很多困难,与此同时也得到了孙老师的鼓励也帮助,这让我们对
15、自己更有信心,虽然最后我们的程序不是很完善,但是我们尽了自己最大的努力。同时在我们遇到困难时也得到了同学的帮助,虽然她们很忙,但是仍然耐心的帮助我们解决困难,在此我们要深深的感谢她们在为期一周的微机原理课程设计中,使我们接触到了以前书本上所涉及不到的领域,让我们感到新奇!在我们完成的功能模块的背后都交织着一份辛苦与喜悦,而这份辛苦与喜悦却离不开大家的帮助和支持,当然我们最要感谢的人还有我们的孙老师,因为无论在我们什么时候遇到困难的时候,只要向老师求助,他都会在第一时间为我们解答。虽然我们做的不是很好,但是我们组的每一位成员都在课程设计中学到了知识,希望老师还会给予我们帮助与鼓励。通过这半年的学
16、习,自己对这门学科有了进一步的了解。因此,我要向老师表达我衷心的谢意。因为她们是那么的兢兢业业、认真负责。不管我们的问题有多幼稚,老师都能耐心的回答,认真辅导我们。在此,我再一次地感谢大家在课程设计期间的帮助和支持参考文献1 李芷.微机原理与接口技术M.2002.2 王爱英.计算机组成与结构M.北京:清华大学出版社.1995. 3 沈美明,温冬蝉.IBM-PC汇编语言程序设计M.清华大学出版社.2003.4 董方武.微机接口技术M.中国水利水电出版社.2001.5 宋锦河.汇编语言程序设计M.中国水利水电出版社.2001.6 唐延铃,工小刚.汇编语言程序设计M.电子科技大学.19987 王元珍
17、,韩宗芬IBM-PC汇编语言程序设计M.华中理工大学出版社.1996.8 戴梅萼,史嘉权.微型计算机技术与运用M.清华大学出版社2003.附录程序清单:DATA SEGMENTBUF1 DB THE TIME IS NOW:$BUF4 DB LILI$BUF2 DB 10 DB 10 DUP(?)COUNT DB 18DATA ENDSSTACK SEGMENT STACK DB 100 DUP(?) STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKCURSOR MACRO ROW,CLM MOV AH,02H MOV BH,0 MO
18、V DH,ROW MOV DL,CLM INT 10HENDMWIN MACRO ROWL,CLML,ROWR,CLMR,COLOR MOV AH,06H MOV AL,0 MOV CH,ROWL MOV CL,CLML MOV DH,ROWR MOV DL,CLMR MOV BH,COLOR INT 10H ENDMASCBCD MACRO REG INC BX INC BXMOV REG,BX MOV CL,4 SHL REG,CL INC BX MOV AL,BX AND AL,0FH OR REG,ALENDMBCDASC MACRO REG INC BX INC BX MOV AL,
19、REG MOV CL,4 SHR AL,CL OR AL,30H MOV BX,AL INC BX MOV AL,REG AND AL,0FH OR AL,30H MOV BX,AL ENDMINCBCD MACRO REG,COUNT MOV AL,REG INC AL DAA MOV REG,AL CMP AL,COUNT JNZ DISPY MOV REG,0 ENDMSTRDSPY MACRO ADRS LEA DX,ADRS MOV AH,9 INT 21HENDMCLOCK PROC FARSTART:PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,
20、AXWIN 0,0,24,79,7WIN 6,9,18,70,BSTRDSPY BUF3CURSOR 7,9STRDSPY BUF4CURSOR 14,32STRDSPY BUF1CURSOR 15,36LEA DX,BUF2MOV AH,0AHINT 21HLEA BX,BUF2ASCBCD CHASCBCD DHASCBCD DLTIMER:CALL DELY MOV AL,18MOV COUNT,ALINCBCD DL,60HINCBCD DH,60HINCBCD CH,24HDISPY:LEA BX,BUF2BCDASC CHBCDASC DHBCDASC DLINC BXMOV AL
21、,$MOV BX,ALPUSH DXCURSOR 15,36STRDSPY BUF2POP DXMOV AH,01HINT 16HCMP AL,1BHJZ XXOR AL,ALJMP TIMERX: MOV AH,4CH INT 21HRETDELY PROC FARPUSH DXPUSH AXMOV AL,BOUT 20H,ALMOV AL,BOUT 21H,ALMOV AL,BOUT 21H,AL;8259初始化MOV AL,BOUT 43H,ALMOV AL,0OUT 40H,ALOUT 40H,AL;8254初始化;设置中断向量MOV AX,SEG INPPPUSH DSMOV DS,AXMOV DX,OFFSET INPPMOV AL,40HMOV AH,25HINT 21HPOP DSIN AL,21H;读IMRAND AL,0FEHOUT 21H,ALWAITT: STI CMP COUNT,0JNZ WAITTPOP AXPOP DXRETDELY ENDPINPP PROCPUSH AXSTIDEC COUNTJNZ NEXTIN AL,21HOR AL,01HOUT 21H,ALNEXT:CLIMOV AL,20HOUT 20H,ALPOP AXIRETINPP ENDP CLOCKENDPCODEENDS ENDSTART
限制150内