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!
  • 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

    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??