导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→求助[guest]

 *第18231篇: 求助

  
楼 主:guest 2003年12月23日16:34
 求助
我是一个初学者,麻烦各位大侠看看这个计米器程序,编到89c51中刚开始能工作,过一段
时间就死机,有人说我的i2c读写有问题,不知原因在哪里?请跟我联系(zhaobozhong@yahoo.com.cn),切盼指点:

        sda   equ p3.7
        scl   equ p3.6
        xybz  equ f0
        buf   equ 30h
        p_adr equ 00h

        org 0000h
        ajmp rd24c
        org 0001h
        ajmp rd24c
    org 001bh
        ajmp time1
        org 000bh
        ajmp time
        org 0013h
        ajmp main
       

        org 80h
rd24c:    mov 20h,#00h
        mov 40h,#150
        mov 45h,#00h
    mov 46h,#00h
    mov 47h,#00h
    mov dptr,#p_adr
rd24c1:    clr ea
        acall fbzm
        acall csxy
        jb xybz,rd24c1
        acall fdpl
        acall fjsm
        mov a,r3
        acall fsmw
        acall csxy
        jb xybz,rd24c1
        mov r0,#buf
        mov r2,#00h
rd24c2: mov r1,#08h
rd24c3: setb scl
        setb sda
        mov c,sda
        rlc a
        clr scl
        djnz r1,rd24c3
        mov @r0,a
        inc r0
        inc r2
        cjne r2,#04h,ww
        acall fjsm        
    mov tmod,#26h
    mov th1,#0c8h
    mov tl1,#0c8h
    mov th0,#0fbh
    mov tl0,#0fbh
        mov ip,#04h        
    mov ie,#86h
        mov tcon,#18h    
    mov sp,#70h    
next:    lcall disp    
    lcall key
    lcall ankey
    sjmp next    
    nop
    nop
    nop
ww:     acall fyd
        ajmp rd24c2
fbzm:   setb sda
        setb scl
        mov a,dph
        clr c
        rlc a
        anl a,#0fh
        orl a,#0a0h
        mov r3,a
        inc r3
fsmw:   clr sda
fsmw1:  mov r1,#08h
fsmw2:  clr scl
        rlc a
        mov sda,c
        setb scl
        djnz r1,fsmw2
        clr scl
        ret
csxy:   setb sda
        setb scl
        clr xybz
        jnb sda,csxy1
        setb xybz
csxy1:  clr scl
        ret
fyd:    clr sda
        setb scl
        nop
        clr scl
        setb sda
        ret
fjsm:   clr sda
        setb scl
        nop
        setb sda
        ret
fdpl:   mov a,dpl
facc:   acall fsmw1
        acall csxy
        ret

time:    push acc    
    push psw
        setb p2.7
    inc 20h        
    mov a,20h
    cjne a,#0ah,reti2
    mov 20h,#00h
    mov a,32h
    add a,#01h
    mov 32h,a
    cjne a,#64h,reti1
    mov 32h,#00h
    mov a,33h
    add a,#01h
    mov 33h,a
    cjne a,#64h,reti1
    mov 33h,#00h
    
reti1:  mov a,33h
        mov a,30h
    mov a,31h
        mov a,32h
        cjne a,30h,reti2
        mov a ,33h
        cjne a,31h,reti2
        clr p2.7
        ljmp reti3
        nop

reti3:  lcall delay1
        ljmp main
        nop
        nop

reti2:  pop psw    
    pop acc
    reti    
    nop
    nop

disp:   mov dptr,#table
loop1:    mov b,#10
        mov a,32h
        div ab
        mov 79h,b
        mov 7ah,a
        mov b,#10
        mov a,33h
        div ab
        mov 7bh,b
        mov 7ch,a
        mov a,79h
        movc a,@a+dptr
    mov p0,a
    clr p1.0
    acall delay1
    setb p1.0
    mov a,7ah
    add a,#0ah
        movc a,@a+dptr
    mov p0,a
    clr p1.1
    acall delay1
    setb p1.1
    mov a,7bh
        movc a,@a+dptr
    mov p0,a
    clr p1.2
    acall delay1
    setb p1.2
    mov a,7ch
        movc a,@a+dptr
    mov p0,a
    clr p1.3
    acall delay1
    setb p1.3
    ret
        nop
        nop

