微机原理与接口技术课程设计实时钟显示与定时控制设计.docx

上传人:b****3 文档编号:10508499 上传时间:2023-05-26 格式:DOCX 页数:14 大小:202.94KB
下载 相关 举报
微机原理与接口技术课程设计实时钟显示与定时控制设计.docx_第1页
第1页 / 共14页
微机原理与接口技术课程设计实时钟显示与定时控制设计.docx_第2页
第2页 / 共14页
微机原理与接口技术课程设计实时钟显示与定时控制设计.docx_第3页
第3页 / 共14页
微机原理与接口技术课程设计实时钟显示与定时控制设计.docx_第4页
第4页 / 共14页
微机原理与接口技术课程设计实时钟显示与定时控制设计.docx_第5页
第5页 / 共14页
微机原理与接口技术课程设计实时钟显示与定时控制设计.docx_第6页
第6页 / 共14页
微机原理与接口技术课程设计实时钟显示与定时控制设计.docx_第7页
第7页 / 共14页
微机原理与接口技术课程设计实时钟显示与定时控制设计.docx_第8页
第8页 / 共14页
微机原理与接口技术课程设计实时钟显示与定时控制设计.docx_第9页
第9页 / 共14页
微机原理与接口技术课程设计实时钟显示与定时控制设计.docx_第10页
第10页 / 共14页
微机原理与接口技术课程设计实时钟显示与定时控制设计.docx_第11页
第11页 / 共14页
微机原理与接口技术课程设计实时钟显示与定时控制设计.docx_第12页
第12页 / 共14页
微机原理与接口技术课程设计实时钟显示与定时控制设计.docx_第13页
第13页 / 共14页
微机原理与接口技术课程设计实时钟显示与定时控制设计.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微机原理与接口技术课程设计实时钟显示与定时控制设计.docx

《微机原理与接口技术课程设计实时钟显示与定时控制设计.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程设计实时钟显示与定时控制设计.docx(14页珍藏版)》请在冰点文库上搜索。

微机原理与接口技术课程设计实时钟显示与定时控制设计.docx

微机原理与接口技术课程设计实时钟显示与定时控制设计

《微机接口技术课程设计》

设计报告

题目:

实时钟显示与定时控制设计

专业:

电子信息工程

班级:

XXXXXXX

学号:

XXXXXXXXX

姓名:

XXX

指导老师:

XXX

 

设计时间:

2013年6月19日到2013年6月25号

1.设计任务说明

通过本课程设计,综合应用接口技术各汇编语言程序设计技术,在PC机上实现时钟显示、定时和响铃,以提高接口、汇编技术的应用能力。

2.总体设计

(1).利用BIOS和DOS的系统功能调用,能将计算机系统的日期和时间读出并显示出来。

(2).用“时:

分:

秒”(都是两位)的形式连续显示系统时间。

(3).利用定时接口芯片每秒钟响一次铃。

(4).提示输入定时时间(即定时秒数),每经历指定的秒数,则演奏乐曲。

3.详细设计

模块描述:

⑴.利用定时中断实现时钟显示。

当产生定时中断时(由8259A的IRQ0引起),CPU转入BIOS的08H号中断处理程序,在该中断处理程序中是一条软中断指令“INT1CH”,而在该软中断程序中只有一条IRET指令,这样系统每秒钟产生18.2次定时中断,调用18.2次INT1CH,这为开发者提供了一个编写与时间有关的程序的软中断接口,上例的定时响铃就是借用这个软接口实现的。

其具体操作如下:

①在时钟显示程序,截获1CH号中断,在新的1CH中断处理程序安排一个计数器,记录调用的次数,每18次(约一秒钟)显示一次当前时间。

②利用BOIS的1AH号中断的0号功能,读取当前计时器的数值:

入口参数:

AH=02H

执行:

INT1AH

出口参数:

AL=午夜信号,CH=时的BCD码,CL=分的BCD码,DH=秒的BCD码

③利用BIOS的10H号中断的13H号功能,实现在屏幕的右上角显示时间。

④在主程序中要保存原1CH号中断的中断向量,并设置新的时钟显示中断程序的中断向量,然后作其它工作,如调用BIOS的键盘中断INT16H的0号功能,等待用户按键盘,也就是等待中断的发生,并在屏幕右上角显示时间……,当用户按键后,主程序工作完成后,恢复原1CH中断向量。

⑵.在定时中断发生时同时调用发声程序实现响铃。

发声程序用定时器驱动扬声器方式,这是直接利用8253/8254定时器产生声音的一种方法。

定时器2的GATE2与8255A的端口61H的PB0相连,当PB0=1时,GATE2获得高电平,使定时器2可以在模式3(方波)下工作。

定时器2的OUT2与端口61H的PB1通过一个与门与扬声器的驱动电路相连,如下图所示。

当PB1=1时,允许OUT2输出的频率信号到达扬声器电路。

定时器驱动扬声器方式发声原理

定时器2输出的方波频率取决与初始化定时器时提供的计数初值,即对CLK2端的计数脉信号的分频系数。

加在CLK2端上的频率为1193100赫之=12348CH赫之,送入定时器2的计数初值为:

12348CH÷发声频率。

 

流程图:

主程序流程图:

 

中断程序:

 

4.程序及说明

count_val=18;间隔数(约为一秒)

dpage=0;显示页码数

row=0;显示行号

column=70-buff_len;显示开始列号

column1=70-buff_len1;显示日期的开始列号

color=07h;字体颜色

.286

.modelsmall

.code;为方便程序驻留内存,把中断处理程序放在主程序之前

;下面是1CH中断处理程序使用的变量

countdwcount_val;“滴答”间隔计数器

hhhhdb?

?

":

";小时的定义

mmmmdb?

?

":

";分的定义

ssssdb?

?

;秒的定义

buff_len=$-offsethhhh;显示时间字长

xxxxdb?

?

;年高两位的定义

yyyydb?

?

"\";年低两位的定义

zzzzdb?

?

"\";月定义

rrrrdb?

?

;日定义

buff_len1=$-offsetxxxx;显示日期字长

cursordw?

;保存当前光标位置

;1CH号中断处理程序代码

new1ch:

cmpcs:

count,0;是否到显示时候

jznext;判断是否转到next

deccs:

count;否则间隔计数器减1

iret;中断返回

next:

;显示系统时间日期子程序

movcs:

count,count_val;间隔计数器重置初值18

sti;开中断

pusha;保护现场

pushds

pushes

pushcs;填写DS和ES

popds

pushds

popes

callget_t;调用读取系统时间子程序

movbh,dpage;BX<-页号

movah,3;取原光标位置

int10h

movcursor,dx;保存原光标位置

movbp,offsethhhh;bp<-时间信息串首地址

movbh,dpage

movdh,row

movdl,column

movbl,color

movcx,buff_len

moval,0;al<-显示模式,移动光标

movah,13h;显示时钟

int10h

movbh,dpage

movdx,cursor

movah,2;恢复光标原位置

int10h

callget_m;调用读取系统日期中断程序

movbh,dpage

movah,3

int10h

movcursor,dx

movbp,offsetxxxx;bp<-日期信息串首地址

movbh,dpage

movdh,row+1

movdl,column1

movbl,color

movcx,buff_len1

moval,0

movah,13h

int10h

movbh,dpage

movdx,cursor

movah,2

int10h

popes;恢复现场

popds

popa

iret;中断返回

get_tproc;取当前系统时间过程

movah,2;取时间信息

int1ah

moval,ch;al<-ch中的小时数

callttasc;调用转换压缩BCD码为ASCLL码子程序

xchgah,al;高低位ASCLL码互换

movwordptrhhhh,ax;保存小时数

moval,cl;al<-cl中的分钟数

callttasc

xchgah,al

movwordptrmmmm,ax;保存分钟数

moval,dh;al<-dh中的秒数

callttasc

xchgah,al

movwordptrssss,ax;保存秒数

ret

get_tendp

get_mproc;取当前系统日期过程

pusha;保护现场

movah,2ah;取系统日期

int21h

movax,cx

movcl,10d

divcl

movbh,ah

xorah,ah

divcl

movbl,ah

addbx,3030h

movwordptryyyy,bx;保存年的低两位数

xorah,ah

divcl

movbh,ah

xorah,ah

divcl

movbl,ah

addbx,3030h

movwordptrxxxx,bx;保存年的高两位数

xorax,ax

xorbx,bx

moval,dh

cbw

callcharge

movwordptrzzzz,ax;保存月数

xorax,ax

moval,dl

cbw

callcharge

movwordptrrrrr,ax;保存日数

popa

ret

get_mendp

chargeproc;二进制转化为十进制过程

pushcx

pushdx

movcl,10d

divcl

addal,30h

addah,30h;转化为十进制

popdx

popcx

ret

chargeendp

ttascproc;压缩BCD码为ASCLL码子程序

pushcx

movah,al

andal,0fh

movcl,4

shrah,cl;高四位移到低位四位

addax,3030h;转为ASCLL码

popcx

ret

ttascendp

;初始化代码和变量

old1chdd?

start:

pushcs

popds;填写DS

movax,351ch;取1CH号中断向量

int21h

movwordptrold1ch,bx;保存向量偏移地址

movwordptrold1ch+2,es;保存向量段地址

movdx,offsetnew1ch;dx<-新时钟中断入口偏移地址

movax,251ch;新中断段地址已在DS中

int21h;设置新的1CH号中断向量

movah,0;等待按键

int16h

ldsdx,old1ch

movax,251ch;恢复原中断向量

int21h

movah,4ch

int21h

endstart

5.系统测试

1.测试方法

首先在命令提示符下编译运行源程序,显示出时间和日期,然后在

.asm文件里面修改显示位置,显示顺序部分程序,调整秒数显示的频率,然后编译运行,观察更改过后的运行结果。

2.测试结果

图1

 

图2

图1为初始程序运行结果

图2表示经过部分修改过后的运行结果

运行结果如上图所示,第二个图是在第一个图的源程序上经过改变列号,改变时间和日期的首地址和增加了一个秒的变量,保存了两个秒数的变化,使其结果变成图2

6.总结与体会

通过这次的综合设计性实验,让我更加清楚的了解了8259A在PC机中的工作情况,基本掌握了软中断服务程序的结构及编写方法。

同时学习并深刻了结了PC机发声的原理和方式,掌握了PC机发声程序和延时程序的编写方法,进一步了结了8255A和8253在PC机中的应用。

在本课程设计中,学会了应用接口技术各汇编语言程序设计技术,在PC机上实现时钟显示、定时和响铃,以提高接口、汇编技术的应用能力。

在编程方面,通过这次实验,让我加深了对DOS和BIOS系统功能指令的理解,把以前没记住的指令都加深了印象,巩固了汇编语言编程的基础知识。

在独立完成实验过程还有写困难,本次试验在同学的帮助下完成了实验编程,希望以后在这方面有更大的进步;还有部分指令在使用过程中理解有困难,在学习过程多我会再多花些时间去理解。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2