Searching \ for '1-wire bus' in subject line. ()
Make payments with PayPal - it's fast, free and secure! Help us get a faster server
FAQ page: techref.massmind.org/techref/index.htm?key=wire+bus
Search entire site for: '1-wire bus'.

Truncated match.
PICList Thread
'1-wire bus'
1997\05\30@060952 by FrankT

picon face
Does anybody have experience in using the Dallas 1-Wire bus with a PIC
16c74. Escpecially with the DS2502 1Kbit eeprom.
Is there somewhere code available?
Frank Temmerman

1997\05\30@061825 by David BALDWIN

flavicon
face
Hi,

       I used code that has been written for DS1820 (1 wire dallas interface),
and wrote code for DS1620. It is easy to do, so modifying these to use
the memory from DS should be easy too (just change the commands that are
sent). Send me emai if you want this code.

David


'1-wire bus'
1997\06\02@081439 by FrankT
picon face
David Baldwin wrote
>
>       I used code that has been written for DS1820 (1 wire dallas
interface),
> and wrote code for DS1620. It is easy to do, so modifying these to use
> the memory from DS should be easy too (just change the commands that ar=
e
> sent). Send me emai if you want this code.

Hi David,

Is it possible to send me the code for the DALLAS 1-Wire bus. I guess it is
written in assembly?  It will come in handy for me when I write the 1-wire
bus in C.

Thanks

Frank Temmerman
Gymna Repro Belgium

1997\06\02@115450 by David BALDWIN

flavicon
face
part 0 10472 bytes
;###############################################################################
#
;###############################################################################
#
;################ routines to DS1820
############################################
; all this routines are to work on a 4MHz PIC, DS1820 connected to RA0
;
; Use the routines like this

;       call    Reset           ;send reset
;       movlw   0xCC            ;skip ROM
;       call    Write
;       movlw   0x44            ;convert Temp
;       call    Write
;
; wait at least 500ms
;
;       call    Reset           ;send reset
;       movlw   0xCC            ;skip ROM
;       call    Write
;       movlw   0xBE            ;read scrachpad
;       call    Write
;       call    Read            ;read temp LSB
;       movwf   TLSB            ;store
;       call    Read            ;read temp MSB
;       movwf   TMSB            ;store
;       call    Read            ;read User 1
;       movwf   USER1           ;store
;       call    Read            ;read USER2
;       movwf   USER2           ;store
;       call    Read            ;read don't care
;       call    Read            ;read don't care
;       call    Read            ;read COUNT REMAIN
;       movwf   CO_RE           ;store
;       call    Read            ;read COUNT PER C
;       movwf   CO_PE           ;store
;       call    Read            ;read CRC
;       call    Reset           ;send reset


;******************************************************
; Routine to read a data from DS1820
; return the data in W
;******************************************************
READ    clrf    TEMP
       movlw   8
       movwf   COUNT
       bsf     PORTA,DS1

RD0     BSF     STATUS,RP0      ;Page 1
       MOVLW   B'00000000'
       MOVWF   TRISA           ;  RA0 as output
       BCF     STATUS,RP0      ;  Page 0
       bcf     PORTA,DS1       ;0 start bit
       nop                     ;1
       nop                     ;2
       BSF     STATUS,RP0      ;3 Page 1
       MOVLW   B'00000001'     ;4
       MOVWF   TRISA           ;5 RA0 as input
       BCF     STATUS,RP0      ;6 Page 0
       bsf     PORTA,DS1       ;7
       nop                     ;8
       nop                     ;9
       nop                     ;10
       nop                     ;11
       nop                     ;12
       nop                     ;13
       movf    PORTA,W         ;14 read bit
       andlw   B'00000001'
       bcf     STATUS,C
       btfss   STATUS,Z
       bsf     STATUS,C
       rrf     TEMP,1
       call    Delay50
       decfsz  COUNT,1         ;repete for 8 bits
       goto    RD0
       BSF     STATUS,RP0      ;Page 1
       MOVLW   B'00000001'
       MOVWF   TRISA           ;RA0 as input
       BCF     STATUS,RP0      ;Page 0
       movf    TEMP,W
       return

;******************************************************
; Routine to write a data in DS1820
; receive the data in W
;******************************************************
Write   movwf   temp            ;store data
       BSF     STATUS,RP0      ;Page 1
       MOVLW   B'00000000'
       MOVWF   TRISA           ;RA0 as output
       BCF     STATUS,RP0      ;Page 0
       movlw   8
       movwf   COUNT
WR0     bcf     STATUS,C        ;clear carry
       bcf     PORTA,DS1       ;start bit
       call    Delay10         ;wait 15us
       rrf     TEMP,1          ;read bit
       btfsc   STATUS,C        ;bit is 1?
       bsf     PORTA,DS1       ;yes, line goes to 1
       call    Delay50         ;wait 45us
       bsf     PORTA,DS1       ;line returns to 1
       decfsz  COUNT,1         ;repet for 8 bits
       goto    WR0
       BSF     STATUS,RP0      ;Page 1
       MOVLW   B'00000001'
       MOVWF   TRISA           ;RA0 as input
       BCF     STATUS,RP0      ;Page 0
       return


;******************************************************
; routine to send a reset pulse to DS1820
;******************************************************
Reset_DS
       BSF     STATUS,RP0      ;Page 1
       MOVLW   B'00000000'
       MOVWF   TRISA           ;RA0 as output
       BCF     STATUS,RP0      ;Page 0
       bcf     PORTA,DS1       ;pulse em 0
       call    Delay500
       bsf     PORTA,DS1
       BSF     STATUS,RP0      ;Page 1
       MOVLW   B'00000001'
       MOVWF   TRISA           ;RA0 as input
       BCF     STATUS,RP0      ;Page 0
       call    Delay500
       return

