打印

帮忙看看程序是不是错了,仿真不出来!谢谢

[复制链接]
1266|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
diylbl|  楼主 | 2009-1-4 22:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想实现p1.0口的led从0-9变完后向 p1.1口加一显示,p1.1口也1-9显示,
p0口接了字型。问题是是单步运行时p1.0显示一次不能再显示了,全速时两个led 显示一样的且很暗。
    org 000h
    MOV 50H,#9
    MOV 30H,#9
    mov p1,#0
    MOV A,#0
    MOV DPTR,#TAB
    MOVC A,@A+DPTR
    MOV 33H,A
    MOV 44H,A
    MOV A,#1
    MOV P1,#0
    MOV R5,#9
STAR:    NOP
        ACALL WEI
    ACALL ASS
    ACALL LED    
    ajmp STAR
;-----------------------------------
WEI:    
    MOVC A,@A+DPTR
    ACALL LEDSHUA1
;------------------------------1段限制9
        djnz 30h,aa              
        mov dptr,#TAB
    mov 30h,#9
    INC R5
aa:        RET

;-----------------------------2段SHUA2
ASS:    CJNE R5,#0,A22
    MOV R5,#9
    INC 33H
    MOV 80H,33H    
    ACALL LEDSHUA2
;------------------------------2段限制9
A22:    DJNZ 50H,AAA
    MOV 50H,#9
    MOV 33H,44H       
AAA:    RET

;------------------------LED刷新
LEDSHUA1:
    MOV R0,A
    RET
LEDSHUA2:
        MOV A,80H
    MOV P0,A
    RET
;------------------------LED位扫描
LED:    
    mov p0,R0
        setb p1.0
        acall yan
     clr p1.0
       
        mov  p0,80H
        setb p1.1
        acall yan
        clr p1.1
    RET
;-------------------------延时
yan:    mov r1,#100    
loo3:   nop
        mov r3,#50
zz:    djnz r3,zz
        mov r2,#100
loo1:    djnz r2,loo1
        djnz r1,loo3
        ret
TAB:    Db 0c0H,0f9H,0a4H,0b0H,099H
        Db 092H,082H,0f8H,080H,090H    
        END

相关帖子

沙发
红心j| | 2009-1-5 09:10 | 只看该作者

错误RAM地址的使用

80H即是P0,所以
MOV 80H,33H 相当于 MOV P0,33H

LEDSHUA2:
        MOV A,80H
    MOV P0,A
    RET
相当于
LEDSHUA2:
        MOV A,P0H
    MOV P0,A
    RET

        mov  p0,80H
        setb p1.1
相当于
        mov  p0,P0H
        setb p1.1 

(1)请用30H~7FH之间的RAM替换程序中的80H
(2)上次也看过你的程序,结构非常不好,新手以后边学习边加以注意改善吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

64

主题

119

帖子

0

粉丝