谁能帮我检查下,这个C51单片机的汇编语言有什么错误!

是一个电子密码锁。ORG0000HAJMPSTARTORG0030HSTART:ACALLBPMOVR0,#31HMOVR2,#8SET:MOVP1,#0FFHMOVA,... 是一个 电子密码锁。
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.5
L3� MOV R5,#8
ACALL BP
DJNZ R4,L3
MOV R3,#3
SETB P3.5
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.7
MOV R7,#250
L2: MOV R6,#124
L1: DJNZ R6,L1
CPL P3.7
DJNZ R7,L2
SETB P3.7
RET
DELAY�MOV R7,#20
L7: MOV R6,#125
L6: DJNZ R6,L6
DJNZ R7,L7
RET
END
展开
 我来答
zirwy
2010-10-19 · TA获得超过493个赞
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:127万
展开全部
存在以下几个问题:
1. 在按键的延时去抖动后,没有重新读取按键键值,即:
L8: ACALL DELAY
CJNE A,#0FFH,SAVE
这两条指令中间应插入:MOV A, P1,否则你用来比较的A还是第一次读到的A

2. 你在检测到按键按下后,没有等待键释放再去检测下一个按键。从你的程序中看,检测到按键按下后,蜂鸣器会响,除非你能很好的控制你按键按下的时间,不能超过蜂鸣器鸣叫的时间。所以这里建议你增加等待键释放,即:
INC R0
DJNZ R2,SET
这两条指令中插入:
RELEASE: MOV A, P1
CJNE A, #0FFH, RELEASE ; 检测到键仍按下则继续检测直至松开
ACALL DELAY ; 继续延时去抖动
MOV A, P1
CJNE A, #0FFH, RELEASE ; 去抖动后再确认一次按键已释放

你后面的代码看上去很混乱,我大致的理解是:你开始读了8次键值,存入31H开始的单元,然后后面的循环中有执行了3次 再读8次键值的事情,并且只要这8次中有一次按对了(分别与开始的第1、2、3个键值相同),就将00H这位置为有效,然后蜂鸣器响一响,没有什么实质性的工作。
另外,你的原理图中P3.2是控制线,程序中没有看到P3.2,却有P3.5。

希望你具体说明你的需求,以及你自己的编程思路,才能让别人帮到你,只会贴贴程序是没有意义的。
蓝色メメ幻影
2010-10-18
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
ORG 0000H
AJMP START
ORG 0030H
START: ACALL BP
MOV R0,#31H
MOV R2,#8
SEET: MOV P1,#0FFH
MOV A,P1
CJNE A,#0FFH,L8
AJMP SEET
L8: ACALL DELAY
CJNE A,#0FFH,SAVE
AJMP SEET
SAVE: ACALL BP
MOV @R0,A
INC R0
DJNZ R2,SEET
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.5
L3: MOV R5,#8
ACALL BP
DJNZ R4,L3
MOV R3,#3
SETB P3.5
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.7
MOV R7,#250
L2: MOV R6,#124
L1: DJNZ R6,L1
CPL P3.7
DJNZ R7,L2
SETB P3.7
RET
DELAY: MOV R7,#20
L7: MOV R6,#125
L6: DJNZ R6,L6
DJNZ R7,L7
RET
END
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiangnanshan
2010-10-18 · TA获得超过603个赞
知道小有建树答主
回答量:810
采纳率:100%
帮助的人:383万
展开全部
子程序L9和L3后面少了冒号。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lihesena
2010-10-19
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
我劝你不要学编程了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式