OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 24c02 24c02的问题?

共2条 1/1 1 跳转至

24c02 24c02的问题?

院士
2006-12-22 22:43:00    评分
24c02 24c02的问题?



关键词: 24c02     问题    

院士
2006-12-22 22:43:00    评分
2楼
问 我做的24C02的存取实验中:
  为什么第二次读数据的时候,会接着第一次的读?(程序重新运行了)
  谢谢指点!
程序如下:BITCNT  EQU     40H
SUBADR  EQU     41H
SDA     BIT     P1.6
SCL     BIT     P1.5

      ORG 00H
      JMP MAIN
      ORG 0100H
MAIN:
     SETB   P1.0
     MOV    R6,#4
LOPP:
     ACALL  DELAY
     ACALL  READ_24C02
     INC    SUBADR
     ACALL  DELAY
     MOV    P2,A
     ACALL  DELAY
     MOV    P2,#0FFH
     ACALL  DELAY
     DJNZ   R6,LOPP
     ;JMP    MAIN
;===================================
DELAY:  MOV   R0,#0FFH
DELAY0: MOV   R1,#0FFH
DELAY1: NOP
        NOP
        NOP
        DJNZ  R1,DELAY1
        DJNZ  R0,DELAY0
        RET
;=======================================
READ_24C02:                        
           ACALL  START            
           MOV    A,#0A0H
           ACALL  SENTBYTE         
           JB     F0,RCVRETURN     
           MOV    A,SUBADR         
           ACALL  SENTBYTE         
           JB     F0,RCVRETURN    
           ACALL  START            
           MOV    A,#0A0H          
           SETB   ACC.0            
           ACALL  SENTBYTE         
           JB     F0,RCVRETURN     
           ACALL  RCVBYTE          
RCVRETURN:
           RET
;=========================================
START:
     SETB SDA           
     NOP
     NOP
     NOP
     SETB SCL           
     NOP                
     NOP
     NOP
     CLR  SDA           
     NOP                
     NOP
     NOP
     CLR  SCL           
     RET
;==================================
STOP:
     CLR  SDA           
     NOP
     NOP
     NOP
     SETB SCL           
     NOP                
     NOP
     NOP
     SETB SDA           
     NOP
     NOP
     NOP
     NOP
     RET
;===============================
SENTBYTE:                   
         MOV BITCNT,#08H
SENTB:
      RLC  A                
      MOV  SDA,C
      NOP
      NOP
      NOP
      SETB SCL              
      NOP                   
      NOP
      NOP
      CLR  SCL              
      DJNZ BITCNT,SENTB     
      NOP
      NOP
      SETB SDA              
      NOP
      NOP
      SETB SCL              
      NOP
      NOP
      CLR  F0               
      JNB  SDA,ACKEND       
      SETB F0              
ACKEND:
      NOP
      CLR  SCL              
      RET
;=================================
RCVBYTE:
      SETB SDA              
      MOV  BITCNT,#08H      
RCV:
     NOP
     CLR  SCL              
     NOP                   
     NOP
     NOP
     NOP
     NOP
     SETB SCL              
     NOP
     NOP
     MOV  C,SDA
     RLC  A                
     NOP
     NOP
     DJNZ BITCNT,RCV       
     CLR  SCL              
     NOP
     NOP
     CLR  SDA
     SETB SDA              
     NOP
     NOP
     SETB SCL              
     NOP                  
     NOP
     SETB SDA
     NOP
     NOP
     NOP
     CLR  SCL              
     RET


     END

1: 有没有人能帮帮我???? 2: 你能不能先把IIC写好,写24c02不就很简单了 3: 仿真看看是不是第2次读的时候SUBADR没改变?READEEPROM:
        CALL    STARTE2      ;开始
        LD      R1,#0A0H
        CALL    WR_BYTE
        
        LD      R1,R2       ;R2是需要读取数据的地址
        CALL    WR_BYTE
        
        
        CALL    STARTE2
        LD      R1,#0A1H
        CALL    WR_BYTE
       
        
        CALL    RD_BYTE    ;输出r0是读取的数据
        LD      R3,R0
        CALL    SNACK
        CALL    EPSTOP
        CALL    DELAY20MS
        RET    

重复调用的时候只需要增加r2,r3的地址就ok

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]