微机课设——多功能密码锁_第1页
微机课设——多功能密码锁_第2页
微机课设——多功能密码锁_第3页
微机课设——多功能密码锁_第4页
微机课设——多功能密码锁_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计报告书 题目:多功能密码锁的设计题目:多功能密码锁的设计 学学 院院 自动化科学与工程学院自动化科学与工程学院 专专 业业 自动化自动化_ _ 学生姓名学生姓名 学生学号学生学号 班内序号班内序号 _ 指导教师指导教师 刘少君刘少君 _ 课程编号课程编号 _ 课程学分课程学分 1 1 学分学分 _ 起止日期起止日期 _2016_2016 年年 1 1 月到月到 1 1 月月 1515 日日_ 封面纸推荐用 210g/m2 的绿色色书 编辑完后需将全文绿色说明文字删除,格式不变 教 师 评 语 (另起页) 教师签名: 日期: 成 绩 评 定 备 注 课题名称:微机原理和实验接口课题名称:微机原理和实验接口 课题名称:微机原理和实验接口课题名称:微机原理和实验接口.3 一:目的一:目的 .4 二:课设内容二:课设内容.4 三:设计任务三:设计任务.4 四:问题分析:四:问题分析:.5 五:设计思路与方案辩证五:设计思路与方案辩证.5 六:硬件组成介绍六:硬件组成介绍 .6 1.8086CPU.6 28 位数据/地址锁存器 74LS273.7 74154 译码器.7 4.8255A.8 5.8253A 计数器.9 6.六管共阴数码管.9 七:电路设计及功能说明七:电路设计及功能说明 .10 7.1 总的电路仿真原理图 .10 7.2 8086 最小系统 .10 7.3 8255 扩展 I/O 口的接法 .11 7.4 8253A 计数器和蜂鸣器.12 7.5 键盘模块和二极管显示模块.12 7.6 数码管显示模块.13 八:软件流程图八:软件流程图 .14 九九:课设结果及分析课设结果及分析.17 十十 :设计过程的难点和分析:设计过程的难点和分析.19 1.硬件方面:.19 2.软件方面:.20 十一:收获、体会和建议十一:收获、体会和建议 .20 1 硬件设计.20 2 软件设计.20 十二:程序附录十二:程序附录 .21 一:目的一:目的 1 掌握和熟悉微机接口电路的设计与使用 2 掌握汇编语言,熟悉 8086 汇编指令系统,熟悉使用各种汇编指令 3 学习并掌握 8255,等芯片的工作方式及其应用 4 学会使用常用的微机学习软件,例如 EMU8086,protues,掌握程序调 试程序的方法。 5 提高实验能力和操作能力,提高分析问题,发现问题,处理问题的能 力 二:课设内容二:课设内容 密码锁在输入密码正确的条件下输出开锁电平,控制电控锁开,同时显示 00 字样。当输入密码错误时,发出错误警告声音,同时显示 FF 字样。当 六次误码输入的条件下,产生报警电平报警。还可以实现对密码的修改, 修改成功后,蜂鸣器发出确认音 三:设计任务三:设计任务 1、选用 8086 和适当的存储器及接口芯片完成相应的功能。 2、用 LED 显示器显示电子锁的当前状态。 3、画出详细的硬件连接图。 4、给出程序设计思路、画出软件流程图。 5、给出地址分配表。 6、给出所有程序清单并加上必要注释。 7、完成设计说明书(列出参考文献,所用器件型号) 。 四:问题分析:四:问题分析: 题目要求我们用 8086 作为主控制器,设计密码器,并能修改密码,同时 还会发出确认声音。首先,密码器,必须要有输入,所以键盘必不可少, 同时还要进行数据传送,对于一般的数据来说,如果距离较近且要求 I/O 口的数量不是特别多,我们都考虑用并行口,同时发声要考虑如何操作, 还有是否需要添加中断。 五:设计思路与方案辩证五:设计思路与方案辩证 根据题目要求,我们选择 8086 作为主控制器,由于 8086 的串口不够用, 需要我们应用 8255 的 ABC 三个端口进行并行口数据传送。整个设计思路 的原理框图如下: 第一, 我们先设计好 8086 的基本外接口,例如地址锁存器,译码器,电 源模块,这个可以适用于所有的系统,使得系统扩展性比较好,之 后我们需要什么,就可以直接添加。 第二, 对于键盘的选择,如果选用一般的按键,原理虽然简单,但是使 用串口的个数特别的多,而且对于很多按键的话,比较零散,不易 成为系统。而使用矩阵键盘,就可以避免上面的这些问题。同时对 于矩阵键盘的扫描,我们也有几个方案 (1) 先逐步扫描四行,然后再确定键值 (2) 扫描一行,就确定列数,也就是说确定键值 以上两个方案,第(2)方案是我们实验书上,实行起来,程序简洁易 懂,故我们选第(2)个方案 第三,LED 的选择,密码器,肯定需要 LED 的显示,在这里,我们选用 共阴接法的数码管,同时考虑到如果使用 4 个数码管显示密码,也就是说 四个密码的话,根据生活经验,这密码个数太少了,安全性不高,所以我 们最终选择做六个密码,所以就选用了六个共阴数码管 第四,题目要求要发出声音,这就需要蜂鸣器,同时我们考虑用计数器来 输出脉冲来驱动蜂鸣器。 思路:硬件,先查资料,画出原理图,然后在 protues 画出仿真电 路图,便于之后仿真验证成果。软件,先构思,画出流程图,在 EMU8086 编写程序,编译,调试。最后软硬件结合,在 protues 中 验证,修改直至满意。 六:硬件组成介绍六:硬件组成介绍 1.8086CPU Intel 8086 是一个由 Intel 于 1978 年所设计的 16 位微处理器芯片,拥有四 个 16 位通用寄存器,也能够当作八个 8 位寄存器来存取,以及四个 16 位 索引寄存器,用单一的+5V 电源,时钟频率为 4.77MHz10MHz,8086 有 16 根数据线和 20 根地址线,它既能处理 16 位数据,也能处理 8 位数据。 可寻址的内存空间为 1MB。 28 位数据/地址锁存器 74LS273 74LS273 是一种带清除功能的 8D 触发器, 1D8D 为数据输入端, 1Q8Q 为数据输出端,正脉冲触发,低电平清除,常用作 8 位地址锁存 器。D0D7:出入;Q0Q7:输出;第一脚 WR:主清除端,低电平触 发,即当为低电平时,芯片被清除,输出全为 0(低电平) ;CP(CLK): 触发端,上升沿触发,即当 CP 从低到高电平时,D0D7 的数据通过芯片, 为 0 时将数据锁存,D0D7 的数据不变 74154 译码器 74154 这种单片 4 线16 线译码器非常适合用于 高性能存储器的译码器。 当两个选通输入 G1 和 G2 为低时, 它可将 4 个二进制编码的输入译成 16 个互相独立的输出之一。实现解调功能的办法是:用 4 个输入线写出输出 线的地址,使得在一个选通输入为低时,数据通过另一个选通输入。当任 何一个选通输入是高时,所有输出都为高,真值表如下 4.8255A 8255 是 Intel 公司生产的一种通用的可表程并行 I/O 接口芯片,它有 3 个 并行 I/O 口,又可通过编程设置多种工作方式,价格低廉,使用方便,是 一个 40 条引脚的双列直插式组件,它内部有 3 个 8 位 I/O 数据端口:A 口, B 口和 C 口,以及一个 8 位的控制端口。 5.8253A 计数器 8253 内部有三个计数器,分别称为计数器 0、计数器 1 和计数器 2,他们的机构 完全相同。每个计数器的输入和输出都决定于设置中控制寄存器中的控制 字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输 入端 CLK,一个为门控信号输入端 GATE,另一个为输出端 OUT。每个计数器内部 有一个 8 位的控制寄存器,还有一个 16 位的计数初值寄存器 CR、一个计数执行部 件 CE 和一个输出锁存器OL 6.六管共阴数码管 共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管, 共阴数码管在应用时应将公共极 COM 接到地线 GND 上,当某一字段发光二极管的 阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不 亮。 数 值 0123456789 段 码 3FH06H5BH4FH66H6DH7DH07 H 7FH6FH 七:电路设计及功能说明七:电路设计及功能说明 7.1 总的电路仿真原理图 7.2 8086 最小系统 首先,protues 中可以在芯片内部设置 clk,内存器,我们在里面直接设 置就可以了。同时,我们由于地址线和数据是分时复用的,所以我们需要 锁存器,而且需要 3 片 74ls373 作为地址信号锁存器。MN/-MX 引脚接 +5V,选择最小模式 。通过译码器 74154 地址译码,分出地址信号给外 设。 7.3 8255 扩展 I/O 口的接法 因为 8086 的 I/O 口比较少,我们需要扩展 I/O 口,故可以选用 8255A 可编程并行口来扩展。同时,在 8086 系统中,采用的是 16 位数据 总线。现在我们将 8255 的 I/O 口接到系统总线的低八位,为了使 8255 的 端口地址是偶地址,我们参考微机实验接法,接 8255A 的 A1,A0 分别接 系统总线的 A3,A2,如下图。这时 8255A 各端口的地址分别为 端口A 端口B 端口C 端口控制端口 端口地址0100H+00H*4 0100H+01H*40100H+02H*40100H+03H*4 7.4 8253A 计数器和蜂鸣器 如前面 8255,为了使端口地址为偶地址,8253A 的 A0,A1,口分别接系统 总线的 A2,A3 口。同时,AD0 到 AD7 分别接系统总线的 A1 到 A7.8253A 的 gate 接高电平,因为这里我们只是用它来实现驱动蜂鸣器。当然蜂鸣 器接计数器的输出。 端口A 计数器端口B 计数器端口C 计数器端口控制端口 端口地址0200H+00H*4 0200H+01H*40200H+02H*40200H+03H*4 7.5 键盘模块和二极管显示模块 键盘的行接 8255A 的 A 口低四位,输出电平,键盘的列接 8255A 的 C 口的低四位,用来接受电平信号,由于这四个端口通过电阻连着 5V 的 电压,所以在按键没按下的时候,输入的都是高电平。二极管 D1 来显示 开锁电平,高电平亮,二极管 D2 用来报警,超过六次错误就检测到高电 平而亮。 7.6 数码管显示模块 数码管的段选段接 8255A 的 B 口,位选端接 8255A 的 A 口低四位,即 A 口的低四位,分时复用。 八:软件流程图八:软件流程图 这次课设的程序无疑是很长很大的,所以我们采用子程序来把各个功能模 块化,即采用模块化的思想,使得主程序清晰简洁易懂,并且扩展性比较 好,升级容易。主程序的功能主要是实现初始化,各个子程序的调用。编 写时先分配各个子程序的功能,即画出流程图,然后依照流程图逐个写。 在设计软件的时候既要考虑实用性,又要考虑程序的可行性。在程序中我 增加了一些变量,从而使程序在操作之中避免了寄存器的操作,这样就省 了存栈和弹栈的操作,这个思路我是参照 C+里面的做法,两种方案各有 优劣吧。在对于多个连续地址操作的话,可以考虑的操作方法有用变址方 法,用串的方法,在该程序中由于我没有涉及到 ES 段,所以使用了变址 的方法,例如密码比对程序,数码管显示程序,密码存到缓冲区程序等, 使用变址的方法使程序简洁,思路清晰,不至于杂沓。 九九:课设结果及分析课设结果及分析 通过验证,该密码器实现的功能: 当打开电源,数码管显示 PLEASE (为了区别 s 与 5,s 显示少一画)欢 迎页面, 程序初始密码为六个 1,输完六个 1 后 按确认键#后,显示正确,即显示“00”,同时可以发现 D1 管的阳极是高 电平,即输出开锁高电平 再次按返回键#,回到初始页面,随便输入一个错密码例如 按确认键#,密码错误,显示“FF”,同时有两次报警声音。 此次我们输进,即输对密码后,方能修改密码,在“00”页面,按下修改 键*,进入修改程序,显示页面,显示“” 接着我们输入新密码 按确认键#,确认,此时发出确认声音“滴”,回到欢迎页面 输入检验我们的结果,结果是对的,当输入不是即报错(如下) 当输入错误次数达到六次以上 D2 管就会亮,而且报错声音响三次,且只 有输入密码密码正确后才能把错误次数清零。以上证明程序运行正确,实 现我们所要实现的功能。 十十 :设计过程的难点和分析:设计过程的难点和分析 1.硬件方面: 第一:对硬件设计来说,有两大难点:第一,掌握 protues 软件的使用方 法,熟悉的用 protues 软件搭建硬件系统。第二,如何搭建 8086 外围设备, 如何使连线最少最简洁,使程序编写最直接。虽然本人之前有用过 proteus 仿真过 80c51 的程序,但是配合使用的软件的是 keil4,而且是用 c 语言, 所以我必须寻找用于汇编的软件和 protues 配合,而且需要学习怎么使用。 之前做的微机实验,说白了,外围电路其实已经差不多接好了,所以这次 我得学习如何搭建 8086 外围设备接口电路,一开始真的是一头雾水,但 通过查找资料,总算对这些有了很深入的了解,尤其是 protues 软件中自 带的 8086 外围系统模本给了我很大的帮助,对我深入了解外围接口电路 的搭建以及它们的工作方式提供了不可缺少的启示到。当然布线过程中也 遇到很多隐藏问题,这次问题不易发现,所以也花了较长的时间在里面。 2.软件方面: 软件上首先问题是在选 8255 作为并行口输出时,如何用有限的 I/O 口实 现我们需要的功能,通过分析,I/O 是不够用的,因为我们既需要发送段 码,又要发送位码,同时键盘扫描的时候还需要分别两组 I/O 口,一组发 送电平,一组扫描状态。我第一想到的方法使通过锁存器,复用同一组 I/O,通过分时段分别发送段码和位码,但是通过多次仿真,发现他们之 间信号影响很大,数码跳动特别大,多次处理也不能也没有完美的显示结 果,由于课设时间紧急,这个方案暂时不用,留着之后自己再研究。最终 采用了我们实验书上的方案,将 A 口的低四位分时复用,问题得到解决。 在密码比对的时候,一开始用串指令的形式,但是出现的比对,一开始还 以为是其他地方写错了,后来通过分析,才恍然记起来串的目的段基值寄 存器默认是 ES,才解决了这个问题,不过最后我选择了运用变址的方法 实现密码比对,两种方法各有优劣。在程序写完后,经常会出现数码管不 亮的情况,这个可以从仿真的时候的电平查看,或者是查看程序,对着流 程图逐一思考。再次就是程序中由于寄存器的使用次数特别,如果不小心 保存好里面的值时,可能会起冲突,最终使用存栈和使用变量的方法解决 了这个问题。还有在存密码的时候,操作次序也十分重要,通过比较各种 方案,最终完美地完成了存密码的程序。 十一:收获、体会和建议十一:收获、体会和建议 1 硬件设计 通过本次课设,我对微机的原理有了更深的理解,实践出真知啊,而且对 protues 这个软件的功能很熟悉了。一步一步的来,从无到有,从有到优, 内心充满了无尽的自豪感。 2 软件设计 本次课程设计之中,软件的设计工作量很大而且很繁琐。尤其因为之前没 用过汇编写过这么大的程序,写起程序来特别容易搞混。通过本次设计, 我充分地体会到写程序用流程图的好处了,用流程图,思路清晰而且容易 查找错误。之前写程序都是想到什么就写什么,然后再在这里补一下那里 补一下,效率极其低下,而且程序的可读性不好。再次,虽然之前也做过 微机实验,但程序都是一小块的,而且功能单一,这对我们来说是不足够 的,我们必须要掌握写大程序的能力。 通过本次课设,我收获到很多写程序的技巧,同时也对微机课上的知识是 一次很好的查漏补缺的经历,对汇编语言的认识和体会更进一步。也在课 设的过程之中对汇编语言和 c,c+的区别和联系有了很深的理解。做课设 过程不是一帆风顺的,在这个过程之中,难免会陷入纠结之中,但每每解 决程序中的 bug 时,就会有成就感,我在这个过程深深地体会到了编程之美, 每次在睡觉前回想一下,一想到解决方法,连觉都不睡了,这也许就是它 的魅力。感谢微机老师给我们的教学帮助,同时在本次设计中学会合理分 工,团队合作。 建议:微机课设收获很大,在这两段时间里,我既忙课设,又准备考试, 看到其他学院都是考完试再有课程设计,这样就不用两头忙,所以还是希 望学院能把考试安排完再安排课设。 十二:程序附录十二:程序附录 ;* ; 程序说明: ;8255 的片选段接 8086 经译码器接出来的 IOY1 口 ;8255 用来片选和段选数码管,键盘扫描 ;8253 的片选接 IOY2 口,主要用来驱动蜂鸣器 ; 该程序采用的 3*4 矩阵,故程序中采用矩阵键盘扫描方法 ; 2016 年 1 月 10 日 ;* IOY1 EQU 0100H ;8255 片选端口始地址 MY8255_A EQU IOY1+00H*4 ;8255 的 A 口地址 MY8255_B EQU IOY1+01H*4 ;8255 的 B 口地址 MY8255_C EQU IOY1+02H*4 ;8255 的 C 口地址 MY8255_MODE EQU IOY1+03H*4 ;8255 的控制寄存器地址 IOY2 EQU 0200H ;8253 片选端口始地址 MY8253_COUNT0 EQU IOY2+00H*4 ;8253 计数器 0 端口地址 MY8253_COUNT1 EQU IOY2+01H*4 ;8253 计数器 1 端口地址 MY8253_COUNT2 EQU IOY2+02H*4 ;8253 计数器 2 端口地址 MY8253_MODE EQU IOY2+03H*4 ;8253 控制寄存器端口 地址 DATA SEGMENT DZ DW 0200H ;存放 0200h 这个地址 SB DB 0DFH ;存放数码管初始段选值 SM DB 0FEH ;存放键盘扫描的 WRONG DB 00H ; DISPLAY DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,;0, 1,9 的段显示码 DB 77H,7FH,39H,5EH,79H,71H,00H,40H,73H,38H,79h,77H,65H,79H ; 数码管显示对应段码 STRING DB 01H,01H,01H,01H,01H,01H ;初始密码,初始密码空间 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV AX,DATA MOV DS,AX START1: CALL INITIAL ; 调用初始化函数 BEGIN: CALL KEYSAN ;键盘扫描 CMP AL,0CH ;确认键 JNZ NEXT ;不是的话就转到 next CALL KEYE ;等待按键弹起 CALL MIMATEST ;密码比对 CMP CX,0H JZ OPEN1 ;密码正确 CALL TURNOFF ;否则,密码错误 JMP START1 OPEN1: CALL OPEN ;密码正确 JMP START1 NEXT: CALL PUSHKEY ;保存按键值 CALL KEYE ;按键未弹起则继续循环等待弹起 JMP BEGIN ;* ;初始化子程序 ;* INITIAL PROC NEAR ;初始化子程序 MOV DX,MY8255_MODE ;初始化 8255 工作方式 MOV AL,81H ;方式 0,A 口、B 口输出,C 口高四位 输出,C 口低 4 位输入 OUT DX,AL MOV DX,MY8255_C ;初始化开锁电平、报警电平 MOV AL,00H OUT DX,AL MOV SI,0200H ;建立缓冲区,存放要显示的键值 MOV AL,12H ;先初始化键值,显示PLEASE MOV SI,AL INC AL MOV SI+1,AL INC AL MOV SI+2,AL INC AL MOV SI+3,AL INC AL MOV SI+4,AL INC AL MOV SI+5,AL MOV DZ,0200H INITIAL ENDP ;* ;密码比对子程序 MIMATEST ;* MIMATEST PROC NEAR ;密码比对子程序 MOV SI,0200H MOV DI,OFFSET STRING MOV CL,0 ; 密码正确,则输出 CX=00H,为密码正确的标 志 MOV DX,06H AGIN: MOV AL,SI MOV BL,DI CMP DX,0 JZ QUITER CMP AL,BL JNZ NEXT1 INC SI INC DI DEC DX JMP AGIN NEXT1: MOV CL,0FFH ;密码错误,则 CX=0FFH 为密码错误的标 志 QUITER:RET MIMATEST ENDP ;* ;键盘子程序 ;* KEYSAN PROC NEAR ;键盘扫描子程序 ,该段程序参考实验书上的扫 描方法 START2: CALL DISP ;显示刷新 CALL CLEAR ;清屏 CALL KEY ;扫描按键 JNZ XIAODOU ;有键按下则跳置 XIAODOU XIAODOU:CALL DISP ;显示刷新 CALL CLEAR ;清屏 CALL KEY ;再次扫描按键 JNZ DEFINE ;有键按下则跳置 DEFINE JMP START2 ;否则跳回开始继续循环 ;上面两段程序是为了消抖 DEFINE: MOV SM,0FEH ;SM 存放扫描开始时 A 端口输出 值 MOV CL,00H ROW: MOV AL,SM ;选取一行 MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C ;读 C 口,用于判断是哪一列按键闭 合 IN AL,DX COLUMN1:TEST AL,01H ;是否为第 1 列 JNZ COLUMN2 ;不是则继续判断 MOV AL,01H ;设置第 1 行第 1 列的对应的键值 JMP DECODE COLUMN2: TEST AL,02H ;是否为第 2 列 JNZ COLUMN3 ;不是则继续判断 MOV AL,02H ;设置第 1 行第 2 列的对应的键 值 JMP DECODE COLUMN3: TEST AL,04H ;是否为第 3 列 JNZ NEXT2 ;不是则继续判断 MOV AL,03H ;设置第 1 行第 3 列的对应的键 值 JMP DECODE NEXT2: ADD CL,3 ;将 CL 上的值增加 3 MOV AL,SM ROL AL,1 MOV SM,AL JMP ROW DECODE: ADD AL,CL ;解码,确定按键值 RET KEYSAN ENDP ;* ;扫描按键是否退出对子程序 ;* KEY PROC NEAR ;扫描是否有按键闭合子程序 MOV AL,00H MOV DX,MY8255_A ; OUT DX,AL ;置 A 口为零 MOV DX,MY8255_C IN AL,DX ;读 C 口 OR AL ,0F0H NOT AL SUB AL,0H ;判断 AL 是否变成了 0,有按键按下的话就不是 0 RET KEY ENDP ;* ;按键是否弹起子程序 ;* KEYE PROC NEAR ; PUSH AX R1: CALL DISP ;显示刷新 CALL CLEAR ;清屏 CALL KEY ;扫描按键,判断按键是否弹起 JNZ R1 ;未弹起则继续循环等待弹起 POP AX RET KEYE ENDP ;* ;保存键值子程序到缓冲区 ;* PUSHKEY PROC NEAR ; MOV BX,DZ MOV SI,DZ MOV SI,AL INC BX MOV DZ,BX CMP BX,0207H ;如果空间超过 0206H 则回到 0200h JNZ GOBACK MOV DZ,0200H GOBACK: RET PUSHKEY ENDP ;* ;显示键值子程序,从第一个数码管开始依次显示 ;* DISP PROC NEAR ; PUSH AX ;以缓冲区存放的键值为键值表偏移找到键值并显 示 MOV SI,0200H ;取缓冲区的第一个数的地址 MOV SB,0FEH MOV AL,SB AGAIN: MOV DX,MY8255_A OUT DX,AL ;选通一个数码管 MOV AL,SI ;取出缓冲区中存放键值 AND AX,00FFH PUSH DI MOV DI ,AX MOV AL,DISPLAYDI ;将键值作为偏移和键值 基地址相加得到相应的键值显示段码 MOV DX,MY8255_B POP DI OUT DX,AL CALL DALLY INC SI ;取下一个键值 MOV AL,SB TEST AL,20H ;判断是否显示完? JZ OUT1 ;显示完,返回 ROL AL,1 MOV SB,AL JMP AGAIN ;未显示完,跳回继续 OUT1: POP AX RET DISP ENDP CLEAR PROC NEAR ;清除数码管显示子程序 MOV DX,MY8255_B ;段位置 0 即可清除数码管显示 MOV AL,00H OUT DX,AL RET CLEAR ENDP ;* ; 开锁子程序 ;* OPEN PROC NEAR ; MOV DX,MY8255_C ;输出开锁电平 MOV AL,010H OUT DX,AL MOV SI,0200H ;显示 00 MOV AL,00H 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 BL,0 ;密码错误次数清 0 MOV WRONG,BL XUNHUAN: CALL KEYSAN CMP AL,0CH ;返回键,退出开锁子程序 JZ RETURN2 CMP AL,0AH ;修改密码键 JZ CALL CHANGEMIMA JMP XUNHUAN RETURN2: CALL KEYE MOV DX,MY8255_C ;开锁电平置 0 MOV AL,00H OUT DX,AL RET OPEN ENDP ;* ; 修改密码子程序 ;* CHANGEMIMA PROC NEAR CALL KEYE MOV SI,0200H MOV AL,11H 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 L1: CALL KEYSAN CMP AL,0CH JZ CHANGE2 CALL PUSHKEY CALL KEYE JMP L1 CHANGE2: CALL PUTMIMA CALL KEYE CALL RING ;确认则发出滴的确认音 CALL DALLYS RET CHANGEMIMA ENDP ;* ; ;保存修改后的密码子程序 ;* PUTMIMA PROC NEAR MOV SI,0200H MOV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论