资源描述:
《微机原理与接口技术课程设计--实时钟显示与定时控制设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《微机接口技术课程设计》设计报告题目:实时钟显示与定时控制设计专业:电子信息工程班级:XXXXXXX学号:XXXXXXXXX姓名:XXX指导老师:XXX设计时间:2013年6月19日到2013年6月25号1.设计任务说明通过本课程设计,综合应用接口技术各汇编语言程序设计技术,在PC机上实现时钟显示、定时和响铃,以提高接口、汇编技术的应用能力。2.总体设计(1).利用BIOS和DOS的系统功能调用,能将计算机系统的日期和时间读出并显示出来。(2).用“时:分:秒”(都是两位)的形式连续显示系统时间。(3).利用定时接口芯片每秒钟响一次铃。(4).提示输入定时时
2、间(即定时秒数),每经历指定的秒数,则演奏乐曲。3.详细设计模块描述:⑴.利用定时中断实现时钟显示。当产生定时中断时(由8259A的IRQ0引起),CPU转入BIOS的08H号中断处理程序,在该中断处理程序中是一条软中断指令“INT1CH”,而在该软中断程序中只有一条IRET指令,这样系统每秒钟产生18.2次定时中断,调用18.2次INT1CH,这为开发者提供了一个编写与时间有关的程序的软中断接口,上例的定时响铃就是借用这个软接口实现的。其具体操作如下:①在时钟显示程序,截获1CH号中断,在新的1CH中断处理程序安排一个计数器,记录调用的次数,每18次(约一
3、秒钟)显示一次当前时间。②利用BOIS的1AH号中断的0号功能,读取当前计时器的数值:入口参数:AH=02H执行:INT1AH出口参数:AL=午夜信号,CH=时的BCD码,CL=分的BCD码,DH=秒的BCD码③利用BIOS的10H号中断的13H号功能,实现在屏幕的右上角显示时间。④在主程序中要保存原1CH号中断的中断向量,并设置新的时钟显示中断程序的中断向量,然后作其它工作,如调用BIOS的键盘中断INT16H的0号功能,等待用户按键盘,也就是等待中断的发生,并在屏幕右上角显示时间……,当用户按键后,主程序工作完成后,恢复原1CH中断向量。⑵.在定时中断发
4、生时同时调用发声程序实现响铃。发声程序用定时器驱动扬声器方式,这是直接利用8253/8254定时器产生声音的一种方法。定时器2的GATE2与8255A的端口61H的PB0相连,当PB0=1时,GATE2获得高电平,使定时器2可以在模式3(方波)下工作。定时器2的OUT2与端口61H的PB1通过一个与门与扬声器的驱动电路相连,如下图所示。当PB1=1时,允许OUT2输出的频率信号到达扬声器电路。定时器驱动扬声器方式发声原理定时器2输出的方波频率取决与初始化定时器时提供的计数初值,即对CLK2端的计数脉信号的分频系数。加在CLK2端上的频率为1193100赫之=
5、12348CH赫之,送入定时器2的计数初值为:12348CH÷发声频率。流程图:主程序流程图:开始是否有键盘被按下NY保存原1CH终端的入口地址设置新的1CH中断入口地址中断是否响应NY进入中断程序恢复原1CH号中断的中断向量结束中断程序:给间隔计数器装初值18是否到显示时候间隔计数器减1转到next给计数器重新装值18并开中断保护现场并填写DS和ES调用get_t和get_m子程序读取系统时间及日期将时间及日期显示到屏幕上程序指定位置处恢复现场中断返回结束开始4.程序及说明count_val=18;间隔数(约为一秒)dpage=0;显示页码数row=0;显
6、示行号column=70-buff_len;显示开始列号column1=70-buff_len1;显示日期的开始列号color=07h;字体颜色.286.modelsmall.code;为方便程序驻留内存,把中断处理程序放在主程序之前;下面是1CH中断处理程序使用的变量countdwcount_val;“滴答”间隔计数器hhhhdb?,?,":";小时的定义mmmmdb?,?,":";分的定义ssssdb?,?;秒的定义buff_len=$-offsethhhh;显示时间字长xxxxdb?,?;年高两位的定义yyyydb?,?,"";年低两位的定义zzzz
7、db?,?,"";月定义rrrrdb?,?;日定义buff_len1=$-offsetxxxx;显示日期字长cursordw?;保存当前光标位置;1CH号中断处理程序代码new1ch:cmpcs:count,0;是否到显示时候jznext;判断是否转到nextdeccs:count;否则间隔计数器减1iret;中断返回next:;显示系统时间日期子程序movcs:count,count_val;间隔计数器重置初值18sti;开中断pusha;保护现场pushdspushespushcs;填写DS和ESpopdspushdspopescallget_t;调用
8、读取系统时间子程序movbh,dpage;BX<-页