接口课程设计实验报告孙强文档格式.docx

上传人:b****3 文档编号:18399861 上传时间:2022-12-16 格式:DOCX 页数:19 大小:105.50KB
下载 相关 举报
接口课程设计实验报告孙强文档格式.docx_第1页
第1页 / 共19页
接口课程设计实验报告孙强文档格式.docx_第2页
第2页 / 共19页
接口课程设计实验报告孙强文档格式.docx_第3页
第3页 / 共19页
接口课程设计实验报告孙强文档格式.docx_第4页
第4页 / 共19页
接口课程设计实验报告孙强文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

接口课程设计实验报告孙强文档格式.docx

《接口课程设计实验报告孙强文档格式.docx》由会员分享,可在线阅读,更多相关《接口课程设计实验报告孙强文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

接口课程设计实验报告孙强文档格式.docx

用户数目

YNdb0;

发送缓存

userdb0;

存放接收的用户名

pwddb0;

存放接收的密码

tdw0;

延时初值

bufbdb0ah,0dh,'

Thedomitorysystemisrunning...!

$'

bufudb0ah,0dh,'

username(4characters):

;

接收用户名提示

bufpdb0ah,0dh,'

password(6characters):

接收密码提示

bufrdb0ah,0dh,'

Youcangetin!

!

;

正确提示

bufusdb0ah,0dh,'

Errorusername!

用户名错误提示

bufpddb0ah,0dh,'

Errorpassword!

密码错误提示

buferrdb0ah,0dh,'

Cannotidentifythecard!

不可识别的卡

bufexitdb0ah,0dh,'

Pressanykeywithin3secondstoexit!

dataends

stacksegmentstack

db200dup(0)

stackends

codesegment

assumecs:

code,ds:

data,ss:

stack

hhmacro;

回车换行的宏

movdl,0ah

movah,2

int21h

movdl,0dh

endm

int51procnear;

8251A初始化子程

movdx,ctr151;

8251A命令口

moval,0;

空操作

outdx,al

moval,40h;

内部复位

outdx,al

moval,4Eh;

8251A方式命令

moval,27h;

8251A工作命令

ret

int51endp

delay1proc;

延时子程1

pushbx

movbx,t

dl1:

decbx

jnzdl1

popbx

delay1endp

quitproc;

3秒钟之内按任意键退出程序

pushcx

leadx,bufexit

movah,9

movcx,05fffh

qxx:

cmpcx,0

jeqx

movah,1;

检测是否有键按下,有则退出

int16h

jnzqnext

movt,0ffffh

calldelay1

deccx

jmpqxx

qnext:

movah,4ch

qx:

popcx

ret

quitendp

sendmacroa;

发送一个字符的宏,首先必须将要发送的字符送入变量YN

movdx,ctr151

a:

inal,dx

testal,01;

发送准备好?

TXRDY=1?

jza;

未准备好,则等待

movdx,data51;

已准备好,则发送Y给下位机

moval,YN

receivemacrob;

接收一个字符的宏,接收到al

b:

movdx,ctr151;

检测接收准备好没

inal,dx

testal,02;

接收数据准备好?

RXRDY=1?

jzb;

未准备好则继续检测

movdx,data51;

已准备好,即有数据传送过来,则接收1个字符

endm

begin:

movax,data

movds,ax

callint51;

调用8251A子程序,初始化8251A

k:

callquit;

延时3秒退出

hh

leadx,bufb;

系统提示

receiveo;

接收插卡信号

cmpal,'

O'

jneerror

movYN,'

Y'

;

发送卡确认信息

sendyyy

leadx,bufu;

用户名提示信息

moval,0

receivea;

接收一个字符,用户信息

movuser,al;

保存接收的用户信息

movdl,user;

显示接收的字符

movah,02h

int21h

jmpcmpuser

error:

leadx,buferr;

无法识别的卡

movah,9

int21h

hh

jmpk

over:

movax,4c00h

int21h

cmpuser:

moval,user

leasi,defuser;

取用户名数组的首地址

movcx,userno;

取用户数目

cu:

cmpcx,0

jesendnu

cmpal,[si]

jesy;

和某一个用户名相等则发送Y确认信号

incsi

jmpcu

sy:

pushsi;

保存该用户名的地址

sendy

leadx,bufp;

密码提示信息

int21h

接收密码

receivepp

movpwd,al;

保存接收的密码

popsi

movax,si

addax,userno;

得到该用户名对应的密码在密码数组中的地址

movsi,ax

movbl,[si]

cmppwd,bl;

和密码比较

jnesendnp;

不相等则发送N,相等则发送Y

sendyy

leadx,bufr;

显示正确

jmpk;

重新开始

sendnp:

movYN,'

N'

sendn

leadx,bufpd;

显示密码错误

重新开始

sendnu:

sendn

leadx,bufus;

显示用户名错误

codeends

endbegin

4.下位机源程序

程序开始时,提示在3秒钟内按任意键退出,否则继续执行。

若继续执行,首

先按sw4表示插卡,再由开;

关状态设置用户名,按sw1发送之,显示提示信息

仍然用开关状态设置密码,按sw2发送之,显示提示

信息,回程序开始.

data51equ308h;

ctr151equ309h;

ctr155equ303h;

8255命令口

ctr155aequ300h;

8255数据口a

ctr155bequ301h;

8255数据口b

undb0;

存放读入的用户名

pddb0;

存放读入的密码

hhdb0ah,0dh,'

回车换行

