汇编语言-多功能密码锁(5)

2019-03-29 10:32

CALL KEYLS

JMP CHG1 CHG2: CALL KEYLS

CALL RING ;确认则发出“滴”的确认音 CALL DALLYS RET CHANGECR ENDP

PUTBUFCR PROC NEAR ;保存修改后的密码子程序 XOR BX,BX MOV BL,[COUNT1]

MOV STRING[BX],AL ; MOV BL,[COUNT1] INC BL

MOV [COUNT1],BL CMP BL,06H JNZ GOBACKCR MOV BL,0

MOV [COUNT1],BL GOBACKCR: RET PUTBUFCR ENDP

SHOWC PROC NEAR ;

MOV SI,0200H ; MOV AL,0FH MOV [SI],AL MOV [SI+1],AL MOV AL,10H MOV [SI+2],AL MOV [SI+3],AL MOV [SI+4],AL MOV [SI+5],AL MOV DI,0205H

MOV DX,MY8255_A ; MOV AL,0CFH OUT DX,AL

MOV DX,MY8255_B MOV AL,71H

OUT DX,AL

; CALL RING CALL DALLYS

放入密码内存空间STRING 闭锁子程序 显示FF 显示FF

发出三声“滴”声 21

CALL DALLYS CALL DALLYS CALL RING CALL DALLYS CALL DALLYS CALL DALLYS CALL RING CALL DALLYS CALL DALLYS CALL DALLYS

MOV BL,[COUNT2] ; INC BL

CMP BL,06H

JZ LOOP31

MOV [COUNT2],BL

JMP LOOP32

LOOP31: MOV DX,MY8255_C ; MOV AL,020H OUT DX,AL

MOV BL,0 ; MOV [COUNT2],BL

LOOP32: CALL KEYPAD CMP AL,0CH JZ LOOP33

JMP LOOP32

LOOP33:CALL KEYLS ; RET SHOWC ENDP

RING PROC NEAR ; PUSH AX

MOV DX,MY8253_MODE ; MOV AL,36H ; OUT DX,AL

MOV AX,0020H MOV DX,MY8253_COUNT0

OUT DX,AL ; 取出密码错误次数,并判断是否已经达到6次

已达到六次,则输出报警电平 密码错误次数清0 未弹起则继续循环等待弹起 发音子程序 初始化8253工作方式 计数器0,方式3 装入计数初值

22

MOV AL,AH

OUT DX,AL CALL DALLYS POP AX

QUITRI: MOV DX,MY8253_MODE ;退出时设置8253为方式2,OUT0置1 MOV AL,34H OUT DX,AL RING ENDP

DALLYS PROC NEAR ;8253延时子程序

D1S: MOV AX,0FFFH D2S: DEC AX JNZ D2S RET DALLYS ENDP

DALLY PROC NEAR ;,8255软件延时子程序 PUSH CX MOV CX,000FH D1: MOV AX,000FH D2: DEC AX JNZ D2

LOOP D1 POP CX

RET DALLY ENDP

CODE ENDS

END START

十、设计中的难点

1.硬件

虽然是第一次接触proteus,在硬件接线方面遇到种种困难。特别是总线的接法,因为以前没有接触过,完全无从下手。但是经过几天的找资料以及学习,通过多次的尝试,终于把硬件接线完成。

2.软件

软件设计基于我们这学期微机实验课上的键盘扫描程序。整个系统中,我觉得最重要的同时最难的就是键盘扫描程序的设计。一开始,对于键盘扫描还未完全搞懂,还没有对键盘赋键值这个概念,导致前期一直都在探索中。接着,程序可以获得相应的键值,可是获得按键值后就很不稳定,比如,我想通过#键来达到确认和返回两个功能,但是总是一确认以后就马上执行返回功能。程序逻辑没有错误,后来参考书本的程序,原来每次获得键值后都要对键

23

盘进行再次扫描,判断按键是否弹起,未弹起则跳到下一步。 如此,#键就能完美执行这两个功能。

十一、收获及体会

1、下面就以硬件方面我做一下总结:

硬件部分主要是设计原理图跟连接线路,这次主要是用到Proteus这个软件,这个软件之前没接触过,所以在下载下来以后第一件事就是上网看教程,看了两三个教程之后大概就明白了它的大体操作,开始自己动手绘图。

在绘图之前,根据需要实现的功能,选定要用到的元件,最后初步定下来一个图样,但是在实际绘图过程中发现太过复杂了,又重新制定了一个图样。因为是第一次用这个软件,里面很多功能都不懂,经常点出很多不懂得文件,最后不得不重新设计,导致绘图时间大大增加。在多次实践后我终于较为熟练的掌握里面的工具了,后面的绘图过程也就相对来说比较轻松,找出了自己绘制元件的时候有些麻烦,不过碰到不会的就上网百度或者问问同学,其实这个绘图过程还是挺有意思的。线路图终于接好了,这里可以总结为三点:

第一,在绘图之前一定要先熟练掌握Proteus这个软件;第二,一点要把程序看懂,这样才可以合理布线路图;第三,在搜索元件的过程中可以大量的求助百度,里面有很多元件库表,这样可以大大缩短查找时间。

通过这一两个星期的学习,掌握了Proteus一些基本的操作以及仿真,相信对以后的学习生活中都大有帮助。

2、软件设计总结:

这次课程设计中,最重点的部分应该属于软件部分。刚刚学习了《微机原理与接口技术》这么课程,一切都觉得那么新鲜。自己一些想法,可以通过实践来实现。软件设计之前,自己大概想好了大体的思路,但是程序需要严格的逻辑,严格的语法,有时按着自己的思路去写程序,却总是发现错误,或者程序不稳定,有时是达不到预期的效果。理论和实践还是有着很多的差距。这次课程设计中,收获最大的是如何确定一个程序的主线。以前写程序,就是想到哪就写哪,写完以后,才发现,有一个小的功能已经无法实现。如果要加入这个功能,却需要改动整个程序,导致程序的兼容性很差。在这次设计中,我先确定了整个程序的主线。输入密码,对比密码,密码正确或密码错误。然后其他程序皆在这几个部分中实现。 比如修改密码则在密码正确中实现,开锁电平也是在密码正确中输出;而报警电平则在密码错误部分实现。由此,我就确定了整个程序的框架,剩下的就是注意一些细节的问题,一些逻辑的问题。

经过一周的奋战,终于还是完成了整个程序的编写。在设计程序的过程中,我不仅对以前学过的汇编语言进行了重温和查漏补缺,而且对程序整体的把握和细节的处理能力得到了很大的提高。毕竟看程序和写程序是有很大区别的,只有实践才能真正将汇编语言学到家。看到仿真的结果和题目所要求的一样,心情倍感欣慰,同时也很有成就感。

整个程序完成了,虽然已经达到了题目的要求,但是自己觉得还可以继续改善。用句至理名言:好作文不是写出来的,是改出来的。我此刻只想说的是:好程序不是写出来的,也是改出来。在以后的日子了,有空的时候可以拿出自己的程序,好好修改完善,实现更多的功能,程序进一步优化。

24

十二、参考文献

《微型计算机原理及应用》 清华大学出版社 牟琦 聂建萍 著 《微型计算机原理及应用实验指导书》华南理工大学出版

25


汇编语言-多功能密码锁(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:名言警句

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: