DS homero source

Bodosi Bal zs BBALAZS at phys.szote.u-szeged.hu
Wed Mar 7 11:11:30 CET 2007


Szia, megis talaltam itt egyet.
A data_pin az az PORTA,3 volt, a data_pin_dd meg az adatirany-reg. 
a TRISA,3 
Az idoziteseket ertelemszeruen a frekihez kell hangolni.

;------------------------------------------------------------

rutin1820_konverzio_indito
     call   INIT        ; init DS1820
     mov  O_BYTE,0cch   ;skip rom ALL devices
     call   OUT_BYTE
     mov  O_BYTE,44h    ;temp conv ALL devices
     call   OUT_BYTE
    ret

rutin1820_homerseklet_beolvaso
     call   WAIT           ; wait for conversion to complete
     call   INIT
     mov  O_BYTE,055h   ;rom match
     call   OUT_BYTE
    call pottyos
     mov  O_BYTE,0beh
     call   OUT_BYTE
     call   IN_BYTE
     movwf  ertek03lo
     call   IN_BYTE
     movwf  ertek03hi

     call   INIT
     mov  O_BYTE,055h   ;rom match
     call   OUT_BYTE
    call reszelt
     mov  O_BYTE,0beh
     call   OUT_BYTE
     call   IN_BYTE
     movwf  ertek04lo
     call   IN_BYTE
     movwf  ertek04hi

     call   INIT
     mov  O_BYTE,055h   ;rom match
     call   OUT_BYTE
    call rovid
     mov  O_BYTE,0beh
     call   OUT_BYTE
     call   IN_BYTE
     movwf  ertek05lo
     call   IN_BYTE
     movwf  ertek05hi

     call   INIT
     mov  O_BYTE,055h   ;rom match
     call   OUT_BYTE
    call hosszu
     mov  O_BYTE,0beh
     call   OUT_BYTE
     call   IN_BYTE     ; get from DS1820 and save
     movwf  ertek06lo
     call   IN_BYTE
     movwf  ertek06hi
ret



; Standard 1-Wire routines -------------------------------------------
-----

INIT:
     call   pin_input
     call   pin_output      ;force low 
     movlw  D'50'              ; 500 us delay
     call DELAY_10USEC
     call pin_input             ;release pin
     movlw  D'10'              ; 100 us delay
     call DELAY_10USEC
     btfss Data_pin
    nop 
     movlw  D'50'       ; 500 usec delay
     call DELAY_10USEC
     ret

WAIT:        
     call   IN_BYTE
     movlw  0FFH
     subwf  I_BYTE, W
     btfss  STATUS, Z
     jmp   WAIT
     ret  

IN_BYTE:                   ; returns byte in W
     mov INDEX,8
     clrf I_BYTE

 bajtotbevesz:
     call pin_output         ; momentary low on DATA_PIN
        nop
    nop
     call pin_input

    mov delawar,8   ;wait
      delava1
    nop
    decfsz delawar
    jmp delava1

    clc
     btfsc Data_pin
    stc
     rrcf    I_BYTE, F
     movlw  6              ; now delay 60 usecs
     call   DELAY_10USEC
     decfsz INDEX, F
     jmp   bajtotbevesz

     movf I_BYTE,w         ; return the result in W
     ret

OUT_BYTE:
     mov INDEX,8
  bajtkitolo_1:
     rrcf    O_BYTE, F
     btfss  STATUS, C
     jmp   OUT_0
     jmp   OUT_1     
 kitolovissza:
     decfsz    INDEX, F
     jmp   bajtkitolo_1
     ret

OUT_0:
     call   pin_output          ; bring DATA_PIN low
     movlw  6               ; for 60 usecs
     call   DELAY_10USEC
     call   pin_input
     jmp   kitolovissza

OUT_1:
     call pin_output            ; momentary low
    nop
    nop
    nop
    nop
     call   pin_input
     movlw 6
     call DELAY_10USEC
     jmp   kitolovissza

;;;;;;

pin_input:
     bsf  Data_pin_dd       ; high impedance
     ret

pin_output:
     bcf  Data_pin_dd       ; low impedance zero
     bcf  Data_pin
     ret

DELAY_10USEC:  ; provides a delay equal to W * 10 usecs
     movwf LOOP1
   varcik1:
    mov delawar,10
      delavara
    nop
    decfsz delawar
    jmp delavara
     decfsz LOOP1, F
     jmp varcik1
     ret

rovid
     mov  O_BYTE,010h
     call   OUT_BYTE
     mov  O_BYTE,0a3h
     call   OUT_BYTE

     mov  O_BYTE,04ch
     call   OUT_BYTE
     mov  O_BYTE,0ffh
     call   OUT_BYTE

     mov  O_BYTE,00h
     call   OUT_BYTE
     mov  O_BYTE,08h
     call   OUT_BYTE

     mov  O_BYTE,00h
     call   OUT_BYTE
     mov  O_BYTE,0abh
     call   OUT_BYTE
    ret

hosszu
     mov  O_BYTE,010h
     call   OUT_BYTE
     mov  O_BYTE,034h
     call   OUT_BYTE

     mov  O_BYTE,09bh
     call   OUT_BYTE
     mov  O_BYTE,0ffh
     call   OUT_BYTE

     mov  O_BYTE,00h
     call   OUT_BYTE
     mov  O_BYTE,08h
     call   OUT_BYTE

     mov  O_BYTE,00h
     call   OUT_BYTE
     mov  O_BYTE,090h
     call   OUT_BYTE
    ret

pottyos
     mov  O_BYTE,010h
     call   OUT_BYTE
     mov  O_BYTE,091h
     call   OUT_BYTE

     mov  O_BYTE,042h
     call   OUT_BYTE
     mov  O_BYTE,0ffh
     call   OUT_BYTE

     mov  O_BYTE,00h
     call   OUT_BYTE
     mov  O_BYTE,08h
     call   OUT_BYTE

     mov  O_BYTE,00h
     call   OUT_BYTE
     mov  O_BYTE,08ah
     call   OUT_BYTE
    ret

reszelt
     mov  O_BYTE,010h
     call   OUT_BYTE
     mov  O_BYTE,036h
     call   OUT_BYTE

     mov  O_BYTE,053h
     call   OUT_BYTE
     mov  O_BYTE,0ffh
     call   OUT_BYTE

     mov  O_BYTE,00h
     call   OUT_BYTE
     mov  O_BYTE,08h
     call   OUT_BYTE

     mov  O_BYTE,00h
     call   OUT_BYTE
     mov  O_BYTE,0e2h
     call   OUT_BYTE
    ret
Udv:
    BBalazs
    
http://www.phys.szote.u-szeged.hu/bbalazs/bbalazs.htm
    



More information about the Elektro mailing list