4790|11

47

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

请教我读一读这个密码锁程序 [复制链接]

在网上找了个密码锁程序来学习,用KEIL编译,开始不能生成HEX文件,后来找到原因了,有些是数字0打成了字母O,有些是漏了冒号!
现在想问一下,这个程序应该怎样读?密码是如何设置的?刚学,搞不懂.
org 0000h
AJMP START
ORG 0030H
START:ACALL BP
MOV R0,#31H
MOV R2,#8
SET:MOV P1,#0FFH
MOV A,P1
CJNE A,#0FFH,L8
AJMP SET
L8:ACALL DELAY
CJNE A,#0FFH,SAVE
AJMP SET
SAVE:ACALL BP
MOV @R0,A
INC R0
DJNZ R2,SET
MOV R5,#16
D2S:ACALL BP
DJNZ R5,D2S
MOV R0,#31H
MOV R3,#3
AA1:MOV R2,#8
AA2:MOV P1,#0FFH
MOV A,P1
CJNE A,#0FFH,L9
AJMP AA2
L9: ACALL DELAY
CJNE A,#0FFH, AA3
AJMP AA2
AA3:ACALL BP
CLR C
SUBB A,@R0
INC R0
CJNE A,#00H,AA4
AJMP AA5
AA4:SETB 00H
AA5:DJNZ R2,AA2
JB 00H,AA6
CLR P3.3
L3: MOV R5,#8
ACALL BP
DJNZ R4,L3
MOV R3,#3
SETB P3.3
AJMP AA1
AA6:DJNZ R3,AA7
MOV R5,#24
L5:MOV R4,#200
L4:ACALL BP
DJNZ R4,L4
DJNZ R5,L5
MOV R3,#3
AA7:MOV R5,#40
ACALL BP
DJNZ R5,AA7
AA8:CLR 00H
AJMP AA1
BP:CLR P3.4
MOV R7,#250
L2:MOV R6,#124
L1:DJNZ R6,L1
CPL P3.4
DJNZ R7,L2
SETB P3.4
RET
DELAY MOV R7,#20
L7:MOV R6,#125
L6:DJNZ R6,L6
DJNZ R7,L7
RET
END




原程序说明:
该密码锁中RAM存储单元的分配方案如下:
31H~38H:依次存放8位设定的密码,首位密码存放在31H单元;
R0:指向密码地址;
R2:已经键入密码的位数;
R3:存放允许的错码次数3与实际错码次数的差值;
R4至R7:延时用;
00H:错码标志位。

请问:在这处程序中是如何设置初始密码的?

[ 本帖最后由 朱仔 于 2009-5-15 17:18 编辑 ]
此帖出自单片机论坛

最新回复

看的我一个头两个大   详情 回复 发表于 2022-9-2 14:28
点赞 关注
 

回复
举报

47

帖子

0

TA的资源

纯净的硅(中级)

沙发
 
写程序要禁用Smilles才行,不然会在程序中间跑出个笑脸来!:lol
此帖出自单片机论坛
 
 

回复

2498

帖子

0

TA的资源

至上芯片

板凳
 

回复 楼主 朱仔 的帖子

从p1读入的,然后依次保存的!这几个语句很关键的!SET:MOV P1,#0FFH
MOV A,P1
CJNE A,#0FFH,L8------------条件是关键哦!
AJMP SET
此帖出自单片机论坛

赞赏

1

查看全部赞赏

 
个人签名我的邮箱gaoxiaoan123@163.com!回帖是一种美德!互相帮助,共同进步!
口头禅:生活在于创造机会,把握机会!
 
 

回复

47

帖子

0

TA的资源

纯净的硅(中级)

4
 
不知为什么把"SET"改成"AAA"才能生成HEX文件?没改就总出错。
此帖出自单片机论坛
 
 
 

回复

2498

帖子

0

TA的资源

至上芯片

5
 

回复 4楼 朱仔 的帖子

SET 是一个指令的名字,就像setc 设置标志一样,标号选择错误,与指令重复了!你换成abc,也好,只要不和指令的助记符重复就好!
此帖出自单片机论坛
 
个人签名我的邮箱gaoxiaoan123@163.com!回帖是一种美德!互相帮助,共同进步!
口头禅:生活在于创造机会,把握机会!
 
 

回复

47

帖子

0

TA的资源

纯净的硅(中级)

6
 
谁能举个例子输入一个密码吗?
此帖出自单片机论坛
 
 
 

回复

47

帖子

0

TA的资源

纯净的硅(中级)

7
 
多谢小的指教!因为你不说我不敢肯定。但对于具体密码还是糊涂!
此帖出自单片机论坛
 
 
 

回复

2498

帖子

0

TA的资源

至上芯片

8
 

回复 7楼 朱仔 的帖子

这个是通过引脚输出的信号的!
此帖出自单片机论坛
 
个人签名我的邮箱gaoxiaoan123@163.com!回帖是一种美德!互相帮助,共同进步!
口头禅:生活在于创造机会,把握机会!
 
 

回复

47

帖子

0

TA的资源

纯净的硅(中级)

9
 
它有8个按键,每个按键对应一个P1口,但是,我在按按键时,它是怎样比较的呢?程序是怎样设置按键顺序的?我看不明白。
此帖出自单片机论坛
 
 
 

回复

1583

帖子

0

TA的资源

五彩晶圆(高级)

10
 
这个程序还不能算是一个真正的密码锁。
它的工作过程是:一开机,设置密码,就是那个SET的那个子程序,它是用来设置密码。
一开机就按按键输入初始密码。

然后D2S是一个初始化程序,它是给后面的等待输入密码做一个初始化。
AA2就是一个判断(也兼等待)按键输入密码的程序。它在第输入一个键后就进行比较
SUBB A,@R0这条指令就是比较,它是把得到的值跟原先保存(就是上面SET程序保存)的值相减,如果为0就表示两个值相同。

这个程序有一个小错误。
如:SET:MOV P1,#0FFH
MOV A,P1
CJNE A,#0FFH,L8
AJMP SET
L8:ACALL DELAY
CJNE A,#0FFH,SAVE
这个ACALL DELAY后面的应该再加一个MOV A,P1
要是不加这条指令,那么A中还是延时之前的值,这个ACALL DELAY应该是为了防抖
而设的。如果其后面不加MOV A,P1那么ACALL DELAY这条指令就没有多少存在的价值了。

修改后:SET:MOV P1,#0FFH
MOV A,P1
CJNE A,#0FFH,L8
AJMP SET
L8:ACALL DELAY
MOV A,P1
CJNE A,#0FFH,SAVE
此帖出自单片机论坛

赞赏

1

查看全部赞赏

 
个人签名
 
 

回复

47

帖子

0

TA的资源

纯净的硅(中级)

11
 
这样一解释我就明白好多了,谢谢!
此帖出自单片机论坛
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

12
 

看的我一个头两个大

此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表