lightdb0feh,0fdh,0fbh,0f7h,0efh,0dfh,0bfh,07fh;

闪烁灯状态

tdw0;

fdb0;

计数初始值

jdb0;

YNdb0

buf1db0ah,0dh,'

Presssw4instandofinsertingthecard!

buf2db0ah,0dh,'

Changethestateoftheswitchtosetusername!

Presssw1tosendit!

;

提示录入和发送用户名

buf3db0ah,0dh,'

Changethestateoftheswitchtosetpassword!

Presssw2tosendit!

提示录入和发送密码

buf4db0ah,0dh,'

Theuserisnotexistedoryouhavethewrongpassword!

错误提示信息

buf5db0ah,0dh,'

成功登录信息

stacksegmentstack

DB200DUP(0)

movdx,data51;

已准备好,则发送一个字符给下位机

clearmacroc;

置口c某一位,c为置位控制字

movdx,303h

moval,c

receivemacrob;

movdx,ctr151;

testal,02;

jzb;

movdx,data51;

endm

delay2proc;

延时子程2

movcx,00fffh

xx:

jex

jmpxx

x:

popcx

delay2endp

movcx,07fffh

flutterproc;

灯闪烁函数,8个灯依次亮,循环3次

leadi,light

movf,3

wyyy:

cmpf,0

jewy

movcx,8

l:

jewyy

moval,[di];

灯亮

movdx,ctr155a

outdx,al

calldelay2;

延时2

moval,0ffh;

灯灭

outdx,al

incdi

jmpl

wyy:

leadi,light

decf

jmpwyyy

wy:

flutterendp

noiseproc;

声音报警子函数,3次长鸣

jj:

jeejj

产生一定频率的方波,使喇叭发声

movcx,00dffh

xxkk1:

jexkk

movdx,ctr155;

pc6置1

moval,0dh

calldelay1;

延时

pc6置0

moval,0ch

jmpxxkk1

xkk:

calldelay2;

不产生方波,停止发声

jmpjj

ejj:

popcx

noiseendp

movds,ax

movdx,ctr155;

初始化8255A

moval,10000011b

ww:

leadx,hh;

延时退出程序

leadx,hh;

leadx,buf1;

提示按sw4表示插卡

检测sw4是否按下

clear08h;

清sw4状态

wait4:

movdx,302

inal,dx;

sw4按下?

pc3=0?

testal,08h;

否,则继续检测

jnzwait4

是则发送卡插入信号

sendo

moval,0;

接收主控机反馈信息

receivei

cmpal,'

;

确认则继续,否则重新开始

jneww

leadx,buf2;

提示设置用户名并发送之

检测sw1状态

clear01h;

清sw1状态

wait1:

movdx,302h;

检测sw1是否按下

inal,dx

testal,01h;

sw1按下?

pc0=0?

jnzwait1;

否则继续检测

按下则读开关状态(口b),得到用户名

movdx,ctr155b;

读b口

movun,al;

保存用户名

movYN,al;

发送用户名

sendus

jmpreceiv

movax,4c00h;

程序退出

receiv:

receivey

接收的字符和'

比较

jnewrong;

不合法就提示错误信息

leadx,buf3;

合法则提示设置密码并发送之

movah,09h

clear02h;

清sw2状态

wait2:

检测sw2是否按下

testal,02h;

sw2按下?

pc1=0?

jnzwait2;

按下则读开关状态(口b),得到密码

movdx,ctr155b;

读口b

movpd,al;

保存密码

发送密码

sendpd

接收主控机反馈回来的信息

receiveyy

不相等就提示错误信息,相等则提示登录成功

leadx,buf5;

提示登录成功

此处亮灯提示

callflutter

jmpww;

准备第二次刷卡

wrong:

leadx,buf4;

显示错误提示信息

此处声音报警

callnoise

准备第二次刷卡

codeends

四.心得体会

本次接口实验的课程设计历时一周,由我们一个小组共5人合作完成。

在此次实验中,小组的各个成员由汪野同学负责总体的规划架构和主要程序的设计并向我们阐述设计的思路;

而我则负责对程序设计的测试、调试以及进一步的完善功能;

而周远则负责程序界面的设计还有硬件的设计,张仲容同学主要负责硬件上的监测以及流程图设计。

所有软件设计用到的程序语言都是汇编语言。

这五天中,我们的设计流程思路在一开始就整理的相当清楚:

1.首先完成下位机从实验面板接受信号的输入;

2.接下来进行主控机设计,主要是对用户名和密码的验证;

3.然后完成异步全双工传输;

4.根据实验需求逐步调整、完善核心代码;

5.进行判断对错的处理模块,正确则闪烁指示灯,错误则声音报警;

6.程序界面的设计。

我们按照流程一步步的完成了本次实验,虽然在最后的程序界面设计环节中因为对汇编语言下的界面设计了解的实在是太少没有能够设计出美观、方便使用的界面(这也是本次实验的一个不足之处),但是核心功能则完成的相当好。

汪野同学首先完成了主控机和下位机相应程序的编写,第一个版本的下位机是系统检测键盘输入用户名和密码,并按字符进行异步全双工通信。

在这过程中,我负责代码的调试,解决了几个由于疏漏而导致的问题,比如说源目的寄存器类型不匹配,不常用的汇编命令不熟悉等等。

另外在下位机输入密码的时建议下位机应该显示*号而不是字符,所以针对循环的内部代码做了一个分支,用户名和密码有不

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

当前位置:首页 > 医药卫生 > 基础医学

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

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