惠州学院微机报告讲解.docx

上传人:b****5 文档编号:29545058 上传时间:2023-07-24 格式:DOCX 页数:25 大小:147.94KB
下载 相关 举报
惠州学院微机报告讲解.docx_第1页
第1页 / 共25页
惠州学院微机报告讲解.docx_第2页
第2页 / 共25页
惠州学院微机报告讲解.docx_第3页
第3页 / 共25页
惠州学院微机报告讲解.docx_第4页
第4页 / 共25页
惠州学院微机报告讲解.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

惠州学院微机报告讲解.docx

《惠州学院微机报告讲解.docx》由会员分享,可在线阅读,更多相关《惠州学院微机报告讲解.docx(25页珍藏版)》请在冰豆网上搜索。

惠州学院微机报告讲解.docx

惠州学院微机报告讲解

 

惠州学院计算机科学系

课程设计(综合实验)报告

(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

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1