DS18B20?? Kde může být chbya?
Napsal: 25 úno 2009, 18:45
Zdravím! Napsal jsem si program pro DS18B20, ale nejede! Uz nad tim sedim 3 den a furt nic! Myslíte, že by jste mi mohli pomoct? Je navržen pro krystal 24MHz!! Výpis teploty by měl být na LED display, který je multiplexovaný.
Výpis z programu je zde:
[list=]; name teplomer
org 0
dalas bit P2.0
;-----------------------------hlavni program
hlavni:
call reset
mov A,#0CCh
call zapis
mov A,#044H
call zapis
;--------prodleva 750ms
mov R7,#255
djnz R7,$
mov R7,#255
djnz R7,$
mov R7,#240
djnz R7,$
;--------konec prodlevy
call reset
mov A,#0CCH
call zapis
mov A,#0BEH
call zapis
call cteni ;nizsi cast
mov 31H,A
call cteni ;vyssi cast
mov 30H,A
;prevod 2 bytu
mov R6,#4
mov A,30H
zase: rr A
djnz R6,zase
mov B,A
mov R6,#5
mov B,31H
zasej: rl A
djnz R6,zasej
orl A,B
;konecne cislo po prevodu je v A
call vypis
sjmp hlavni
;------------------------------konec hlavniho programu
;_____________________________________reset pulz
reset:
clr dalas
;----------------prodleva 480us
mov R7,#255
djnz R7,$
mov R7,#225
djnz R7,$
;----------------konec prodlevy
setb dalas
;----------------prodleva 70us
mov R7,#70
djnz R7,$
;----------------konec prodlevy
jnb dalas,ano
jmp reset
ano:
;----------------prodleva 410us
mov R7,#255
djnz R7,$
mov R7,#155
djnz R7,$
;----------------konec prodlevy
ret
;_______________________________________zapis
mov R6,#008H ;8x budu rotovat
zapis:
rrc A
jnc je
mov R7,#4
jmp neni
je:
mov R7,#48 ;prodleva 48us
neni:
clr dalas
djnz R7,$
setb dalas
;----------------prdleva 128us
mov R7,#128
djnz R7,$
;----------------konec prodlevy
djnz R6,zapis
;----------------300us prodleva
mov R7,#255
djnz R7,$
mov R7,#45
djnz R7,$
;----------------konec prodlevy
ret
;_____________________________________cteni
mov R6,#008H
cteni:
clr dalas
;--------------prodleva 3us
mov R7,#3
djnz R7,$
;--------------konec prodlevy
setb dalas
;--------------prodleva 18us
mov R7,#18
djnz R7,$
;--------------konec prodlevy
mov c,dalas
rrc A
;--------------prodleva 128us
mov R7,#128
djnz R7,$
djnz R6,cteni
;--------------prodleva 300us
mov R7,#255
djnz R7,$
mov R7,#45
djnz R7,$
;--------------konec prodlevy
ret
;_____________________________________vypis
vypis:
nop
mov B,#100
div AB
orl A,#11010000b ;stovky
mov P0,A
mov R7,#200
djnz R7,$
nop
mov A,#0
mov A,B ;nacist zbytek po deleni
mov B,#0
mov B,#10
div AB
orl A,#10110000b ;desitky
mov P0,A
mov R7,#200
djnz R7,$
mov A,#0
nop
mov A,B
orl A,#01110000b
mov P0,A
mov R7,#200
djnz R7,$ ;jednotky
ret
nop
end[/list]
Výpis z programu je zde:
[list=]; name teplomer
org 0
dalas bit P2.0
;-----------------------------hlavni program
hlavni:
call reset
mov A,#0CCh
call zapis
mov A,#044H
call zapis
;--------prodleva 750ms
mov R7,#255
djnz R7,$
mov R7,#255
djnz R7,$
mov R7,#240
djnz R7,$
;--------konec prodlevy
call reset
mov A,#0CCH
call zapis
mov A,#0BEH
call zapis
call cteni ;nizsi cast
mov 31H,A
call cteni ;vyssi cast
mov 30H,A
;prevod 2 bytu
mov R6,#4
mov A,30H
zase: rr A
djnz R6,zase
mov B,A
mov R6,#5
mov B,31H
zasej: rl A
djnz R6,zasej
orl A,B
;konecne cislo po prevodu je v A
call vypis
sjmp hlavni
;------------------------------konec hlavniho programu
;_____________________________________reset pulz
reset:
clr dalas
;----------------prodleva 480us
mov R7,#255
djnz R7,$
mov R7,#225
djnz R7,$
;----------------konec prodlevy
setb dalas
;----------------prodleva 70us
mov R7,#70
djnz R7,$
;----------------konec prodlevy
jnb dalas,ano
jmp reset
ano:
;----------------prodleva 410us
mov R7,#255
djnz R7,$
mov R7,#155
djnz R7,$
;----------------konec prodlevy
ret
;_______________________________________zapis
mov R6,#008H ;8x budu rotovat
zapis:
rrc A
jnc je
mov R7,#4
jmp neni
je:
mov R7,#48 ;prodleva 48us
neni:
clr dalas
djnz R7,$
setb dalas
;----------------prdleva 128us
mov R7,#128
djnz R7,$
;----------------konec prodlevy
djnz R6,zapis
;----------------300us prodleva
mov R7,#255
djnz R7,$
mov R7,#45
djnz R7,$
;----------------konec prodlevy
ret
;_____________________________________cteni
mov R6,#008H
cteni:
clr dalas
;--------------prodleva 3us
mov R7,#3
djnz R7,$
;--------------konec prodlevy
setb dalas
;--------------prodleva 18us
mov R7,#18
djnz R7,$
;--------------konec prodlevy
mov c,dalas
rrc A
;--------------prodleva 128us
mov R7,#128
djnz R7,$
djnz R6,cteni
;--------------prodleva 300us
mov R7,#255
djnz R7,$
mov R7,#45
djnz R7,$
;--------------konec prodlevy
ret
;_____________________________________vypis
vypis:
nop
mov B,#100
div AB
orl A,#11010000b ;stovky
mov P0,A
mov R7,#200
djnz R7,$
nop
mov A,#0
mov A,B ;nacist zbytek po deleni
mov B,#0
mov B,#10
div AB
orl A,#10110000b ;desitky
mov P0,A
mov R7,#200
djnz R7,$
mov A,#0
nop
mov A,B
orl A,#01110000b
mov P0,A
mov R7,#200
djnz R7,$ ;jednotky
ret
nop
end[/list]