汇编课程设计论文.docx

上传人:b****6 文档编号:5390085 上传时间:2022-12-15 格式:DOCX 页数:21 大小:169.58KB
下载 相关 举报
汇编课程设计论文.docx_第1页
第1页 / 共21页
汇编课程设计论文.docx_第2页
第2页 / 共21页
汇编课程设计论文.docx_第3页
第3页 / 共21页
汇编课程设计论文.docx_第4页
第4页 / 共21页
汇编课程设计论文.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

汇编课程设计论文.docx

《汇编课程设计论文.docx》由会员分享,可在线阅读,更多相关《汇编课程设计论文.docx(21页珍藏版)》请在冰豆网上搜索。

汇编课程设计论文.docx

汇编课程设计论文

摘要

本次课程设计是做一个数字式秒表,主要是利用8253作为定时器,为秒表提供定时脉冲,使用7段码显示器作为秒表时间显示,用键盘控制秒表,进行一些功能的使用。

关键字

8253模块,8255模块,7段码显示器,秒表,键盘显示。

 

(一)引言

该系统是一个模拟的数字式秒表,具有秒表的一些基本功能,如暂停计时,继续计时,存储前八名的成绩,再按序显示出来,或是用后来的成绩覆盖前面的成绩。

(二)工作原理

了解了可编程并行接口芯片8255的内部结构、工作方式、初始化编程后对其的应用。

利用8253的定时器输出为秒表提供定时脉冲,7段码显示器作为秒表时间显示,用键盘控制秒表的工作过程。

实验原理图

图5可编程并行接口8255电路

 

(三)硬件设计

(1)实验连线

Ø8255模块的SWR、SRD分别连到ISA总线接口模块的IOWR、IORD。

Ø8255模块的数据(AD0~AD7)、地址线(A0~A7)分别连到ISA总线接口模块的数据(LAD0~QD7)、地址线(LA0~LA7)。

Ø8255模块选通线CE连到ISA总线接口模块的IOY0。

Ø8255的PA0~PA7连到键盘显示模块的KD0~KD7;8255的PB0~PB3连到键盘显示模块的KL1~KL4;8255的PC0~PC3连到键盘显示模块KH1~KH4。

(2)键盘的设计

键盘的接口一般分为独立式和矩阵式。

独立式按键就是各按键相互独立、每个按键各接一根输入线,一根输入线上的按键是否按下不会影响其他输入线上的工作状态。

因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。

独立式按键电路配置灵活,软件结构简单。

但每个按键需占用一根输入线,在按键数量较多时,输入口浪费大,电路结构显得很繁杂。

故此种键盘适用于按键较少或操作速度较高的场合。

若采用此方式,,各按键开关均采用上拉电阻,这是为了保证在按键断开时,各IO口线有确定的高电平。

当然如输入口线内部已有上拉电阻,则外电路的上拉电阻可省去。

矩阵式键盘适用于按键数量较多的场合,它由行线和列线组成,按键位于行、列的交叉点上,一个4*4的行、列结构可以构成一个含有16个按键的键盘。

很明显,在按键数量较多的场合,矩阵键盘与独立式按键键盘相比,要节省很多的I/O口。

行、列线分别接到按键的两端。

行线通过上拉电阻接到+5V上。

平时无按键时,行、列线处于高电平状态,而当有键按下时,行、列线将导通,因此行线电平状态将由与此行线相连的列线电平决定。

按键的识别一般采用扫描法。

让所有的列线处于低电平,当有键按下时,按键所在的行电平将被拉成低电平,根据此行电平的变化,便能判定此行有键被按下。

为了进一步判定到底哪一列的键被按下,可在某一时刻只让一条列线处于低电平,而其余所有列线处于高电平。

 

PA0

PA7

 

8255

PB0CEPB1

PB2

PB3

 

驱动

电路

 

IOY0

(3)I/O接口卡硬件设计

I/O接口硬件卡设计时,ISA总线与接口芯片间的接口电路并不复杂,仅涉及到ISA总线中部分信号线(8位数据线D7~D0、10根地址线A9~A0和

、AEN、RST等控制信号),如下图所示。

