微机原理与接口技术课程设计报告.docx
- 文档编号:3357916
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:11
- 大小:204.13KB
微机原理与接口技术课程设计报告.docx
《微机原理与接口技术课程设计报告.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程设计报告.docx(11页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术课程设计报告
《微机接口技术课程设计》
设计报告
题目:
实时钟显示与定时控制设计
专业:
电子信息工程
班级:
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文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 课程设计 报告