51 汇编语言编程--输入密码
;某些触屏手机上,有个滑动开锁的操作。
;笔记本电脑,一般都是用键盘输入密码。
;也有人把密码设置成:ASDFGHJKL;'Enter,当开机时,只需用手指在键盘上划一下,即可。
;单片机,也可以设置这样形式的密码,依次按下某些键,即可成功进入下一步的操作。
;下图电路,就是依次按键,进行输入开机密码的:
;图片链接:http://xiangce.baidu.com/picture/detail/87503ff87f93282e095a37813aa9d7f302860809
;本题目来自:http://zhidao.baidu.com/question/574521166.html
;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 汇编语言编程:8个按键控制8个LED
;89C51汇编语言写8个按键控制8个LED ;按键接P2口,LED接P1口. ;有6按键,按下对应LED长亮,重复按下,LED灭: ;有两个特殊按键,按下,对应LED每隔1秒闪烁,重复按下,LED灭 ...
- c51按键控制灯亮汇编语言,51单片机汇编语言编程进行按键控制
硬件电路: P1.0 ~ P1.5 外接 6 个 LED,分别称为 D1 ~ D6,低电平发光. P0.0 ~ P0.3 外接 4 个 按键,分别称为 K1 ~ K4. P3.2 ~ P3.3 外接 ...
- c55x汇编语言,TMS320C55x汇编语言编程A.ppt
TMS320C55x汇编语言编程A 例4-17,无效定义的表达式. .global Y ; 定义Y为全局外部符号 badsym1.set Y ; Y在当前文件中未定义 badsym2.set 50h ...
- 用汇编语言编程的计算机
用汇编语言编程的计算机 下面介绍一种通过汇编语言进行编程的计算机.该计算机通过按键输入汇编语言程序,通过数字电路判断汇编语句的因果关系,并实现相关保存到寄存器,像端口输出信号,从端口读取信号的功能.计 ...
- C语言----- 4/π=1-1/3+1/5-1/7+...,编程计算π的近似值,直到最后一项的值小于10-4次方为止 //输出π的值,并统计累加的项数
代码如下: //利用 4/π=1-1/3+1/5-1/7+...,编程计算π的近似值,直到最后一项的值小于10-4次方为止 //输出π的值,并统计累加的项数 #include<stdio.h&g ...
- 51 AVR 编程器USBASP下载器驱动安装及程序下载
51 AVR 编程器USBASP下载器驱动安装及程序下载 下载器的介绍 驱动的下载 1.win10驱动的下载 其他系统驱动的安装 接线介绍 程序的下载 一.Progisp 的特点: 二.progisp ...
- 《 汇编语言编程基础 基于 LoongArch 》读书与实践笔记
< 汇编语言编程基础 基于 LoongArch >读书与实践笔记 更新记录 前言 声明 准备 1. 文档 2. 环境 第一章 汇编语言和龙芯架构简介 1.1 计算机语言 1.1.1 机器语 ...
- 51单片机编程入门用什么单片机比较好?
每个男人心中其实都有一个"钢铁侠"梦. 希望自己拥有像男主一样的技术,通过技术去改变世界. 不过想做到这一步,需要学的东西实在太多太多,可能这辈子都学不完. 就是这种遥不可及的事情 ...
- 实验二、80C51汇编语言编程实验:编写3字节二进制加法子程序,并用主程序调用不同的加数和被加数来检测该子程序的正确性。需考虑有进位和无进位情况。
实验二.80C51汇编语言编程实验:编写3字节二进制加法子程序,并用主程序调用不同的加数和被加数来检测该子程序的正确性.需考虑有进位和无进位情况. 报价 200 文章目录 实验二.80C51汇编语言编 ...
最新文章
- Hadoop 单节点 伪分布 安装手记
- FPGA管脚分配需要考虑的因数
- python中的类及self详解_Python类class参数self原理解析
- 查找数组B中不在数组A中的元素
- 数据结构(8)----栈与队列之循环队列
- 详细分析图像形态学操作
- Http协议:状态码
- jvm高并发_JVM上的高并发HTTP客户端
- (一) CPU 性能测试 (压力)
- 计算二叉树叶子结点数
- dell计算机环境温度,戴尔桌面使用和维护的考虑.doc
- 机器学习项目实践——K-means聚类实现广告分析
- Intent启动拨号盘,实现打电话功能
- NVMe 协议详解(一)
- iOS : 通过路径读取文件的几种方法
- Baklib分享|知识管理是企业发展的风向标
- VS2010 提示存储空间不足 无法操作
- vue实践学习——keep-alive属性及生命周期
- 基于人工鱼群优化可倒摆法(QIP)控制器附matlab代码
- 游戏盾的原理和功能是什么?
热门文章
- Unity下实现弹簧骨骼(Spring Bone)
- 区块链研究生专业_“区块链大数据赋能低碳发展”高端研讨活动 在增城低碳总部举行...
- Android上传蒲公英平台脚本
- 以红酒数据集分类为例做决策树的可视化
- fseek函数的用法(用于设定指针位置)
- 李宏毅作业七其二 Network Compression (Knowledge Distillation)
- [控制原理基础]浅谈PID算法
- Android QQ 登录接入详细介绍
- 2021教育企业邮箱怎么注册?如何申请学校邮箱?
- Essential Google Cloud Infrastructure: Foundation