|
在网上找了个密码锁程序来学习,用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 编辑 ]
|
|