微机原理课程设计(电子秒表的)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理与应用课程设计
目录
一、设计任务
1、计时秒表,具有分、秒和百分之一秒的计时功能。
2、可以在屏幕中央显示计时结果,屏幕显示彩色图案和文字。
3、秒表具有键控启/停功能,而且可以随时通过键盘复位,清零。
二、设计原理
1、HALT(启动子程序)
2、DIS(宏定义——苹果显示程序)
3、DISS(宏定义——字符串的输出)
4、CLOUR(字体颜色设置程序)
5、IOSET(设置光标位置子程序)
6、GO(初始化显示子程序)
7、TIME(延时子程序)
8、TRAN(压缩BCD码转ASCII码程序)
9、复位、停止等功能的实现
三、流程图
a)主程序流程图
b)压缩BCD转ASCII码子程序流程图
c)延时子程序流程图
四、程序段
五、程序调试
六、程序运行结果
七、心得体会
八、参考文献
一、设计任务:
1.计时秒表,具有分、秒和百分之一秒的计时功能,并可以在屏幕中央显示计时结果。
2.屏幕显示彩色图案和文字。
3.秒表具有键控启/停功能,而且可以随时通过键盘复位,清零。
二、设计原理:
本程序的主要设计原理是用主程序完成百分之一秒与秒之间的转换,显示计时结果,实现暂停,暂停再启动,复位,复位再启动的功能,并通过调用一些附加程序,缩减主程序的长度,提高运行效率和精度,现将用到的所有附加程序的原理及其在运行过程中所起到的作用汇总如下:
1.DIS(宏定义——苹果显示程序)
通过宏调用,实现苹果图案的显示。在宏定义里,设置一个形参变量,作为移动光标的位置,在下面调用宏中,给予变量X不同的实参,输出苹果图案。
2.DISS(宏定义——字符串的输出)
原理同上。
3.CLOUR(字体颜色设置程序)
通过字体颜色设置程序,实现屏显字体颜色的改变。当改变BX值时,字体颜色会改变。
4.HALT(启动子程序)
通过启动子程序,实现计时的开始,当从键盘输入一个字符时,判断是否等于S,如果不等,则在循环执行启动子程序中动态等待,直到输入的字符为S 时,计时开始。
5.IOSET(设置光标位置子程序)
通过设置光标子程序,来设置显示的区域。一般整个屏幕可显示25行,80列,屏幕左上角字符位置为0行0列,右下脚字符为24行79列,对应十六进制为:左上脚为(0,0),右下脚为(18,4F)。入口信息为:(AH)=2 要设置光标;(BH)=0 页号;(DH,DL)=00要置光标于0行0列。DX赋值为0D27H,光标置位于屏幕中央。
6.GO(初始化显示子程序)
通过将在数据段定义的BUFFER数组的首址赋给BX,将待显示初值字符串00:00存入数组中的相应位置,当每次复位以后,重新调用该子程序,将程序的执行结果修正为00:00,并显示于屏幕上,从而实现了程序的初值设定和复位功能。
7.TIME(延时子程序)
计算机每执行一条指令,虽然很快,但是需要一些时间,因此在本程序中可以通过延时程序,让计算机去执行一些无关的程序,来达到时钟秒与百分之一秒转换时的时间延迟。每条指令执行时间的长短,是以计算机的时钟周期为基本单位的,因此不同的计算机可以通过修改延时程序数值来使其达到准确计时。
8.TRAN(压缩BCD码转ASCII码程序)
计算机显示数据时使用的是数据的ASCII码,而在程序设计当中程序的计时数值是BCD码,因此,需要通过此子程序实现将BCD码转变为ASCII码,以备送屏幕显示。因为时钟计时的压缩BCD码每一个数都有8位,因此将其右移四位并加30H,将其高位数字取出,送BX存放,再将其低位数字取出,加30H,送BX 存放,达到不同码制之间转换的目的。
9.复位、停止等功能的实现
通过对输入字符的判断和各种循环的嵌套调用实现。
整体上本程序的主要设计原理是先在数据段中定义“S START R RESET E END C CONTINUE”控制字符串,并定义缓冲区。将数据段的段基址送DS,并将“S START R RESET E END C CONTINUE”显示,同时调用GO子程序,将显示结果初始化。同时设置光标,启动计时,启动延时程序,将百分之一秒加1并将其设置为压缩BCB码,当其CF不为1时,送屏幕显示,当其为1时,将其设置为0,并在秒上加1,当秒等于60时,其置0,当其小于60时,送屏幕显示。在计时过程中,如果键入R,则将其复位,并重新开始计时,当键入E时,计时暂停,如果键入C,则继续计时,如果键入R,则复位,设置为00:00,当再次键入S时,再次计时开始。
三.框图(见附页)
四、程序清单(附显示结果)
DAT SEGMENT
SPACE DB 2000 DUP (' ')
FU1 DB 'Where there is a will$'
FU2 DB 'There is a way$'
FU3 DB 'Made By:$'
FU4 DB 'Sun and Feng$'
FU5 DB '12 / 28 / 2008$'
FU6 DB "INPUT S START R RESET E END C CONTINUE$";设置控制字符串BUFFER DB 10 DUP(?) ;定义缓冲区
DAT ENDS
COD SEGMENT
START PROC FAR
ASSUME CS:COD,DS:DAT
MOV AX,DAT
MOV DS,AX
CLOUR: ;字体颜色设置
MOV AX,0003H
INT 10H
MOV AX,DAT
MOV DS,AX
MOV ES,AX
MOV BP,OFFSET SPACE
MOV DX,0E00H
MOV CX,2000
MOV BX,0004H