Stránka 1 z 1

DS18B20?? Kde může být chbya?

Napsal: 25 úno 2009, 18:45
od jirka89
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]

Napsal: 25 úno 2009, 19:12
od Andrea
jirka89 píše:
;--------prodleva 750ms
mov R7,#255
djnz R7,$
mov R7,#255
djnz R7,$
mov R7,#240
djnz R7,$
;--------konec prodlevy

Tohle není 750ms ale 750us, tak rychle to neměří.

Napsal: 25 úno 2009, 19:20
od jirka89
hergot tak dlouho do toho tlemím a nevšimnu si toho!! Zkusím to předělat! Dík moc! ;-) Povím jak to dopadlo!

Napsal: 25 úno 2009, 19:26
od Bernard
ret
;_______________________________________zapis
mov R6,#008H ;8x budu rotovat
zapis:


Není mi jasné, jak se ta instrukce mov dostane k slovu.

Napsal: 25 úno 2009, 20:14
od jirka89
Jaj! Tak toto je teda pěkná chyba! Dík moc!! hned ji opravím!

Napsal: 26 úno 2009, 12:15
od bohous1
stahni si pekne ladici prostredi pro 51' z analog.com. nazev pgm byl Analog Devices 812 Simulator (adsim nebo tak nejak). Oficialne je to pro jejich soucastky ale ty maji jadro 51cky. zlata to vec a zadara. snad to tam jeste bude.