新人请教大家一个问题

2019-03-24 18:52发布

我正刚学习单片机,现在在做一个数码管动态扫描显示,其中选片和选段是共用的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,真不知道为什么。。。
求教呀 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
ltbytyn
2019-03-25 01:09
TAB:    DB   06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
             //     1     2      3     4      5     6      7    8     9
少了个“9”,程序其他无问题

[ 本帖最后由 ltbytyn 于 2013-1-17 09:04 编辑 ]

一周热门 更多>