您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 微机课程设计8253
一、课程设计目的1掌握8253的工作原理及编程方法2了解硬件与软件的调试方法3通过对微机系统分析和具体设计,使学生加深对所学课程的理解。4培养学生分析问题、解决问题的能力。5培养学生对微型计算机应用系统的基本设计能力。6要求学生掌握汇编语言程序设计的基本方法,学会典型接口的基本设计方法。二、课程设计要求在DOS屏幕上右上角动态显示日期,时间要求格式:年-月-日时:分:秒要求采用8253定时器中断方式实现定时及显示刷新。三、设计正文(一)设计思路在计算机系统中,8253定时器内部有三个独立的计算器,其中计算器0作为定时器,为系统时钟提供一个恒定的时间基准,对时间基准信号进行记数,可以用来计算时间和日期。DOS中提供了用与读取和设置系统时间和日期的功能的调用。本程序设计遇到一些困难,所以选用的是延时程序来进行定时刷新。首先设置一个缓冲区用来存放日历时间并最终存入一结束字符‘$’,然后调用DOS时间功能调用,读取系统当前日期和时间,先调用子程序把二进制数转化成BCD码,再将BCD码转化成ASC2码。按照顺序逐一的存放在缓冲区中,设置显示要求(DOS右上角),显示年-月-日小时:分钟:秒。最后调用延迟程序进行时间刷新。(二)程序框图开始显示年月日(年-月-日)显示时间(小时:分钟:秒)取系统时间设置显示位置(位于DOS界面右上角)结束是否摁退出键NY调用延时子程序进行刷新调用二进制到BCD码的转换子程序显示缓冲区T-BUFF显示年份子程序把年转化成ASC2码并保存在T-BUFF中将分隔符保存在T-BUFF中把日转化成ASC2码并保存在T-BUFF中把月转化成ASC2码并保存在T-BUFF中将分隔符保存在T-BUFF中将分隔符保存在T-BUFF中调用二进制到BCD码的转换子程序显示缓冲区T-BUFF显示时间子程序把小时转化成ASC2码并保存在T-BUFF中将分隔符保存在T-BUFF中把秒转化成ASC2码并保存在T-BUFF中把分钟转化成ASC2码并保存在T-BUFF中将分隔符保存在T-BUFF中将分隔符保存在T-BUFF中(三)程序DATASEGMENTT_BUFFDB20DUP(0)TIMEDB3DUP(0)DAYDB4DUP(0)DATAENDSSTACKSEGMENTDB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKMAIN:START:;年月日显示部分MOVAX,DATAMOVDS,AXLEABX,DAY;送DAY的偏移地址到BXLEADI,T_BUFF;送T-BUFF的偏移地址到DIMOVAH,2AH;调用DOS时间调用功能,功能号:2AH,年,月,日分保存在CX,DH,DL中INT21HMOV[BX],CXMOV[BX+2],DHMOV[BX+3],DLMOVAX,CX;年的设定CALLBCTD;调用进制转换子程序PUSHAXANDAL,0F0H;选取AL高四位MOVCL,4;设置左循环的次数ROLAL,CL;左循环ADDAL,30H;加30H得到ACSII码MOV[DI],AL;将得到的结果送到T-BUFF缓冲区INCDI;DI自加1,指针指向下一个缓冲区的下一个地址POPAXANDAL,0FH;选取AL低四位ADDAL,30H;加30H得到ACSII码MOV[DI],AL;将得到的结果送到T-BUFF缓冲区INCDIMOVAL,'-';显示分隔符MOV[DI],ALINCDIMOVDH,[BX+2];月的设定MOVAL,DHMOVAH,0CALLBCTDPUSHAXANDAL,0F0HMOVCL,04HROLAL,CLADDAL,30HMOV[DI],ALINCDIPOPAXANDAL,0FHADDAL,30HMOV[DI],ALINCDIMOVAL,'-'MOV[DI],ALINCDIMOVDL,[BX+3];日的设定MOVAL,DLMOVAH,0CALLBCTDPUSHAXANDAL,0F0HMOVCL,4ROLAL,CLADDAL,30HMOV[DI],ALINCDIPOPAXANDAL,0FHADDAL,30HMOV[DI],ALINCDIMOVAL,''MOV[DI],AL;时间的设定LEABX,TIME;送TIME的偏移地址到BXINCDIMOVAH,2CH;调用DOS时间调用功能,功能号:2CH,小时,分钟,秒数分保存在CH,CL,DH中INT21HMOV[BX],CHMOV[BX+1],CLMOV[BX+2],DHMOVAL,CH;小时的设定CMPAL,00H;每日凌晨校正JZNEXTMOVAH,0CALLBCTD;调用进制转换子程序NEXT:PUSHAXANDAL,0F0H;选取AL高四位MOVCL,4;设置左循环的次数ROLAL,CL;左循环ADDAL,30H;加30H得到ACSII码MOV[DI],AL;将得到的结果送到t_buff缓冲区INCDI;BX自加1,指针指向下一个缓冲区的下一个地址POPAXANDAL,0FH;选取AL低四位ADDAL,30H;加30H得到ACSII码MOV[DI],AL;将得到的结果送到t_buff缓冲区INCDIMOVAL,':';显示分隔符MOV[DI],ALINCDIMOVCL,[BX+1];分钟数设定MOVAL,CLMOVAH,0CALLBCTDPUSHAXANDAL,0F0HMOVCL,04HROLAL,CLADDAL,30HMOV[DI],ALINCDIPOPAXANDAL,0FHADDAL,30HMOV[DI],ALINCDIMOVAL,':'MOV[DI],ALINCDIMOVDH,[BX+2];秒钟数设定MOVAL,DHMOVAH,0CALLBCTDPUSHAXANDAL,0F0HMOVCL,4ROLAL,CLADDAL,30HMOV[DI],ALINCDIPOPAXANDAL,0FHADDAL,30HMOV[DI],ALINCDIMOVAL,'$';将字符串的结束位送至显示缓冲区的最后一位MOV[DI],AL;置光标位置,AH=2,BH=0,DH跟DL分别为行号与列号MOVAH,2MOVBH,0MOVDH,0MOVDL,60INT10HLEADX,T_BUFF;送T-BUFF偏移地址到DX,并调用DOS显示功能,功能号为9MOVAH,9INT21HCALLDELAY1JMPSTARTBCTDPROCNEAR;二进制转BCD码子程序MOVDX,AX;AX输入参数MOVAX,0;AX输出参数,存放调整过的BCD码BC:ADDAX,1DAA;对AX进行加1调整DECDX;调整次数是DX,即AXCMPDX,0JNEBCRETBCTDENDPDELAY1PROC;精确延迟时间子程序MOVDX,04FFH;循环次数UP:XORCX,CXA:NOPLOOPADECDXJNZUPRETDELAY1ENDPCODEENDSENDMAIN(四)实验运行结果截图四、课程设计总结经历了这一个星期的课程设计,真的对微机原理与应用有了新的认识。在初学微机时觉得这是一本天书,因为总是跟不上老师的节奏,后来渐渐的随着学习的深入,觉得微机并没有以前想象中那样枯燥乏味,尤其是在这一个星期的深入了解之后才知道自己的知识是那么的短缺,而现在已是追悔莫及。在这次课程设计中,我本是想按照任务的要求用8253运行的,不过苦于自身能力有限和计算机硬件的局限,实在是无法完成这个课程设计。因此,我做了一些改变,在运行中加入了延时程序来定时刷新。这次的设计虽然是一个人,但是我却请教了许多同学,他们也是很热心的帮助,我们相互讨论,不仅增进了我们之间的友谊也是培养了我们团结协作的能力。相信以后我们会表现得更好。最后,由于时间仓促和本人能力有限,完成的程序并不是很理想,距离要求有一定的距离,还望老师谅解。并不是我不认真,我真的在努力。还是希望老师能够对我的不足给予指点及赐教。五、参考文献《新编16/32位微型计算机原理及应用(第三版)》李继灿主编,清华大学出版社《微型计算机原理与接口技术教学辅导》邹逢兴主编陈立刚徐晓红编清华大学出版社
本文标题:微机课程设计8253
链接地址:https://www.777doc.com/doc-3511784 .html