图28255接口卡硬件原理图

 

(四)软件设计

(1)主程序流程图如下:

开机

初始化

调用键盘初始化程序

N

有键按下吗?

Y

转转转转转

至至至至至

GMAPR

处处处处处

理理理理理

程程程程程

序序序序序

返回DOS

(2)开始比赛程序框图:

清显示缓冲区,使之显示

 

清ms时间常数单元、名

次单元、显示记录数单元

建立比赛开始和可存储标志

返回

 

(3)名次存储程序框图:

读标志寄存器

N

可存储吗?

Y

将显示缓冲区的秒和0.1秒所对应

的单元内容送相应记录的显示缓冲区

将名次单元加1

建立记录标志

N

记录满8个吗?

Y

清可存储标志

返回

(4)显示成绩程序框图:

读标志寄存器

可记录吗?

取记录数

将相应的记录值送显示缓冲区

记录数加1

记录数>名次数吗?

将记录数清0

返回

(5)比赛结束及返回DOS程序框图:

(6)中断程序框图:

保护现场

ms时间常数加1

N

到100ms否?

Y

将0.1秒单元加1

N

满1秒否?

Y

将秒单元加1,清0.1秒单元

N

满10秒否?

Y

将10秒单元加1,清秒单元

N

满60秒否?

Y

清100秒单元

清比赛和可存储标志

调用6位LED动态显示程序

送中断结束命令

恢复现场

中断返回

 

(五)源程序

inttypeequ08h;设置中断类型码

p8253ctrlequ43h;8253的控制口

p8253ctoequ40h;8253的数据口

p8255ctlequ0e803h;8255的控制口

rowportequ0e801h

colportequ0e802h

segportequ0e800h;段选

bitportequ0e801h;位选

cntoequ11930;用来计算频率

.modelsmall

.data;数据段

strdb36dup(?

);定义一个数组用来存放前八个成绩

flagdb0;定义标志位

mcdb1;定义名次

numdb1

pointdwstr;定义指针

point2dwstr;定义指针

countdb0;用来计时,初始化为0

buffdb0,0,0,0;初始化数据缓冲区

buff2db0,0,0,0;初始化数据缓冲区

bitdb1;位码置1

messdb'0-开始比赛1-记录成绩2-显示成绩3-退出返回DOS4-比赛结束5-暂停计时:

',0dh,0ah,'$'

dsegdb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h;数据‘0’~‘9’

asctabdb"0123456789ABCDEF"

.code;代码段

.startup;开始

movah,9

leadx,mess

int21h

moval,36h;写8253的方式字

movdx,p8253ctrl

outdx,al

movax,cnto;

movdx,p8253cto;写初值

outdx,al

moval,ah

outdx,al

moval,81h;8255初始化

movdx,p8255ctl

outdx,al

moval,inttype;DOS调用,读取中断向量

movah,35h

int21h

pushes;将es,bx,ds入栈保护

pushbx

pushds

movax,@data

moves,ax

movdx,offsetintp;取intp的偏移量

movax,segintp;取intp的段地址

movds,ax

moval,inttype;设置inttpye的新中断向量

movah,25h

int21h

popds;将ds出栈

inal,21h;CPU开中断(开IR0)

andal,0feh

out21h,al

sti

ab:

callbutton

cmpal,'3';如果为F,则退出

jzfp

cmpal,'1';如果为1,且标志位D0位为1,D2为1,则可保存成绩

jzmp

cmpal,'2'

jzpp

cmpal,'4';比赛结束,即可以重新开始比赛

jzap

cmpal,'5';暂停计时

jzpap

cmpal,'0'

jnzab

ORflag,05h;如果按键为B,则置标志位最后一位为1

jmpab

mp:

;存储的代码

testflag,04h;先判断是否还能存储,不能则跳到ab,否则继续

jzab

moval,mc;将第一位的名次先放到buff,然后一起放入数组

movbuff,al

leasi,buff

movdi,point

movcx,4

cld

repmovsw

cmpmc,8;如果名次到了8个,则将标志位置零,然后就不能存储了。

