我正刚学习单片机,现在在做一个数码管动态扫描显示,其中选片和选段是共用的P0口,而p2.4是用来控制选择选片和选段的,我想实现八个数码管分别显示23456789,最终数码管上2345678都是对的,但9不对,显示的是八段全部都亮。下面是我的程序
ORG 0000H
SJMP START
ORG 0030H
START: MOV SP,#60H
MOV P0,#00H
CLR P2.6
CLR P2.5
SETB P2.7
CLR WR
MAIN: CALL DISPLAY
SJMP MAIN
DISPLAY:MOV R0,#00H
MOV R1,#01H
MOV DPTR,#TAB
LOOP: SETB P2.4
INC R0
MOV A,R0
MOVC A,@A+DPTR
MOV P0,#00H ;消隐
MOV P0,A ;送段码
CLR P2.4
MOV A,R1 ;送位码
MOV P0,A
RL A ;移位
MOV R1,A
CALL DELAY
CJNE R0,#8,LOOP ;判断8次是否循环完成
MOV P0,#00H
RET
DELAY: MOV R6,#25
DD: MOV R7,#25
DJNZ R7,$
DJNZ R6,DD
RET
TAB: DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH
END
通过调试,到最后一次循环时R0为0x08,dptr为0x006c,但二者一加就变成了0ffh,真不知道为什么。。。
求教呀
此帖出自
小平头技术问答
一周热门 更多>