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

* 47385: 计米器程序求教?

   赵伯忠 
赵伯忠发表的帖子 

 计米器程序求教?
这个程序现在还存在几个问题:1、32.33H(计数值)不能清零,2、I2C不能读写(有时能
写),3、34H不能清零和加,4、30.31H(预置值)设定不能存入。以下是源程序,万望各
位大侠不惜指教,终身难忘!!!!!
        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 0023H
        AJMP MAIN
       

        ORG 80H
RD24C:    MOV 20H,#00H
        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
        INC R3
        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,#05H,WW
        ACALL FJSM        
    MOV TMOD,#16H
    MOV TH1,#0BH
    MOV TL1,#0DCH
    MOV TH0,#01BH
    MOV TL0,#01BH
        MOV IP,#04H        
    MOV IE,#8EH
        CLR TR1
        SETB TR0    
    MOV SP,#70H    
NEXT:    LCALL DISP    
    LCALL KEY
        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
        
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,#02H,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
        MOV A,34H
    ADD A,#01H
    MOV 34H,A
    CJNE A,#64H,RETI3
    MOV 34H,#00H
        LJMP RETI3
        NOP

RETI3:  MOV 32H,#00H
        MOV 33H,#00H
        CLR TR0
        SETB TR1
        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 B,#10
        MOV A,34H
        DIV AB
        MOV 7DH,B
        MOV 7EH,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
    MOV A,7DH
        MOVC A,@A+DPTR
    MOV P0,A
    CLR P1.4
    ACALL DELAY1
    SETB P1.4
    MOV A,7EH
        MOVC A,@A+DPTR
    MOV P0,A
    CLR P1.5
    ACALL DELAY1
    SETB P1.5
    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
    JNB P2.5,RETE
    RET
    NOP
    NOP

RETE:   LCALL DISP
    JNB P2.0,ANKEY
        JNB P2.4,L7
        JNB P2.5,L8

RETX:   RET
        NOP
        NOP

ANKEY:  CLR EA
        MOV 48H,#0FFH
        
LX:     MOV A,48H
        DEC A
        JZ L9
        MOV 48H,A
        LCALL DE10MS
        JNB P2.0,L1
        JNB P2.1,L9
        JNB P2.4,L7
        JNB P2.5,L8
        LCALL DISP
        AJMP LX
        NOP
        NOP

LX2:    MOV A,48H
        DEC A
        JZ L2
        MOV 48H,A
        LCALL DE10MS
        JNB P2.1,L2
        JNB P2.2,L31
        JNB P2.3,L31
        AJMP LX2
        NOP
        NOP

L7:     LJMP L71
L8:     LJMP L81

L21:    MOV A,32H
        MOV 30H,A
        MOV A,33H
        MOV 31H,A

L2:     JNB P2.1,L25
        MOV A,44H
        MOV 34H,A
        MOV A,43H
        MOV 33H,A
        MOV A,42H
        MOV 32H,A
  
L9:     SETB EA
        LJMP NEXT
        NOP
        NOP

L25:    LCALL DISP
        LJMP L21
        NOP
        NOP

L1:     MOV 4AH,#0FFH
    JNB P2.0,L11
        MOV A,34H
        MOV 44H,A
        MOV A,33H
        MOV 43H,A
        MOV A,32H
        MOV 42H,A
        MOV A,30H
        MOV 32H,A
        MOV A,31H
        MOV 33H,A
        MOV 34H,#01H
        LCALL DISP

L31:    MOV 49H,#06BH
        MOV 48H,#0FFH
        MOV 40H,#0FFH
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
        AJMP L32
        NOP
        NOP

L11:    LCALL DISP
        AJMP L1
    NOP
    NOP

L313:   DEC A
        MOV 49H,A
    AJMP L12

L311:   MOV A,49H
        CJNE A,#02H,L313

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


L52:    DEC A
        MOV 49H,A
    AJMP L55

L5:     MOV A,49H
        CJNE A,#02H,L52

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

TIME1:  PUSH ACC
        PUSH PSW
        MOV TH1,#0BH
        MOV TL1,#0DCH
        MOV A,45H
        ADD A,#01H
        MOV 45H,A
        CJNE A,#10H,TIME2
        MOV 45H,#00H
        MOV A,46H
        ADD A,#01H
        MOV 46H,A
        CJNE A,#02H,TIME2
        MOV 46H,#00H
    SETB P2.7
        CLR TR1
        SETB TR0
        NOP
        NOP
        
TIME2:  POP PSW
        POP ACC
    RETI
        NOP
    NOP

L71:    CLR EA
        JNB P2.4,L73
        MOV 32H,#00H
        MOV 33H,#00H
    MOV A,34H
    ADD A,#01H
    MOV 34H,A
    CJNE A,#64H,L72
    MOV 34H,#00H

L72:    LJMP L9

L73:    LCALL DISP
        AJMP L71

L81:    CLR EA
        JNB P2.5,L82
        MOV 34H,#00H
        LJMP L9

L82:    LCALL DISP
        AJMP L81


MAIN:   PUSH ACC
        PUSH PSW
        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,#05H,WR24C2
        ACALL FJSM
    MOV 49H,#10H
        ACALL DE10MS
        SETB EA
        POP PSW
    POP ACC
    RETI
        NOP

DE10MS: MOV A,49H
        MOV R7,A
        NOP
LOOP2:  LCALL DISP
        DJNZ R7,LOOP2
        RET
        NOP

DELAY1: MOV R6,#80H
        DJNZ R6,$
        RET
        NOP
        NOP
    
    
END



发表时间:2004年1月9日14:22:19

  
回复该帖

本主题共有 3 帖,分页:>>>>>该主题的所有内容[3]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  47428.[详细]莫名其妙。。。
摘要:莫名其妙。。。......(14字)
- [guest][931次] 2004年1月10日

  47454.[详细]说的再详细点啊!不然谁有那么多功夫?
摘要:......(无内容)
- [guozhigang][867次] 2004年1月10日

[上一篇帖子]:请各位帮帮忙呀,急!!!!!!![em08]
[下一篇帖子]:我做的电阻识别软件,希望给大家一些帮助可惜我没办主页,不知道怎么分发,估计这个软件可以给大家一些帮助