table:  db 05h,0bdh,26h,34h
        db 9ch,54h,44h,3dh
        db 04h,14h,01h,0b9h
        db 22h,30h,98h,50h
        db 40h,39h,00h,10h
    nop
    nop

key:    jnb p2.0,rete
    jnb p2.4,rete
    ret
    nop
    nop

rete:   lcall disp
    reti

ankey:  clr ea
        mov 40h,#150
        
lx:     mov a,40h
        dec a
        jz l9
        mov 40h,a
        lcall de10ms
        jnb p2.0,l1
        jnb p2.1,l6
        jnb p2.4,l7
        lcall disp
        ajmp lx
        nop
        nop
lx2:    lcall disp
        mov a,44h
        mov 34h,a
        mov a,43h
        mov 33h,a
        mov a,42h
        mov 32h,a
        ljmp l6

l7:     ljmp l71

l21:    mov a,32h
        mov 30h,a
        mov a,33h
        mov 31h,a
        mov a,43h
        mov 33h,a
        mov a,42h
        mov 32h,a
  
l6:     jnb p2.1,l25
l9:     setb ea
        ljmp next

l25:    lcall disp
        ajmp l21
        nop

l1:     jnb p2.0,l11
        mov a,33h
        mov 43h,a
        mov a,32h
        mov 42h,a
        mov a,30h
        mov 32h,a
        mov a,31h
        mov 33h,a
        lcall disp

l31:    mov 41h,#1bh
        mov 40h,#180
l32:    mov a,40h
        dec a
        jz lx2
        mov 40h,a
        lcall de10ms
        jnb p2.2,l311
        jnb p2.3,l5
        jnb p2.1,l21
        lcall disp
        ajmp l32
        nop
        nop

l11:    lcall disp
        ajmp l1
    nop

l311:   mov a,41h
        cjne a,#02h, l12
        dec a
        mov 41h,a

l12:    lcall de10ms
    mov a,32h
    add a,#01h
    mov 32h,a
    cjne a,#64h,l312
        mov 32h,#00h
        mov a,33h
    add a,#01h
    mov 33h,a
        cjne a,#64h,l312
        mov 33h,#00h
        
l312:   jnb p2.2,l311
        ljmp l31
        nop
        nop

l5:     mov a,41h
       cjne a,#02h,l55
        dec a
        mov 41h,a

l55:    lcall de10ms
        mov a,32h
    dec a
        mov 32h,a
        cjne a,#0ffh,l51
        mov 32h,#63h
        mov a,33h
    dec a
    mov 33h,a
        cjne a,#0ffh,l51
        mov 33h,#63h

l51:    jnb p2.3,l5
        ljmp l31
        nop
        nop

l70:    clr tr0
        setb tr1
        
time2:  lcall disp
        ajmp time2

time1:  mov a,45h
        add a,#01h
        mov 45h,a
        cjne a,#32h,time2
        mov 45h,#00h
        mov a,46h
        add a,#01h
        mov 46h,a
        cjne a,#64h,time2
        mov 46h,#00h
        mov a,47h
        add a,#01h
        mov 47h,a
        cjne a,#32h,time2
        mov 47h,#00h
        clr tr1
        setb tr0
        ajmp l71
        nop
        nop

l71:    jnb p2.4,l73
        mov 32h,#00h
        mov 33h,#00h

l72:    ljmp l6

l73:    lcall disp
        ajmp l71

main:   mov dptr,#p_adr
wr24c1: clr ea
        acall fbzm
        acall csxy
        jb xybz,wr24c1
        acall fdpl
        mov r0,#buf
        mov r2,#00h
wr24c2: mov a,@r0
        acall facc
        inc r0
        inc r2
        cjne r2,#04h,wr24c2
        acall fjsm
        acall de10ms
        setb ea
        ljmp l70
        nop

de10ms: mov a,40h
        mov r7,a
        nop
loop2:  lcall disp
        djnz r7,loop2
        ret
        nop

delay1: mov r6,#80h
        djnz r6,$
        ret
        nop
        nop
end

  
2楼:guest 2004年12月9日20:59
 你的程序有点乱!!!!!!!!!!!!!
你的程序有点乱!!!!!!!!!!!!!

>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:这里有用philps的单片机上网的大侠?

[下一篇主题]:一个问题请大家帮我!!!