;*********************************************************
; Rotina de Delay de 15 us
;*********************************************************
Delay10 movlw   1
       movwf   COUNT2
       decfsz  COUNT2,1
       goto    $-1
       nop
       return
;*********************************************************
; Rotina de Delay de 45 us
;*********************************************************
Delay50 movlw   15
       movwf   COUNT2
       decfsz  COUNT2,1
       goto    $-1
       return
;*********************************************************
; Rotina de Delay de 500 us
;*********************************************************
Delay500
       movlw   180
       movwf   COUNT2
       decfsz  COUNT2,1
       goto    $-1
       return



;###############################################################################
#
;###############################################################################
#
;################ routines to DS1820
############################################
; all this routines are to work on a 4MHz PIC, DS1820 connected to RA0
;
; Use the routines like this

;       call    Reset           ;send reset
;       movlw   0xCC            ;skip ROM
;       call    Write
;       movlw   0x44            ;convert Temp
;       call    Write
;
; wait at least 500ms
;
;       call    Reset           ;send reset
;       movlw   0xCC            ;skip ROM
;       call    Write
;       movlw   0xBE            ;read scrachpad
;       call    Write
;       call    Read            ;read temp LSB
;       movwf   TLSB            ;store
;       call    Read            ;read temp MSB
;       movwf   TMSB            ;store
;       call    Read            ;read User 1
;       movwf   USER1           ;store
;       call    Read            ;read USER2
;       movwf   USER2           ;store
;       call    Read            ;read don't care
;       call    Read            ;read don't care
;       call    Read            ;read COUNT REMAIN
;       movwf   CO_RE           ;store
;       call    Read            ;read COUNT PER C
;       movwf   CO_PE           ;store
;       call    Read            ;read CRC
;       call    Reset           ;send reset


;******************************************************
; Routine to read a data from DS1820
; return the data in W
;******************************************************
READ    clrf    TEMP
       movlw   8
       movwf   COUNT
       bsf     PORTA,DS1

RD0     BSF     STATUS,RP0      ;Page 1
       MOVLW   B'00000000'
       MOVWF   TRISA           ;  RA0 as output
       BCF     STATUS,RP0      ;  Page 0
       bcf     PORTA,DS1       ;0 start bit
       nop                     ;1
       nop                     ;2
       BSF     STATUS,RP0      ;3 Page 1
       MOVLW   B'00000001'     ;4
       MOVWF   TRISA           ;5 RA0 as input
       BCF     STATUS,RP0      ;6 Page 0
       bsf     PORTA,DS1       ;7
       nop                     ;8
       nop                     ;9
       nop                     ;10
       nop                     ;11
       nop                     ;12
       nop                     ;13
       movf    PORTA,W         ;14 read bit
       andlw   B'00000001'
       bcf     STATUS,C
       btfss   STATUS,Z
       bsf     STATUS,C
       rrf     TEMP,1
       call    Delay50
       decfsz  COUNT,1         ;repete for 8 bits
       goto    RD0
       BSF     STATUS,RP0      ;Page 1
       MOVLW   B'00000001'
       MOVWF   TRISA           ;RA0 as input
       BCF     STATUS,RP0      ;Page 0
       movf    TEMP,W
       return

;******************************************************
; Routine to write a data in DS1820
; receive the data in W
;******************************************************
Write   movwf   temp            ;store data
       BSF     STATUS,RP0      ;Page 1
       MOVLW   B'00000000'
       MOVWF   TRISA           ;RA0 as output
       BCF     STATUS,RP0      ;Page 0
       movlw   8
       movwf   COUNT
WR0     bcf     STATUS,C        ;clear carry
       bcf     PORTA,DS1       ;start bit
       call    Delay10         ;wait 15us
       rrf     TEMP,1          ;read bit
       btfsc   STATUS,C        ;bit is 1?
       bsf     PORTA,DS1       ;yes, line goes to 1
       call    Delay50         ;wait 45us
       bsf     PORTA,DS1       ;line returns to 1
       decfsz  COUNT,1         ;repet for 8 bits
       goto    WR0
       BSF     STATUS,RP0      ;Page 1
       MOVLW   B'00000001'
       MOVWF   TRISA           ;RA0 as input
       BCF     STATUS,RP0      ;Page 0
       return


;******************************************************
; routine to send a reset pulse to DS1820
;******************************************************
Reset_DS
       BSF     STATUS,RP0      ;Page 1
       MOVLW   B'00000000'
       MOVWF   TRISA           ;RA0 as output
       BCF     STATUS,RP0      ;Page 0
       bcf     PORTA,DS1       ;pulse em 0
       call    Delay500
       bsf     PORTA,DS1
       BSF     STATUS,RP0      ;Page 1
       MOVLW   B'00000001'
       MOVWF   TRISA           ;RA0 as input
       BCF     STATUS,RP0      ;Page 0
       call    Delay500
       return

;*********************************************************
; Rotina de Delay de 15 us
;*********************************************************
Delay10 movlw   1
       movwf   COUNT2
       decfsz  COUNT2,1
       goto    $-1
       nop
       return
;*********************************************************
; Rotina de Delay de 45 us
;*********************************************************
Delay50 movlw   15
       movwf   COUNT2
       decfsz  COUNT2,1
       goto    $-1
       return
;*********************************************************
; Rotina de Delay de 500 us
;*********************************************************
Delay500
       movlw   180
       movwf   COUNT2
       decfsz  COUNT2,1
       goto    $-1
       return



More... (looser matching)
- Last day of these posts
- In 1997 , 1998 only
- Today
- New search...