计时器汇编语言程序设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

1设计要求 (1)

1.1初始条件 (1)

1.2设计任务 (1)

2总体方案论证 (2)

2.1方案一 (2)

2.2方案二 (2)

2.3方案论证 (2)

3程序流程图 (3)

3.1主程序流程图 (3)

3.2中断服务子程序流程图 (3)

4.程序设计步骤 (6)

4.1界面设置 (6)

4.2检验键盘状态 (6)

4.3中断子程序 (7)

4.4判断计时进位 (8)

4.5暂停与继续计时 (9)

5程序调试说明与分析 (10)

5.1初始界面 (10)

5.2按下S键开始计时界面 (10)

5.3按下P键暂停计时界面 (10)

5.4按下G键继续计时界面 (11)

5.5按下C键清零界面 (11)

5.6按下ESC键退出 (12)

6心得体会 (12)

参考文献 (14)

附件(程序清单) (15)

计时器汇编语言程序设计

1设计要求

1.1初始条件

➢采用16位微处理器8086 CPU以及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.3方案论证

方案一要用到8155芯片和数码管,而且计时器是调用系统时钟完成的,这种方法必须每秒或者每更短的时间调用系统时钟然后进行相减操作才能达到计时的每秒时时显示动态时间,虽然理论上可以实现计时功能,但是会比较的麻烦。

方案二通过调用系统的08h号或者1ch号中断来进行设置,使其能够产生100Hz即10ms 一次的中断进而动态显示时间。这种方法不仅简单易行,而且较方便。而且方案二在DOS环境下运行的,不需要额外的芯片,所以方案二更好更合适。

3程序流程图

3.1主程序流程图

主程序流程图如图3-1所示,主程序是用来完成屏幕初始化:清屏和显示初始界面,同时对键盘按键输入检测和对键盘按下的键值进行判断,执行相应键值所对应的程序,达到开始、暂停、继续、清零、退出的功能。进而动态显示和控制时间。

3.2中断服务子程序流程图

中断服务子程序流程图如图3-2所示,中断服务子程序的功能是每次中断执行一次该程序,对十毫秒位、百毫秒位、秒位、十秒位、分钟位、十分钟位、小时位和十小时位进行加1和判断是否进位操作,即达到该时间的情况下就给该时间对应位进行加1操作,使其能够显示正确的动态的时间。

图3-1 主程序流程图

图3-2 中断服务子程序流程图

4.程序设计步骤

4.1界面设置

在DOS界面中显示时间,要输入输出数据,需要设置界面。界面设置需要用到DOS功能调用的INT 10H指令。INT 10H 是由BIOS 对屏幕及显示器所提供的服务程序,使用INT 10H 中断服务程序时,先指定AH 寄存器为下表编号其中之一,该编号表示欲调用的功用,当一切设定好之后再调用INT 10H。

1.设置光标形状:

mov ah,1 ; 置光标类型,不显示光标

mov ch,20h

int 10h

2.设置光标位置:

mov dh,0 ; 行号

mov dl, 0 ; 列号:

mov bh,0 ; 页号

mov ah, 2 ; 置光标位置

int 10h

3.在Teletype模式下显示字符:

show3:

mov ah, 0eh ; 显示字符(光标前移),al 字符,bl 前景色

mov al, [si]

int 10h

inc si

loop show3

为了使计时器的显示界面更加直观更加清楚,所以可以在int10h的情况下将AH赋值为06,初始化屏幕,同时置AL为00H而且为全屏空白,同时颜色通过在int 10H的情况下BH=000ch显示为红色,这样计时器会更加醒目。

4.2检验键盘状态

由于要实现键盘按下不同的键值实现各种不同的功能,所以需要判断键盘输入的为哪个键。首先检查键盘是否有输入,若没有输入,则跳过检查键盘输入的键值的程序,若有输入则比较输入为何种键,接着执行该键值对应要完成的功能的程序。

检验键盘状态程序如下:

mov ah, 0bh ; 检验键盘状态,有输入 al=00 ,无输入 al=0f

int 21h

inc al

jnz s1

mov ah, 08h ; 键盘输入无回显,(al)= 输入字符

int 21h

cmp al, 1bh ; 按下 Esc 键结束程序

je goout

cmp al, 'p' ; 按下 p 键停止计时

相关文档
最新文档