51 汇编语言编程--输入密码

发布者:朱颜素韵最新更新时间:2018-05-09 来源: eefocus关键字:汇编语言  输入密码 手机看文章 扫描二维码
随时随地手机看文章

;某些触屏手机上,有个滑动开锁的操作。

;笔记本电脑,一般都是用键盘输入密码。

;也有人把密码设置成:ASDFGHJKL;'Enter,当开机时,只需用手指在键盘上划一下,即可。


;单片机,也可以设置这样形式的密码,依次按下某些键,即可成功进入下一步的操作。


;下图电路,就是依次按键,进行输入开机密码的:


51 汇编语言编程--输入密码 - 非著名博主 - 电子信息角落


;P1.0 到 P1.5 是密码键,P1.7 是确认键,


;P2.1 到 P2.6 对应 5 个密码键,平常点亮,--原文如此,应该是6个

;按下对应的密码后对应的LED熄灭,松开再次点亮,

;P2.7 上的蓝色 LED 对应的是确认键。


;密码顺序是依次按 P1.0 到 P1.5,

;密码数值和顺序都正确才点亮 P1.6 上的LED,否则点亮 P2.0 上的红色 LED。


;题目中的原程序,不可用。


;仿照原程序的思路,做而论道编写的程序如下:

;--------------------------------------

    ORG   0000H

    JMP   START

START:

    MOV   R0, #7    ;将R0作为计数器,检验密码顺序

    CLR   P1.6      ;关闭正确指示灯

    MOV   P2, #01111110B  ;P2.1到P2.6对应6个密码键,平常点亮,

LOOP:

    MOV   A, P1     ;读入

    MOV   B, A      ;暂存

    ORL   A, #01000000B  ;屏蔽指示灯

    CPL   A

    JZ    LOOP      ;无键按下,循环检测

    CALL  DL20MS    ;延时

    MOV   A, P1     ;再读一次

    CJNE  A, B, LOOP;消抖

;--------------------------------------

;已经确认有键按下:

    MOV   C, ACC.7  ;P1.7的键

    CPL   C

    RL    A

    MOV   ACC.7, C  ;送到P2.7去

    CLR   ACC.0     ;关闭错误指示灯

    MOV   P2, A     ;驱动各个按键的指示灯

;--------------------------------------

;下面等待释放

LOP2:

    MOV   A, P1     ;读入

    ORL   A, #01000000B  ;屏蔽指示灯

    CPL   A

    JNZ   LOP2      ;循环检测,等待释放

;--------------------------------------

;按键已经释放,

    MOV   P2, #01111110B  ;P2.1到P2.6对应6个密码键,平常点亮,

;--------------------------------------

;下面处理刚才的按键

    JNB   B.0, KEY0

    JNB   B.1, KEY1

    JNB   B.2, KEY2

    JNB   B.3, KEY3

    JNB   B.4, KEY4

    JNB   B.5, KEY5

    JNB   B.7, KEY7

    JMP   LOOP

;--------------------------------------

KEY0:

    CJNE  R0, #7, LOOP

    DEC   R0

    JMP   LOOP

KEY1:

    CJNE  R0, #6, LOOP

    DEC   R0

    JMP   LOOP

KEY2:

    CJNE  R0, #5, LOOP

    DEC   R0

    JMP   LOOP

KEY3:

    CJNE  R0, #4, LOOP

    DEC   R0

    JMP   LOOP

KEY4:

    CJNE  R0, #3, LOOP

    DEC   R0

    JMP   LOOP

KEY5:

    CJNE  R0, #2, LOOP

    DEC   R0

    JMP   LOOP

KEY7:

    CJNE  R0, #1, ERROR

    MOV   P2, #0    ;关闭按键指示灯

    SETB  P1.6      ;正确指示

    SJMP  $         ;停机

ERROR:

    MOV   P2, #0    ;关闭按键指示灯

    SETB  P2.0      ;错误指示

    SJMP  $         ;停机

;--------------------------------------

DL20MS:

    MOV   R6, #40

    DJNZ  R7, $

    DJNZ  R6, $ - 2

    RET

;--------------------------------------

END


关键字:汇编语言  输入密码 引用地址:51 汇编语言编程--输入密码

上一篇:51 单片机汇编编程:记录按键
下一篇:51 单片机编程:双路计数器

推荐阅读最新更新时间:2024-03-16 16:02

