




已阅读5页,还剩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操作,使其能够显示正确的动态的时间。 停止计时 显示停止计时时间 清零 显示初始时间 继续计时 显示动态时间 开中断计时 显示动态时间结束 按ESC键 按c/C键按g/G键检验键盘状态按下p/P键按下s/S键读字符显示提示语和初值时间清屏开始 图3-1 主程序流程图 清零 退出中断 十小时位加1十h位3小时位10 N24 小时位加1 N加1(N初值为0)十分位6 十分钟位加1ms位10 分钟位加1十秒位6 十秒位加1 秒位10十ms位10 秒位加1 十ms位加1ms位10 毫秒位加1 设置中断频率 开中断 设置中断屏蔽器 设置中断入口地址图3-2 中断服务子程序流程图4.程序设计步骤 4.1界面设置 在DOS界面中显示时间,要输入输出数据,需要设置界面。界面设置需要用到DOS功能调用的INT 10H指令。INT 10H 是由 BIOS 对屏幕及显示器所提供的服务程序,使用 INT 10H 中断服务程序时,先指定 AH 寄存器为下表编号其中之一,该编号表示欲调用的功用,当一切设定好之后再调用 INT 10H。1.设置光标形状:mov ah,1 ; 置光标类型,不显示光标mov ch,20hint 10h2.设置光标位置:mov dh,0 ; 行号mov dl, 0 ; 列号:mov bh,0 ; 页号mov ah, 2 ; 置光标位置int 10h3.在Teletype模式下显示字符:show3:mov ah, 0eh ; 显示字符(光标前移 ) ,al 字符, bl 前景色mov al, siint 10hinc siloop show3 为了使计时器的显示界面更加直观更加清楚,所以可以在int10h的情况下将AH赋值为06,初始化屏幕,同时置AL为00H而且为全屏空白,同时颜色通过在int 10H的情况下BH=000ch显示为红色,这样计时器会更加醒目。4.2检验键盘状态由于要实现键盘按下不同的键值实现各种不同的功能,所以需要判断键盘输入的为哪个键。首先检查键盘是否有输入, 若没有输入,则跳过检查键盘输入的键值的程序,若有输入则比较输入为何种键,接着执行该键值对应要完成的功能的程序。检验键盘状态程序如下:mov ah, 0bh ; 检验键盘状态,有输入 al=00 ,无输入 al=0fint 21hinc aljnz s1mov ah, 08h ; 键盘输入无回显 ,(al)= 输入字符int 21hcmp al, 1bh ; 按下 Esc 键结束程序je gooutcmp al, p ; 按下 p 键停止计时je pausecmp al, P ; 按下 p 键停止计时je pausecmp al, c ; 按下 c 键清零je clearcmp al, C ; 按下 C 键清零je clearjmp s14.3中断子程序1.08H号中断入口地址设置 由于要使用 08H 号中断来实现,计时功能,所以首先要获得08H号中断的原来的入口地址,AL里存中断类型号,将其存在了 ES:BX 里,接着设置其新入口地址,将新的中断向量存在 DS:DX 里就可以实现设置新入口地址。具体的代码实现如下:mov al, 08hmov ah, 35h ; 获取 08h 号中断的原入口地址int 21hpush espush bxpush dsmov ax, seg int08hmov ds, axmov dx, offset int08h ; 设置08h号中断的新入口地址mov al,08hmov ah,25hint 21h ; 调用08h号中断的服务程序pop ds2.中断屏蔽器设置 中断屏蔽寄存器的 I/O 端口地址是 21H , 它的 8 位对应控制 8 个外部设备 。 某位为 0 允许某外部设备中断,为 1 则表示某外部设备的中断请求被屏蔽。由上图可以看出要使键盘和定时器允许外部中断 , 则令其对应的位置零 ,同时使其他设备不允许外部中断。于是可通过以下代码进行设置:in al, 21hpush axmov al, 11111100bout 21h, al3.中断频率设置 根据设计要求,需要使系统内部 8253 输出方波频率为 100Hz,所以要对 08H号中断设置,使其能够 10ms 一次中断,同时要使其工作在通道0方式3的方波发生器。8253是微机系统常用的定时器芯片,它有三个独立的 16 位减法计数器,每个计数器分配一个端口地址,分别为 40h,41h,42h 。还有一个控制寄存器,端口地址为 43h 。把中断子程序的段地址和偏移地址送到 08H 中断向量中 , 由于 08H 中断向量硬件中断 ,计数 器 0 的输出 端 OU T 与中断控制 器 8259 A 的一位相连每秒中 断 18. 2 次 , 故需要 把 18.2H Z改为 100HZ ,而 CLK0 的输入频率是 1.1931817MHZ ,故需把 1.1931817 除以 100 的初始值送到 40H 端口就可以实现每秒 100 次的中断。所以设置计数初值为 11932 ,这样就可以达到 10ms 中断一次。实现该功能的代码如下:mov al, 00110110b ;设置通道 0 的方式 3out 43h, almov ax, 11932;定时器的时钟频率为 1.1931817MHz ,计数初值 = 1193182 / 100=11932out 40h, almov al, ahout 40h, al4.4判断计时进位 当十毫秒位超过9的时候,要对百毫秒位进 1,如果百毫秒位超过9时,要对秒位进1,当秒位超过,9时,对十秒位进1,如果十秒位超过5时,才对分钟位进 1 ,分钟位超过 9时,对十分钟位进 1 ,如果十分钟位超过 5 时,对小时位进1。小时位的进位设计就要考虑到小时最多24的特殊性了,所以设置一个变量,在小时位加1的同时给它也加1.如果这个变量加到了24则重新开始计时,此时再把变量置零。实现此部分功能的程序代码如下:inc msec2 ;十毫秒位加 1cmp msec2, 3ah ;十毫秒位是否小于 100jb tmov msec2,30hinc msec1cmp msec1,3ah ;百毫秒位是否小于 10jb tmov msec1,30hinc sec2cmp sec2,3ah ;秒位是否小于 10jb tmov sec2,30hinc sec1cmp sec1,36h ;十秒位是否小于 6jb tmov sec1,30hinc min2cmp min2,3ah ;分钟位是否小于 10jb tmov min2,30hinc min1cmp min1,36h ;十分钟位是否小于6jb tmov min1,30hinc hou2inc ncmp n, 24 ;比较是否到了24小时,到了就跳到清零程序jz qinlingcmp hou2,3ah ;小时位是否小于10jb tmov hou2,30hinc hou1cmp hou1,33h ;十小时位是否小于3jb tmov hou1,30ht: mov al,20hout 20h,al;中断结束命令pop dspop axIret4.5暂停与继续计时 要暂停计时器,实际上是在暂停发生中断时显示的时间的加 1 操作,所以可以设置08h号中断的入口地址使其不进入计时中断服务程序进行加1操作,这样就能达到暂停计时的功能。同理使其继续计时也是设置 08h号中断的入口地址,使其继续进入计时中断服务程序就可以继续进行计时了。实现此功能的代码如下:pause:pop axout 21h,alpop dx ; 把 bx 送到 dx , 原中断向量存在 ES:BX 中pop bxpush dsmov ds,bxmov al,08hmov ah,25h ; 设置 08h 号中断入口地址为保存下来的原入口地址int 21hpop dsaa1:mov ah, 08h ; 键盘输入无回显, al= 输入字符int 21hcmp al, 1bh ;按下 Esc 键结束程序je gooutcmp al, g;按下 g 键继续程序je jixucmp al, G; 按下 G 键继续程序je jixujmp aa1jixu:jmp q15程序调试说明与分析5.1初始界面运行程序后初始界面如图5-1所示:图5-1 初始界面5.2按下S键开始计时界面按下S键后开始计时界面如图5-2所示: 图5-2 按下S键后开始计时界面5.3按下P键暂停计时界面按下P键暂停计时界面如图5-3所示: 图5-3 按下P键暂停计时界面5.4按下G键继续计时界面按下G键继续计时界面如图5-4所示: 图5-4 按下G键继续计时界面5.5按下C键清零界面5.5按下C键清零界面如图5-4所示: 图5-5 按下C键清零计时界面5.6按下ESC键退出程序运行后在任意时刻按下ESC键,程序退出。6心得体会 计算机的诞生是人类科学史上的一件大事。半个多世纪以来,计算机得到了迅猛的发展,从小型机到巨型机,从台式机到手提电脑,科学家实现了计算机一代接一代的跨越性的飞跃。其中微机的一个代表机型是个人计算机,得到了极为广泛的应用,已经成为了人们生活中的必不可少的一部分,人们用它上网来了解世界各地的资讯,用它进行财务处理来管理公司和家庭开支,用它控制机电部件来实现过程操作的自动化对科研工作者而言,微机更是需要掌握的“第二语言”。这次微机课程设计让我了解到了微机在各个方面的应用。 平常我们上微机课时,老师讲的都是理论知识,讲的很详细但比较简单,编程也是这样,平常作业和考试时一段程序不超过20行,所以做课设前觉得应该很容易,再拿到题后,构思了一天,发现虽然思路不难,但要处理的模块太多了,就计时器汇编语言程序设计来说,进位跳转就有6次,还要设计界面(这些需要靠自学掌握),还有频率设置,说起来简单,就是1秒100次脉冲,但真正做时不知从哪下手我上网也查了一些资料,发现程序比自己想象中的要长,在word中程序有7、8页长,经过两天的研究,翻书,查资料结合自己所学,总算看懂了大部分,对照网上的资料,自己慢慢学着编程,一开始错误一大堆,经过耐心的寻找、对比、问同学后终于调试出来了。我心中的大石终于放下了。在这次微机课程设计中,通过翻书、查资料、与同学讨论,让我实践能力得到了质的飞跃,让我对微机这门课程有了更深的了解,同时也加深了理论知识的掌握,让我们学以致用,使我们所学的知识掌握的更加牢固,感谢黄老师耐心的教导,是你让我们对微机有了更新的了解,让我们对微机有了浓厚的兴趣。我希望我们可以多做点课程设计,让理论与实践结合,这样才能激发我们的创新思想,我们也能更快更牢固的掌握知识。 参考文献1彭虎等著.微机原理与接口技术(第二版).电子工业出版社,20052艾德才.Pentium系列微型计算机原理与接口技术.高等教育出版社,20003戴梅萼.微型计算机原理与接口技术.清华大学出版社,20034周明德.微型计算机系统原理及应用.清华大学出版社,2002附件(程序清单)data segmenthou1 db 0hou2 db 0mw db :min1 db 0min2 db 0m db :sec1 db 0sec2 db 0m2 db :msec1 db 0msec2 db 0count equ $-hou1h db 0hello db Copyright by jibinggao.,0ah,0dh db Welcome to use the calculagraph of sail. ,0ah,0dh db s:start p:pause g:continue Esc:exit c:clear ,0ah,0dhdata endscode segmentmain proc farassume cs:code,ds:datastart:mov ax, datamov ds, axmov ah,1 ; 置光标类型,不显示光标mov ch,20hint 10hcall clean_screenpush axpush bx mov ax,0600h ;ah=06(滚动)al=00(全屏空白) mov bh,000ch ;设置背景颜色(3)和前景颜色(e) sub cx,cx mov dx,5f5fhint 10hpop axpop bxmov dh,1; 行号mov dl,0 ; 列号mov bh,0 ; 页号mov ah, 2 ; 置光标位置int 10hmov cx, 115mov si, offset helloshow3:mov ah, 0eh ; 显示字符(光标前移 ) ,al 字符, bl 前景色mov al, siint 10hinc siloop show3call locate_cursorcall showq2: mov ah, 08h ; 键盘输入无回显, al= 输入字符int 21hcmp al, 1bh ; 按下 Esc 键结束程序je goout1jmp yygoout1: mov ah, 4chint 21hyy: cmp al ,s ; 按下 s 键开始计时je q1cmp al ,Sje q1jmp q2q1: cli ; 使 IF 清零mov al, 08hmov ah, 35h ; 获 取 08 h 号中断的原入口地址int 21hpush espush bxpush dsmov ax, seg int08hmov ds, axmov dx, offset int08h ; 设置 08h 号中断的新入口地址mov al,08hmov ah,25hint 21h ; 调 用 08 h 号中断的服务程序pop dsin al,21h ;PC 机中 的8253 端口地址为 40H-43H ,这段程序应该是 给8253 初始化和写定时初值push ax ; 8253 是微机系统常用的定时器芯片,它有三个独立的 16 位减法计数器,每个计数器分配一个端口地址,分别为 40h,41h,42h。还有一个控制寄存器,端口地址为 43hmov al, 11111100bout 21h, almov al, 00110110bout 43h, almov ax,11932 ; 定时器的时钟频率 为1.193 187 MHz,计数初值 = 11931 87 / 100=1193 2out 40h, almov al, ahout 40h, alstis1: call locate_cursorcall showmov ah, 0bh ; 检验键盘状态,有输入 al=00 ,无输入 al=0ffhint 21hinc al ;jnz s1mov ah, 08h ; 键盘输入无回显, al= 输入字符int 21hcmp al, 1bh ; 按下 Esc 键结束程序je gooutcmp al, p ; 按下 p 键停止计时je pausecmp al, P ; 按下 p 键停止计时je pausecmp al, c ; 按下 c 键清零je clearcmp al, C ; 按下 c 键清零je clearjmp s1clear: pop axout 21h,alpop dx ; 把 bx 送到 dxpop bxpush dsmov ds,bxmov al,08hmov ah,25hint 21hpop dsmov h, 0mov min1, 30hmov min2, 30hmov sec1, 30hmov sec2, 30hmov msec1, 30hmov msec2, 30hjmp startpause:pop axout 21h,alpop dx ; 把 bx 送到 dx ,原中断向量存在 ES:BX 中pop bxpush dsmov ds,bxmov al,08hmov ah,25hint 21hpop dsaa1:mov ah, 08h ; 键盘输入无回显, al= 输入字符int 21hcmp al, 1bh ; 按下 Esc 键结束程序je gooutcmp al, g ; 按下 g 键继续程序je jixucmp al, G ; 按下 g 键继续程序je jixujmp aa1jixu:jmp q1goout:pop axout 21h,alpop dx ; 把 bx 送到 dxpop ds ; 把 es 送到 dsmov ax, 2508hint 21hmov al, 00110110bout 43h, alsub al, alout 40h, alout 40h, almov ah, 4chint 21hmain endpint08h proc near ; 使 用8253/8254 定时器 0 的中断类型 8 计时 , 以 100 次/s 的频率发出中断 , 相当于一次中断 10mspush axpush dsmov ax,datamov ds,axinc msec2cmp msec2, 3ahjb tmov ms
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民宅建筑方案设计规范
- 关于素质活动的方案策划
- 环境清洁活动策划方案模板
- 五四环保活动策划方案
- 都江堰建筑方案设计
- 配电柜改造施工方案
- 2025年中级会计职称考试模拟试卷 解析版 考试技巧
- 基于数据分析的市场营销策略
- 2025工会考试题库及答案
- 2025河北邯郸武安市选聘农村党务(村务)工作者180人笔试备考试题及参考答案详解一套
- GB/T 8295-2008天然橡胶和胶乳铜含量的测定光度法
- 生产作业管理讲义
- 诗和词的区别课件
- 胸外科围手术期呼吸功能锻炼的意义培训课件
- (新版)海南自由贸易港建设总体方案考试题库(含答案)
- 战现场急救技术教案
- 内蒙古电网介绍
- 气力输送计算
- 新北师大版七年级上册数学全册课件
- 公共关系学授课教案
- 河北省城市集中式饮用水水源保护区划分
评论
0/150
提交评论