jzgo3

incmc

addpoint,4

jmpab

go3:

andflag,0fah

leabx,str

movpoint,bx

jmpab

pp:

andflag,0feh

cmpnum,9;判断是否按过8次,是退出,否则继续

jzab

incnum

leadi,buff

movsi,point2

movcx,4

cld

repmovsw

addpoint2,4

jmpab

ap:

pushbx

andflag,0;对标志和名次及num都进行初始化,以便比赛重新开始

movmc,1

movnum,1

leabx,str

movpoint,bx

movpoint2,bx

movbuff,0

movbuff+1,0

movbuff+2,0

movbuff+3,0

popbx

jmpab

pap:

andflag,0feh

jmpab

fp:

cli;关中断

popdx;出栈

popds

moval,inttype;设置新的中断向量

movah,25h

int21h

.exit0;主程序结束

intp:

pushsi

pushdi

pushax

pushbx

pushcx

pushdx

testflag,01h;判断标志位D0是否为1,为1开始,否则不计数

jziexit

inccount;次数加1

cmpcount,10;将count和100比较

jnziexit;若count不等于100,则转iexit

movcount,0;否则count置0

incbuff+3;秒的地位加1

cmpbuff+3,10;将秒的地位和10相比较

jnziexit;若秒的地位不等于10,则转iexit

incbuff+2;否则向秒的高位进1

movbuff+3,0;秒的地位置0

cmpbuff+2,10;秒的高位和6相比

jnziexit;若不为6,则转iexit

incbuff+1;否则分的地位加1

movbuff+2,0;将秒的高位置0

cmpbuff+1,6;分的地位和10相比

jnziexit;若不等则转iexit

;incbuff;否则分的高位加1

movbuff+1,0;分的地位置0

andflag,0feh

;cmpbuff,6;分的高位和6比较

;jnziexit;不等则转iexit

;movbuff,0;将分的高位和0比较

iexit:

leabx,dseg;去数据表的首地址

leasi,buff;取缓冲区的首地址

agi:

moval,[si];将si的内容送给al

xlat;将ASCII码转换成数据

movah,al

movdx,bitport

moval,bit

outdx,al

cmpal,04h;判断是否为第二位,是则加上点,否则继续

jnzq1

andah,07fh

q1:

moval,ah

movdx,segport;取相应的段和位

outdx,al

movcx,8000h;延时

delay:

loopdelay

incsi;缓冲区地址加1

shlbit,1;将位加1

cmpbit,10h;将bit和10h相比

jnzagi;不等于则循环

movbit,1;否则将bit置1

moval,0

movdx,bitport

outdx,al

moval,20h;将8259偶口中的数据输出

out20h,al

popdx

popcx

popbx

popax

popdi

popsi

iret

buttonprocnear

next:

movdx,rowport

moval,0

outdx,al

incdx

abb:

inal,dx

andal,0fh

cmpal,0fh

jzabb

movcx,8000h

delayy:

loopdelayy

movbh,00;首行号

movbl,0;列号

movcx,4

movah,0feh

again:

moval,ah

movdx,rowport

outdx,al

incdx

inal,dx

andal,0fh

cmpal,0fh

jnzab1

addbh,4

shlah,1

loopagain

jmpnext

ab1:

movcx,4

ab3:

shral,1

jcab2

jmpab4

ab2:

incbl

loopab3

ab4:

addbh,bl

moval,bh

leabx,asctab

xlat

pushax

movdl,al

movah,2

int21h

movdx,rowport

moval,0

outdx,al

incdx

AB5:

inal,dx

andal,0fh

cmpal,0fh

jnzAB5

movcx,000h

delay2:

loopdelay2

popax

ret

buttonendp

end

 

(六)软、硬件测试

测试环境(软、硬件)、过程、故障排除等

(七)结论

对系统作一个全面的评价:

有何特点、存在的问题、改进意见等

(八)结束语

通过课程设计,你有何体会,学到了什么?

(九)参考文献

 

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

当前位置:首页 > 高中教育 > 初中教育

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

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