51单片机快速入门指南】4.3: I2C读取MPU6050陀螺仪的原始数据
普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 串口示波器:Vofa+ 1.3.10 硬知识 摘自《ATK-MPU6050六轴传感器模块用户手册_V1.0》 特性参数 模块自带了 3.3V 超低压差稳压芯片,给 MPU6050 供电,因此外部供电可以选择:3.3V / 5V 都可以。模块通过 P1 排针与外部连接,引出了 VCC、GND、IIC_SDA、IIC_SCL、MPU_INT 和 MPU_AD0 等信号,其中,IIC_SDA 和 IIC_SCL 带了 4.7K上拉电阻,外部可以不用
[单片机]
【<font color='red'>51</font>单片机快速入门指南】4.3: I2C读取MPU6050陀螺仪的原始数据
51 small、compact、large模式
内部扩展RAM的应用 RAM在程序运行过程中存放随机变量的数据空间。51单片机默认内部RAM只有128B;52单片机默认256B;STC89C52增加到512B ; 在Keil中编写程序,总程序中所有变量占用的字节数少于128B时候,并且储存模式为small时,对不定义的变量编译器将默认为0;一旦程序中变量总数量超过128B,必须对所有变量进行初始化,否则未被初始化的变量的默认值僵尸不确定的。当变量总和超过128B时候,必须重设定存储器的存储模式。 存储器模式一共有三种,分别为small、large、compact模式。 1.small模式 在small模式中,所有默认变量均装入单片机内部的RAM中,例如:uc
[单片机]
汽车故障自诊断系统与故障诊断仪V.A.G1551研究
       摘 要: 着重研究了汽车故障诊断仪V.A.G1551的工作原理,初步给出了开发与其兼容的汽车诊断仪的方法,并简要介绍了汽车诊断技术的发展历程与发展趋势。       关键词: 汽车故障诊断仪 OBD-II V.A.G1551          随着微机在汽车上的应用日趋广泛,不仅提高了汽车的性能和舒适性,也使整个汽车控制系统变得越来越复杂。因此,用户的汽车一旦因故障抛锚时,维修人员能否迅速找到发生故障的部位并加以排除就成为摆在汽车制造商面前的重要课题。当今时代,汽车工业群雄鼎立,售后服务的方便和快捷必然成为竞争的焦点。这就要求在丰富汽车各种功能的同时,完善和提高故障的检测能力,使汽车更安全、更易于维护
[测试测量]
HOLTEK新推出8051 A/D Flash Type MCU系列
Holtek推出全新的8051 A/D Flash Type MCU的HT85F2280、HT85F2270、HT85F2260系列,全系列宽工作电压范围2.2V~5.5V,符合工业等级-40℃ ~ 85℃工作温度与高抗噪声之性能要求,是一系列混合信号高性能MCU,使用1T Pipeline架构8051 CPU,做为高速数据处理引擎,内建高速12-bit ADC及可程序增益放大器(PGA),为嵌入式系统提供一个SOC应用平台。 HT85F2280、HT85F2270、HT85F2260 8051 A/D Flash Type MCU系列Program Memory为16Kx8 ~ 64Kx8、SRAM由1280
[单片机]
HOLTEK新推出80<font color='red'>51</font> A/D Flash Type MCU系列
80C51单片机内部定时器和计数器的结构及原理解析
80C51单片机内部设有两个16位的可编程定时器/计数器。可编程的意思是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和改变。在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。 定时器/计数器的结构: 图片1 从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1构成。其访问地址依次为8AH-8DH。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。这些寄存器之间是通过
[单片机]
80C<font color='red'>51</font>单片机内部定时器和计数器的结构及原理解析
Keil C51必须注意的一些有趣特性
Keil c51号称作为51系列单片机最好的开发环境,大家一定都很熟悉。它的一些普通的特性大家也都了解,(书上也都说有)如:因为51内的RAM很小,C51的函数并不通过堆栈传递参数(重入函数除外),局部变量也不存储在堆栈中,而是存在于固定的RAM中及寄存器中。那么看一下下面的程序。 void fun1(unsigned char i) { … } 正常情况参数i通过R7传入函数,那么它的实际地址在什么地方呢?就是R7吗?回答这个问题之前我们先来了解keil c51的几个有趣的特性(不考虑重入函数)。 一、函数在调用前定义与在调用后定义产生的代码是有很大差别的(特别是在优化级别大于3级时)。(本人也不太清楚为什么,大概因
[单片机]
改善8051系统用电效率的微控制器
摘要:一种改进架构的高性能8051设计、外围功能集成、选用合适的时钟源以降低功耗;并介绍节省电能的软件技术及采用待机模式降低功耗的技巧。 关键词:停机模式 空闲模式 功率管理模式 便携式产品的功能和性能日新月异。 消费者对产品性能的要求也越来越高,需要更强大的运算能力支持;另一方面,希望产品具有更低的功耗。 尽管已经出现了很多功耗处理器,但它们的性能通常很有限。Dallas公司的系列高速微控制器在性能和功耗之间取得了一个很好的折衷,采用了8051架构——世界上最流行的微控制器之一。简单易用、丰富的I/O资源使这种微控制器深受设计者的喜爱,并被广泛接受。它的流行势头已蔓延到了便携式领域,在很多应用中都有其用武之地。 本文
[应用]
CEPARK 51单片机DS18B20测试程序
/********************************************************************** * 文件名称: CEPARK 51 V2.0开发板 * 程序版本: V1.0 * 技术支持:http://bbs.cepark.com *CEPARK http://bbs.cepark.com/viewthread.php?tid=34&fromuid=6136 * Cepark暑期51在线免费培训用程序---活动报名地址: http://bbs.cepark.com/viewthread.php?tid=14228&fromuid=6136 ********************
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved