惠州学院微机报告讲解.docx
《惠州学院微机报告讲解.docx》由会员分享,可在线阅读,更多相关《惠州学院微机报告讲解.docx(25页珍藏版)》请在冰豆网上搜索。
![惠州学院微机报告讲解.docx](https://file1.bdocx.com/fileroot1/2023-7/24/0d841bda-b4a8-466e-95fc-05a1e2236dd4/0d841bda-b4a8-466e-95fc-05a1e2236dd41.gif)
惠州学院微机报告讲解
惠州学院计算机科学系
课程设计(综合实验)报告
(2015--2016年度第一学期)
课程名称:
微型计算机技术
题目:
多功能实时时钟
班级:
最牛逼班
学号:
111111222222
学生姓名:
杰克
指导教师:
老师
设计周数:
1周
同组人:
路飞,鸣人
日期:
2015年12月31日
一、课程设计的目的与要求。
1.1设计的目的。
通过本次课程设计要掌握芯片使用的方法,灵活运用课本知识,加深所学的知识,对所学的相关芯片的原理、内部结构、使用方法等有更加深刻的了解,学会利用课本知识联系实际应用及编程。
1.2设计的要求。
(1)实时时钟
由时钟信号产生部分和时间显示部分组成时钟计时器,计算中断时间准确计时、分、秒;
(2)小键盘控制多功能选择
采用小键盘输入,通过小键盘LED数码管显示,不同键输入对应不同功能(如时间暂停开始,设置时间等)。
1.3设计的意义。
通过了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。
二、设计正文。
2.1设计的基本原理。
2.1.1设计所用芯片结构
8253的功能用途是:
(1)延时中断
(2)可编程频率发生器
(3)事件计数器
(4)二进倍频器
(5)实时时钟
(6)数字单稳
(7)复杂的电机控制器
8253有六种工作方式:
(1)方式0:
计数结束中断
(2)方式1:
可编程频率发生器
(3)方式2:
频率发生器
(4)方式3:
方波频率发生器
(5)方式4:
软件触发的选通信号
(6)方式5:
硬件触发的选通信号
8253各引脚功能如下。
D7~D0——八条双向数据线;
WR(低电平有效)——写输入信号;
RD(低电平有效)——读输入信号;
CS(低电平有效)——片选输入信号;
A0、A1——片内寄存器地址输入信号;
CLK——计数输入,用于输入定时基准脉冲或计数脉冲;
OUT——输出信号,以相应的电平指示计数的完成,或输出脉冲波形;
GATE——选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。
2.2设计方案。
2.2.1总体方案。
(见附录)
2.2.2硬件原理图。
2.3具体模块设计。
2.3.1主程序模块:
;*******************************;
;*键盘显示控制实验*;
;*******************************;
inta00equ20h;8259aport,口地址
inta01equ21h;8259aport,口地址
port0equ2b0h;8279dataport,8279数据口
port1equ2b1h;8279ctrlport,8279控制口
time0equ280h;8253time0port,8253定时器0口地址
time1equ281h;8253time1port,8253定时器1口地址
timecequ283h;8253ctrlport,8253控制口地址
stackssegmentstack
stadw512dup(?
)
topequlengthsta
stacksends
datasegment
csregdw?
ipregdw?
irq_timesdw00h
bufdb0;count,计数单元
signdb0;flage,计数标志
sec1db0;hourhight,秒高位
sec2db0;houplow,秒低位
min1db0;minhight,分高位
min2db0;minlow,分低位
hour1db0;sechight,时高位
hour2db0;seclow,时低位
err1db0;errorflage,出错标志
hmsdb0;00ishour,11ismin,22issec,预置时、分、秒标志
leddb3fh,06,5bh,4fh,66h,6dh,7dh,07,7fh,6fh,79h,40h
mesdb'pleasfirstcreatetheirqpulse!
',0ah,0dh,0ah,0dh
db'insmallkeybord:
',0ah,0dh
db'c--cleartozero;g--goahead',0ah,0dh
db'd--stopthedisply;e--exit',0ah,0dh
db'p--positionthebeginningtime',0ah,0dh,'$'
dataends
codesegment
mainprocfar
assumecs:
code,ds:
data,ss:
stacks,es:
data
start:
cli
movax,data
movds,ax
movbuf,0
movsign,01
movsec1,0
movsec2,0
movmin1,0
movmin2,0
movhour1,0
movhour2,0
moverr1,0
movdx,timec;8253初始化
moval,36h
outdx,al
movdx,time0
movax,1000
outdx,al
moval,ah
outdx,al
movdx,timec
moval,74h
outdx,al
movax,100
movdx,time1;定时器1每0.1秒中断一次
outdx,al
moval,ah
outdx,al
movax,stacks
movss,ax
movsp,top
movax,data
movds,ax
moves,ax
movdx,offsetmes
movah,09
int21h
movax,cs
movds,ax
movdx,offsetint_proc
movax,250bh
int21h
inal,21h
andal,0f7h
out21h,al
movdx,port1
moval,0d3h
outdx,al;8279clear,清零
moval,2ah
outdx,al;8279clock,置时钟命令
moval,40h
outdx,al;readfiforamcommand,fiforam命令
moval,00h
outdx,al;keyborddisplymode,置键盘显示模式
moval,80h
outdx,al;writeramcommand,写ram命令
sti
key1:
callkey2;callkeybordanddisply,调键盘显示子命令
cmphour2,0ah;errflage
jznext2
next1:
cmpal,0ch;'c'command,'c'命令否
jnzlp0
next2:
movsign,00h
movhour2,00h
movhour1,00h
movmin2,00h
movmin1,00h
movsec2,00h
movsec1,00h
lp0:
cmpal,0eh;'e'command,'e'命令退出程序
jnzlp1
movsign,00h
jmpexit
lp1:
cmpal,10h;'g'command,'g'命令否
jnzlp2
movsign,01h
jmpkey1
lp2:
cmpal,0dh;'d'command,'d'命令否
jnzseti
movsign,00h
key3:
jmpkey1
seti:
cmpal,12h;'p'command,'p'命令否
jnzkey1
movsign,00h;add1flage,'00'为预置时标志
movhms,00h;hourflage
callhigh0
cmperr1,01h
jzkey3
calllow0
cmperr1,01h
jzkey3
movhms,11h;minflage,'11'为预置分标志
callhigh0
cmperr1,01h
jzkey3
calllow0
cmperr1,01h
jzkey3
movhms,22h;secflage,'22'为预置秒标志
callhigh0
cmperr1,01h
jzkey3
calllow0
jmpkey1
exit:
inal,21h;关中断IRQ3
oral,08h
out21h,al
sti
movax,4c00h
int21h
mainendp
int_procprocfar
cli
pushax
pushbx
pushcx
pushdx
pushsi
pushdi
pushds
cmpsign,00;signisadd1flage,是否允许计数
jzendt1
incbuf;bufiscount,计数单元加1
cmpbuf,10
jlendt
movbuf,0
incsec1
cmpsec1,10
jlendt
movsec1,0
incsec2
cmpsec2,6
jlendt
movsec2,0
incmin1
cmpmin1,10
jlendt
movmin1,0
incmin2
cmpmin2,6
jlendt
movmin2,0
inchour1
cmphour2,2
jlhh
cmphour1,4
jlendt
movhour1,0
movhour2,0
endt1:
jmpendt
hh:
cmphour1,10
jlendt
movhour1,0
inchour2
endt:
moval,20h;sendEOI
movdx,inta00
outdx,al
movcx,0ffffh
loopx:
nop
looploopx;延时
popds
popdi
popsi
popdx
popcx
popbx
popax
moval,20h
out20h,al
iret
int_procendp
key2procnear
movdx,port1
moval,0d1h
outdx,al;cleardisplay,清显示
wrep:
calldisp;调显示子程序
movdx,port1
inal,dx
andal,07h
jzwrep
keyn:
movdx,port0;读状态
inal,dx
movbl,al
andal,07h
andbl,38h
movcl,03
shrbl,cl
cmpbl,00h;是否第一行键
jnzline1
addal,08h
jmpquit1
line1:
cmpbl,01h
jnzline2;是否第二行键
jmpquit1
line2:
addal,10h
quit1:
ret
key2endp
dispprocnear
pushcx
movax,data
movds,ax
movdx,port1
moval,90h
outdx,al
movsi,offsetsec1
movcx,0006
movbx,offsetled
disp1:
cld
lodsb
xlat
movdx,port0
outdx,al
loopdisp1
popcx
ret
dispendp
errsprocnear
movhour2,0ah
movhour1,0bh;error
movmin2,0bh;disply'E-----'显示出错标志
movmin1,0bh
movsec2,0bh
movsec1,0bh
moverr1,01h;errflage,标记出错
ret
errsendp
high0procnear
callkey2
moverr1,00
cmphms,00h;hmsishourminscflage,预置时、分、秒
jnzmin0
cmpal,02h;00ishour,预置时
jgerror;11ismin,预置分
movhour2,al;22issec,预置秒
jmphqut1
min0:
cmphms,11h
jnzsec0
cmpal,05h
jgerror
movmin2,al
jmphqut1
sec0:
cmpal,05h
jgerror
movsec2,al
hqut1:
ret
error:
callerrs
ret
high0endp
low0procnear
callkey2;gethourminseclow,预置时、分、秒低位
moverr1,00
cmphms,00h
jnzmin3
movdl,hour2
cmpdl,01
jghour3
cmpal,09h
jgerror
movhour1,al
jmplqut1
hour3:
cmpal,03h
jgerror
movhour1,al
jmplqut1
min3:
cmphms,11h
jnzsec3
cmpal,09h
jgerror
movmin1,al
jmplqut1
sec3:
cmpal,09h
jgerror
movsec1,al
lqut1:
ret
low0endp
codeends
endstart
三、课程设计的结论。
这次课程设计我学会了很多东西,首先是微机里面有些不懂的东西,小键盘这个设备我们在上课很少接触的东西,在实验时我们发现用小键盘非常的方便,比几个实验箱并起来方便多了,于是我们收集了小键盘的相关用法的资料,着手开始做实验,边做边改实验的代码,最后终于成功了;其次是坚持不懈的去做,实验室里面有的实验箱接触有点不好,我们换了很多个实验箱和电脑,但是怎么做都不行,做了几个小时都不行,代码什么的都是按要求来做的就是不行,我们还开始怀疑我们的思路究竟是不是正确的,最后终于在一个实验箱和一台电脑的组合下有反应了,努力是有回报的;最后是要学会相互合作,有时候一个人是解决不了问题的,个人的能力有限,只有相互合作,共同努力,做事才能更加快,力量才更加大。
在这次实验中,开始时我们做得并不好,有很多问题,被退回重做。
我们明白做事不能马马虎虎,要做一件事就要认真地做完,所以在第二次做时,我们都很认真地做,功夫不负有心人,最后竟然得到了一个更好的方案,比第一次做得更好更快。
能够完成这次课程设计,首先我要感谢老师的指导,其次,要感谢我的队友的合作,没有你们,靠个人的力量是远远不够的,谢谢你们!
四、参考文献。
1、戴梅萼,史嘉权编著.微型计算机技术及应用(第三版).北京:
清华大学出版社,2003
2、周明德编著.微型计算机系统原理及应用(第四版).北京:
清华大学出版社,2002
3、李顺增,吴国东,赵河明等.微机原理及接口技术.北京:
机械工业出版社,2006
4、杨立新.微型计算机原理和应用[M].北京:
科学技术文献出版社,1986.11
5、李大友.微型计算机原理[M].北京:
清华大学出版社,1998.7
附录:
总体方案
开始
显示缓冲区初始化
8253初始化
显示提示信息
中断初始化
8279初始化
调键盘显示子程序KEY2
计数标志单元清0,显示缓冲区清0
关中断返回DOS
计数标志单元=1
计数标志单元=00
分别调用HIGHO和LOWO,置时、分、秒初值
C命令E命令G命令D命令P命令
入口
计数标志单元是否为00
计数单元加1
计数单元值是否为10
秒加1
秒为60?
分加1
分为60?
时加1
时为24?
时清零
中断返回
Y
N
N
Y
N
Y
N
Y
N
Y
入口
调键盘显示子程序KEY2
预置时?
预置分?
预置秒
键值是否大于2?
键值是否大于5?
键值是否大于5?
出错处理
出错处理
出错处理
键值送秒高位
键值送时高位
键值送分高位
返回
YY
N
N
YY
NN
YY
N
N
Y
Y
N
N
YY
NN
YY
N
N