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