我是新手,看书时调下面这段程序:一个按键中断程序,怎么看感觉程序没错啊,可结果总是出不来,郁闷死我呢!
在一单片机群里咋都没人理我,只好来论坛里求救各位大哥大姐呢,小弟万分感激!
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP KEY
ORG 0030H
MAIN:
MOV SP,#70H
MOV TCON,#00H
MOV IE,#81H
MOV IP,#01H
HERE: AJMP HERE
KEY: MOV A,P2
ANL A,0FH
MOV 20H,A
ACALL DELAY
MOV A,P2
CJNE A,20H,KEYE
JNB 00H,KEY0
JNB 01H,KEY1
JNB 02H,KEY2
JNB 03H,KEY3
KEYE: RETI
KEY0:MOV 60H,#00H
ACALL LED
RETI
KEY1:MOV 60H,#01H
ACALL LED
RETI
KEY2:MOV 60H,#02H
ACALL LED
RETI
KEY3:MOV 60H,#03H
ACALL LED
RETI
LED: MOV A,60H ;延时大于10ms
MOV DPTR,#SCAN
MOVC A,@A+DPTR
MOV P0,A
RET
DELAY:
MOV R2,#20
LOOP1:MOV R1,#250
LOOP2
JNZ R1,LOOP2DJNZ R2,LOOP1
RET
SCAN
B 3FH,06H,5BH,4FH;显示0,1,2,3END

截图00.jpg

最新回复
zhangxf (2008-9-30 15:40:25)
meijun0202 (2008-9-30 17:07:50)
显示进入中断了的
可是P0口还是一点输出都没有
zhangxf (2008-10-01 08:34:50)
budhy (2008-10-01 08:54:08)
QUOTE:
楼主写对了,不过显示不正确。CODE:
LOOP2: DJNZ R1,LOOP2budhy (2008-10-01 10:23:00)
QUOTE:
给你查过了,致命的错误在于:CODE:
ANL A,#0FH第一次取 P2 时你先 ANL A,#0FH,第二次取 P2 就马上 CJNE A,20H,KEYE , 结果每次都传跳到 KEYE 去。MOV 20H,A
ACALL DELAY
MOV A,P2
CJNE A,20H,KEYE
我也整顿一下你的程序,如下:
CODE:
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP KEY
ORG 0030H
MAIN:
SETB IT0
SETB EX0
SETB EA
HERE:
AJMP HERE
KEY:
CPL P1.0
MOV A,P2
JNB ACC.0,KEY0
JNB ACC.1,KEY1
JNB ACC.2,KEY2
JNB ACC.3,KEY3
KEYE:
RETI
KEY0:
MOV A,#00H
SJMP LED
KEY1:
MOV A,#01H
SJMP LED
KEY2:
MOV A,#02H
SJMP LED
KEY3:
MOV A,#03H
LED:
MOV DPTR,#SCAN
MOVC A,@A+DPTR
MOV P0,A
RETI
SCAN:
DB 3FH,06H,5BH,4FH ;显示0,1,2,3
END
(2008-10-01 10:23:00, Size: 16 KB, Downloads: 3)
meijun0202 (2008-10-01 12:16:42)
怪我不细心真太感谢你呢
这感谢之情如滔糕流水,绵绵不绝!
呵呵
真非常感谢
还上面的各位大哥,非常感谢你们的帮助
以后多细心些!
budhy (2008-10-01 12:27:04)
QUOTE:
在 SWITCHES.RAR 中,有完整的仿真图还有程序,你下载看看吧。