Stránka 1 z 3

Proč to ukazuje "7<" ????

Napsal: 06 bře 2009, 17:43
od jirka89
Zdravím!
Zdravím! Napsal jsem si program, pro měření teploty DS18B20, ale místo toho, aby ukázal pokojovou teplotu, tak ukáže jenom "7<". Přitom ale měří! To jsem si ověřil. Jenom blbě zobrazuje! Tak kdyby jste byli tak hodní a pomohli se zobrazením. Dík moc

Napsal: 06 bře 2009, 17:51
od beagle
moc jsem ten program nestudoval ale dělam hodiny s ds1307 a taky to zobrazuji na displej 8x2 a tyky mi to dělalo a u mě to bylo tím, ze je to v HEX takzě 0-9 potom A-F musím přeskočit

Napsal: 06 bře 2009, 17:52
od jirka89
no teď nějak nechápu, jak to myslíš!

Napsal: 06 bře 2009, 17:57
od jirka89
NO v tom programu je cislo vydělné 10. Potom dostávám v A desítky a B jednotky. K nim přičtu hodnotu 30H, a dostávám číslo, které bych měl zobrazit nadisplay.

    mov A,teplota
    mov B,#10
    div AB ;deleni 10
    add A,#30H
    mov des,A
    mov A,B
    add A,#30H
    mov jedn,A

Napsal: 06 bře 2009, 18:09
od Andrea
Z nějakého důvodu máš v proměnné teplota číslo 127 (7Fh). Zobrazuješ ho totiž pozpátku, jednotky, desítky.

Napsal: 06 bře 2009, 19:04
od jirka89
Tak to vypadá na chybu v tom sloučení těch dvou bajtů! Ale nějak to tam nevidím!
[list=]
mov R7,#4
mov R6,#4
prevod:
mov A,bajt1
rotp: rrc A
djnz R7,rotp
anl A,#00001111b
mov B,A
mov A,bajt2
rotl: rl A
djnz R6,rotl
anl A,#01110000b
orl AB
mov teplota,A
    [/list]

    Napsal: 06 bře 2009, 19:21
    od jirka89
    Prvně ten DS18B20 pošle nižší část teploty a potom vyšší, že?????? Takže po nějakých rotacích a sloučení, musím v A dostat celočíselnou teplotu.

    Napsal: 06 bře 2009, 21:09
    od Andrea
    jirka89 píše:Prvně ten
    DS18B20 pošle nižší část teploty a
    potom vyšší, že?????? Takže po
    nějakých rotacích a sloučení,
    musím v A dostat celočíselnou
    teplotu.

    Nejdřív si zobraz (hexa) ty dva
    přijaté byty, jestli vůbec něco
    přijímáš.

    Napsal: 06 bře 2009, 21:40
    od Mendor
    beagle píše:moc jsem ten program nestudoval ale dělam hodiny s ds1307 a taky to zobrazuji na displej 8x2 a tyky mi to dělalo a u mě to bylo tím, ze je to v HEX takzě 0-9 potom A-F musím přeskočit


    Jeden o voze a druhý o koze.

    DS18B20 je teplotní čidlo a ne RTC.

    Napsal: 07 bře 2009, 18:01
    od jirka89
    Snažil jsem se zabrazit obsah těch dvou bajtů, ale nějak se mi to nedaří. Myslíte, že by jste mi mohli pomoct se zobrazením?? Dík moc

    Napsal: 07 bře 2009, 18:04
    od Andrea
    jirka89 píše:Snažil jsem se zabrazit obsah těch dvou bajtů, ale nějak se mi to nedaří. Myslíte, že by jste mi mohli pomoct se zobrazením?? Dík moc

    V čem je problém?

    Napsal: 07 bře 2009, 18:39
    od Mendor
    Jaké máš nastavené rozlišení teploty, 9, 10, 11 nebo 12 bit ?

    Napsal: 07 bře 2009, 18:40
    od jirka89
    No problém je, že HEXA může obsahovat i znaky. A já nevím jak je zobrazit. ČÍsla to je snadné, stačí přičíst 30H a je to! Jenomže když tam budu mít třeba 8A, tak jak tam dostanu to "A"???

    Napsal: 07 bře 2009, 18:47
    od Andrea
    jirka89 píše:No problém je, že HEXA může obsahovat i znaky. A já nevím jak je zobrazit. ČÍsla to je snadné, stačí přičíst 30H a je to! Jenomže když tam budu mít třeba 8A, tak jak tam dostanu to "A"???

    No když ta číslici bude větší než 9, tak místo '0' přičteš 'A'.

    Napsal: 07 bře 2009, 18:53
    od jirka89
    Blbý dotaz, ale to číslo musím rozbít, abych ho mohl zobrazit že? nejde nějak udělat, abych ho poslal najednou! (Celý "bajt")??? Aby mi zobrazil rovnou třeba "5D", že??