Autor Tema: Medidor de distancia usando SRF08 con PIC6F877 .ASM  (Leído 2785 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado guaro

  • PIC10
  • *
  • Mensajes: 5
Medidor de distancia usando SRF08 con PIC6F877 .ASM
« en: 19 de Marzo de 2007, 18:46:55 »
Saludos a todos y felicitaciones por el foro es demasiado bueno, coloque este tema porque estoy trabajando con el SRF08 Ultrasonido controlándomelo un PIC16F877 para medir distancia, pero tengo problema cuando estoy leyendo los registros de la medición, cada vez que lo hago leo 255. Lo estoy simulando en proteus y la rutina de I2C para escribir en el sensor las hace bien pero cuando leo no. les voy a Mostar el código en .ASM para ver en que me pueden ayudar.

DO   EQU   1
DI   EQU   0

#DEFINE   PIN_SDA   PORTD,3      
#DEFINE   PIN_CLK   PORTD,2


INICIO
MOVLW   B'11100000'
   MOVWF   SLAVE
   CALL      LEER_M   
   GOTO      FIN
FIN   GOTO      FIN

LEER_M
    CALL       BSTART
   CALL   RET_65MS
           BCF     SLAVE,0
           MOVF   SLAVE,W
           MOVWF      TXBUF
           CALL    TX
                CALL   RET_65MS
   MOVLW   01H
           MOVWF      TXBUF           ;
           CALL   TX              ;
   CALL   RET_65MS
                BSF   SLAVE,0
          MOVF   SLAVE,W
           MOVWF      TXBUF
           CALL    TX
   CALL   RET_65MS
   CALL       RX
           MOVF   RXBUF,W
                CALL         BSTOP
   MOVF   RXBUF,W
   MOVWF   DISTANCIA_L
   RETURN

BSTART
   BSF           PIN_SDA
   NOP
   NOP
   BSF           PIN_CLK
   NOP
   NOP
   BCF   PIN_SDA
   NOP
   NOP
   BCF          PIN_CLK
   NOP
   NOP
   
RETURN

BSTOP
   BCF   PIN_SDA
   NOP
   NOP
   BSF          PIN_CLK
   NOP
   NOP
   BSF   PIN_SDA
   NOP
   NOP
RETURN



BITOUT
   BSF   STATUS,RP0
   BCF   PIN_SDA
   CLRF   STATUS
           BSF        PIN_SDA
           BTFSS      PING,DO
           BCF        PIN_SDA
CLKOUT     GOTO   $+1
                 GOTO   $+1
                 GOTO   $+1
                BSF     PIN_CLK
                GOTO   $+1
                GOTO   $+1
                GOTO   $+1
                GOTO   $+1
                BCF     PIN_CLK
                GOTO   $+1
                GOTO   $+1
                GOTO   $+1
                GOTO   $+1
               RETLW   0

BITIN
                BSF     PING,DI
   BSF   STATUS,RP0
   BSF   PIN_SDA
   CLRF   STATUS
   GOTO   $+1
   GOTO   $+1
                BSF     PIN_CLK
               GOTO   $+1
               GOTO   $+1
               GOTO   $+1
              GOTO   $+1
              GOTO   $+1
              GOTO   $+1
              GOTO   $+1
              GOTO   $+1
              BTFSS   PIN_SDA
              BCF     PING,DI
             BCF     PIN_CLK
             GOTO   $+1
             GOTO   $+1
             GOTO   $+1
             GOTO   $+1
             RETLW   0

TX        MOVLW   .8
            MOVWF   COUNT
TXLP    BCF     PING,DO
           BTFSC   TXBUF,7
           BSF     PING,DO
           CALL    BITOUT
           RLF     TXBUF,1
           DECFSZ  COUNT
          GOTO    TXLP
          CALL    BITIN
          RETLW   0

RX      CLRF    RXBUF
          MOVLW   .8
          MOVWF   COUNT
          BCF     STATUS,0
RXLP   RLF     RXBUF,1
          CALL    BITIN
          BTFSC   PING,DI
           BSF     RXBUF,0
           DECFSZ  COUNT
           GOTO    RXLP
           BSF     PING,DO
          CALL    BITOUT
          RETLW   0



 

anything