您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 计时器汇编语言程序设计
武汉理工大学《微机原理》课程设计说明书1计时器汇编语言程序设计1设计要求1.1初始条件采用16位微处理器8086CPU以及86系列微型计算机的指令系统;软件设计平台为多功能微型计算机实验软件MFS中的微机原理实验集成环境MF2KP。1.2设计任务设计汇编语言程序,实现计时功能,具体功能要求如下:(1)设计一个计时器界面,形式为:时:分:秒;(2)单击“S”或“s”键开始计时,单击“P”或“p”停止计时,单击“G”或“g”键继续计时,单击“C”或“c”键清0;(3)单击”ESC”键退出程序。(2)单击”ESC”键退出程序。根据功能要求绘制程序流程图、编写完整的汇编语言程序并上机调试。2总体方案论证2.1方案一利用8155芯片设计一个具有时、分、秒显示的电子时钟,启动按键,数码管从初始设置的时间开始显示。从设计要求可知,需要键盘扫描部分,时间控制部分,初始值设置部分,数码管显示部分,延时部分。时间走动部分的实现:各个时钟的个位部分逢十进一,秒和分钟的十位部分是逢六进一。当时的十位达到2时,个位为4时,程序跳到清零部分,程序从零开始计时。数码管显示部分的功能是实现时、分、秒的显示,可以用六个数码管从左至右一次显示时间,采用分配存储单元的形式,地址从低到高分别显示秒、分、时。延时部分是对秒的个位进行延时,延时中调用系统时钟显示程序,以便连续不断地显示并实现一秒延时的计时功能,从而实现电子时钟的设计。2.2方案二利用DOS功能设计界面显示时间00:00:00:00,在MFS中的微机原理实验集成环境MF2KP中编写程序,根据设计要求,需要界面设置,键盘按键输入检测,显示初值时间,显示形式,键盘控制设置,时间进位处理,设置中断频率,暂停和继续计时。通过调用系统的08h号或者1ch号中断来进行设置,使其能够产生100Hz即10ms一次的中断,同时修改原08号中断的入口地址,使其每次中断执行一武汉理工大学《微机原理》课程设计说明书2次计时的中断服务程序,进而动态显示时间。2.3方案论证方案一要用到8155芯片和数码管,而且计时器是调用系统时钟完成的,这种方法必须每秒或者每更短的时间调用系统时钟然后进行相减操作才能达到计时的每秒时时显示动态时间,虽然理论上可以实现计时功能,但是会比较的麻烦。方案二通过调用系统的08h号或者1ch号中断来进行设置,使其能够产生100Hz即10ms一次的中断进而动态显示时间。这种方法不仅简单易行,而且较方便。而且方案二在DOS环境下运行的,不需要额外的芯片,所以方案二更好更合适。3程序流程图3.1主程序流程图主程序流程图如图3-1所示,主程序是用来完成屏幕初始化:清屏和显示初始界面,同时对键盘按键输入检测和对键盘按下的键值进行判断,执行相应键值所对应的程序,达到开始、暂停、继续、清零、退出的功能。进而动态显示和控制时间。3.2中断服务子程序流程图中断服务子程序流程图如图3-2所示,中断服务子程序的功能是每次中断执行一次该程序,对十毫秒位、百毫秒位、秒位、十秒位、分钟位、十分钟位、小时位和十小时位进行加1和判断是否进位操作,即达到该时间的情况下就给该时间对应位进行加1操作,使其能够显示正确的动态的时间。武汉理工大学《微机原理》课程设计说明书3图3-1主程序流程图开始清屏显示提示语和初值时间检验键盘状态按下s/S键按下p/P键开中断计时显示动态时间读字符按c/C键按g/G键按ESC键结束停止计时显示停止计时时间清零显示初始时间继续计时显示动态时间武汉理工大学《微机原理》课程设计说明书4图3-2中断服务子程序流程图设置中断入口地址设置中断屏蔽器毫秒位加1开中断设置中断频率ms位10小时位10十秒位6秒位10十ms位10分钟位加1十秒位加1秒位加1十ms位加1N24十分位6ms位10退出中断十小时位加1小时位加1N加1(N初值为0)十分钟位加1十h位3清零武汉理工大学《微机原理》课程设计说明书54.程序设计步骤4.1界面设置在DOS界面中显示时间,要输入输出数据,需要设置界面。界面设置需要用到DOS功能调用的INT10H指令。INT10H是由BIOS对屏幕及显示器所提供的服务程序,使用INT10H中断服务程序时,先指定AH寄存器为下表编号其中之一,该编号表示欲调用的功用,当一切设定好之后再调用INT10H。1.设置光标形状:movah,1;置光标类型,不显示光标movch,20hint10h2.设置光标位置:movdh,0;行号movdl,0;列号:movbh,0;页号movah,2;置光标位置int10h3.在Teletype模式下显示字符:show3:movah,0eh;显示字符(光标前移),al字符,bl前景色moval,[si]int10hincsiloopshow3为了使计时器的显示界面更加直观更加清楚,所以可以在int10h的情况下将AH赋值为06,初始化屏幕,同时置AL为00H而且为全屏空白,同时颜色通过在int10H的情况下BH=000ch显示为红色,这样计时器会更加醒目。4.2检验键盘状态由于要实现键盘按下不同的键值实现各种不同的功能,所以需要判断键盘输入的为哪个键。首先检查键盘是否有输入,若没有输入,则跳过检查键盘输入的键值的程序,若有输入则比较输入为何种键,接着执行该键值对应要完成的功能的程序。检验键盘状态程序如下:movah,0bh;检验键盘状态,有输入al=00,无输入al=0fint21hincaljnzs1movah,08h;键盘输入无回显,(al)=输入字符int21hcmpal,1bh;按下Esc键结束程序jegooutcmpal,'p';按下p键停止计时武汉理工大学《微机原理》课程设计说明书6jepausecmpal,'P';按下p键停止计时jepausecmpal,'c';按下c键清零jeclearcmpal,'C';按下C键清零jeclearjmps14.3中断子程序1.08H号中断入口地址设置由于要使用08H号中断来实现,计时功能,所以首先要获得08H号中断的原来的入口地址,AL里存中断类型号,将其存在了ES:BX里,接着设置其新入口地址,将新的中断向量存在DS:DX里就可以实现设置新入口地址。具体的代码实现如下:moval,08hmovah,35h;获取08h号中断的原入口地址int21hpushespushbxpushdsmovax,segint08hmovds,axmovdx,offsetint08h;设置08h号中断的新入口地址moval,08hmovah,25hint21h;调用08h号中断的服务程序popds2.中断屏蔽器设置中断屏蔽寄存器的I/O端口地址是21H,它的8位对应控制8个外部设备。某位为0允许某外部设备中断,为1则表示某外部设备的中断请求被屏蔽。由上图可以看出要使键盘和定时器允许外部中断,则令其对应的位置零,同时使其他设备不允许外部中断。于是可通过以下代码进行设置:inal,21hpushaxmoval,11111100bout21h,al3.中断频率设置根据设计要求,需要使系统内部8253输出方波频率为100Hz,所以要对08H号中断设置,使其能够10ms一次中断,同时要使其工作在通道0方式3的方波发生器。8253是微机系统常用的定时器芯片,它有三个独立的16位减法计数器,每个计数器分配一个端口地址,分别为40h,41h,42h。还有一个控制寄存器,端口地址为43h。把中断子程序的段地址和偏移地址送到08H中断向量中,由于08H中断武汉理工大学《微机原理》课程设计说明书7向量硬件中断,计数器0的输出端OUT与中断控制器8259A的一位相连每秒中断18.2次,故需要把18.2HZ改为100HZ,而CLK0的输入频率是1.1931817MHZ,故需把1.1931817除以100的初始值送到40H端口就可以实现每秒100次的中断。所以设置计数初值为11932,这样就可以达到10ms中断一次。实现该功能的代码如下:moval,00110110b;设置通道0的方式3out43h,almovax,11932;定时器的时钟频率为1.1931817MHz,计数初值=1193182/100=11932out40h,almoval,ahout40h,al4.4判断计时进位当十毫秒位超过9的时候,要对百毫秒位进1,如果百毫秒位超过9时,要对秒位进1,当秒位超过,9时,对十秒位进1,如果十秒位超过5时,才对分钟位进1,分钟位超过9时,对十分钟位进1,如果十分钟位超过5时,对小时位进1。小时位的进位设计就要考虑到小时最多24的特殊性了,所以设置一个变量,在小时位加1的同时给它也加1.如果这个变量加到了24则重新开始计时,此时再把变量置零。实现此部分功能的程序代码如下:incmsec2;十毫秒位加1cmpmsec2,3ah;十毫秒位是否小于100jbtmovmsec2,30hincmsec1cmpmsec1,3ah;百毫秒位是否小于10jbtmovmsec1,30hincsec2cmpsec2,3ah;秒位是否小于10jbtmovsec2,30hincsec1cmpsec1,36h;十秒位是否小于6jbtmovsec1,30hincmin2cmpmin2,3ah;分钟位是否小于10jbtmovmin2,30hincmin1cmpmin1,36h;十分钟位是否小于6jbtmovmin1,30hinchou2武汉理工大学《微机原理》课程设计说明书8incncmpn,24;比较是否到了24小时,到了就跳到清零程序jzqinlingcmphou2,3ah;小时位是否小于10jbtmovhou2,30hinchou1cmphou1,33h;十小时位是否小于3jbtmovhou1,30ht:moval,20hout20h,al;中断结束命令popdspopaxIret4.5暂停与继续计时要暂停计时器,实际上是在暂停发生中断时显示的时间的加1操作,所以可以设置08h号中断的入口地址使其不进入计时中断服务程序进行加1操作,这样就能达到暂停计时的功能。同理使其继续计时也是设置08h号中断的入口地址,使其继续进入计时中断服务程序就可以继续进行计时了。实现此功能的代码如下:pause:popaxout21h,alpopdx;把bx送到dx,原中断向量存在ES:BX中popbxpushdsmovds,bxmoval,08hmovah,25h;设置08h号中断入口地址为保存下来的原入口地址int21hpopdsaa1:movah,08h;键盘输入无回显,al=输入字符int21hcmpal,1bh;按下Esc键结束程序jegooutcmpal,'g';按下g键继续程序jejixucmpal,'G';按下G键继续程序jejixujmpaa1jixu:jmpq1武汉理工大学《微机原理》课程设计说明书95程序调试说明与分析5.1初始界面运行程序后初始界面如图5-1所示:图5-1初始界面5.2按下S键开始计时界面按下S键后开始计时界面如图5-2所示:图5-2按下S键后开始计时界面5.3按下P键暂停计时界面按下P键暂停计时界面如图5-3所示:武汉理工大学《微机原理》课程设计说明书10图5-3按下P键暂停计时界面5.4按下G键继续计时界面按下G键继续计时界面如图5-4所示:图5-4按下G键继续计时界面5.5按下C键清零界面5.5按下C键清零界面如图5-4所示:武汉理工大学《微机原理》课程设计说明书11图5-5按下C键清零计时界面5.6按下ESC键退出程序运行后在任意时刻按下ESC键,程序退出。武汉理工大学《微机原理》课程设计说明书126心得体会计算机的诞生是人类科学史上的一件大事。半个多世纪以来,计算机得到了迅猛的发展,从小型机到巨型机,从台式机到手提电脑,科学家实现了计算机一代接一代的跨越性的飞跃。其中微机的一个代表机型是个人计算机,得到了极为广泛的应用,已经成为了人们生活中的必不可少的一部分,人们用它上网来了解世界各地的资讯,用它进行财务处理来管理公司和家庭开支,用它控制机电
本文标题:计时器汇编语言程序设计
链接地址:https://www.777doc.com/doc-3542723 .html