Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

A/D pic a LED display

 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
mikollar



Založen: Dec 26, 2004
Příspěvky: 1426
Bydliště: Košice - okolie

PříspěvekZaslal: ne duben 01 2007, 14:30    Předmět: A/D pic a LED display Citovat

zdravim, riesim takyto problem, ako zobrazit hodnotu z registra ADRESL alebo ADRESH na 7segmentovy LED displej? jedine co ma napadlo je

MOVF ADRESL,W
ADDWF PCL,F

GOTO JEDEN
GOTO DVA
.
.
.
GOTO STO

v tychto skokoch JEDEN az STO (to je len priklad) by boli hodnoty ktore by rozsvecovali jednotlive segmenty, ale pripada mi to velmi zlozite vypisat 255 moznosti hodnot po A/D prevode a potom kazdej jednej prisudit spravne segmenty . Njede to nejak jednoduchsie? Na nete som nasiel zapojenia len s LCD a tam sa ta hodnota po A/D prevode posielala priamo na displej co pri LED displeji nieje mozne

dakujem
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
anonym






PříspěvekZaslal: ne duben 01 2007, 16:27    Předmět: Citovat

citace:
LCD a tam sa ta hodnota po A/D prevode posielala priamo na displej co pri LED displeji nieje mozne

Po převodu je v registru binární číslo 0-255 a to nejde poslat ani na LED ani LCD displej. Nejprve musíš údaj rozdělit/převést na jednotlivé číslice (hexa nebo dekadické) a teprve potom můžeš zobrazovat. Přiřadit číslicím 0-9 nebo 0-F rozsvícené segmenty pak už není tak těžké. Ta konverze pro LCD nebo LED je až na konečné detaily stejná. Musí toho být plný web. Stačí otevřít oči.
Návrat nahoru
ViPali



Založen: Nov 21, 2005
Příspěvky: 524
Bydliště: Bratislava

PříspěvekZaslal: po duben 02 2007, 12:10    Předmět: Citovat

Číslo z registrov musíš previesť na dekdický tvar z 3FF na 1023, to uložíš do štyroch registrov, a potom zobrazuješ každý samostatne (zhruba tak ako si to popísal).
Miesto 100 odskokov budeš mať len štyri, pričom zobrazovaný údaj vybereš z tabuľky 1z10.

_________________
Ako elektrikár sa cítim slobodne.
Môžem hovoriť do vedenia!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mikollar



Založen: Dec 26, 2004
Příspěvky: 1426
Bydliště: Košice - okolie

PříspěvekZaslal: po duben 02 2007, 19:52    Předmět: Citovat

hmm len ako to spravit ten prevod? skusam to uz 4 den ale nedari sa mi pohnut s tym, na nete som skusil znova pohladat ale nic som nenasiel Embarassed dakujem za rady
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nop
Neregistrovaný





PříspěvekZaslal: po duben 02 2007, 21:21    Předmět: re: Citovat

pár příkladů je zde
http://www.piclist.com/techref/microchip/math/index.htm
odkaz CONVERSIONS
Návrat nahoru
anonym






PříspěvekZaslal: po duben 02 2007, 21:48    Předmět: Citovat

http://www.cmail.cz/doveda/ .... hodiny s termostatem
Návrat nahoru
ViPali



Založen: Nov 21, 2005
Příspěvky: 524
Bydliště: Bratislava

PříspěvekZaslal: út duben 03 2007, 10:01    Předmět: Citovat

vybral som rutinu z jedneho staršieho programu, preistotu to otestuj simulátorom.

kód:

; Dekadicka korekcia z BCD (10bit) na DEC (1023)                                                          *
; vst;***********************************************************************
up: termv                                                                                                                       *
; vystup: term01, term1, term10, term100                                                                           *
;***********************************************************************
   movf    termv,0   ; meranu teplotu do w /uz tam je z predchadzajuceho/
   movwf    r1    ; a potom do r1
   bcf    status,C_
dc
   movlw    0x0a    ; 10 do W a ide sa robit prevod na 10
dc1
   subwf    r1,1    ; od r1 odpocita 10
     btfss    status,C_    ; ak presiel cez nulu
    goto    dc11    ; dalsi register (r2)
    incf    r2,1    ; inak zvacsit r2 o 1
    goto    dc1    ; a opakovat
dc10
   incf   r2,1   ; inkr. r2 po uprave ADRESH
   goto   dc1   ; a pokracovat v prepocte
dc11
    movlw    0xff    ; 255 do w
    addwf    r1,1    ; pripocitat k r1
    decf    adresh,1    ; dekr. horny Byte AD
    btfsc    status,C_    ; ak presiel cez nulu
    goto    dc10    ; pokracovat
    subwf    r1,1    ; 255 odpocitat od r1
    movlw    0x0a    ; 10 do W
    addwf    r1,1    ; presiel cez nulu tak pripocitat 10 spat
dc2
    subwf    r2,1    ; a 10 odpocitat od r2
    btfss    status,C_    ; ak presiel cez nulu
    goto    dc21    ; dalsi register
    incf    r3,1   ; inak incrementovat r3
    goto    dc2    ; a opakovat
dc21
    addwf    r2,1    ; ked presiel cez nulu pripocitat 10 spat
dc3
    subwf    r3,1   ; a 10 odpocitat od r3
    btfss    status,C_    ; ak presiel cez nulu
    goto    dc31    ; dalsi register
    incf    r4,1    ; inak incrementovat r4
    goto    dc3    ; a opakovat
dc31
    addwf    r3,1    ; ked presiel cez nulu pripocitat 10 spat
    return       ; a navrat

DISPL
dc22
    movf    r1,0    ;
    movwf    term01    ; term01 desatiny teploty
    movlw    0x10
    addwf    term01,1
    movf    r2,0
    movwf    term1    ; term1 jednotky teploty
    movlw    0x20
    addwf    term1,1
    movf    r3,0
    movwf    term10    ; term10 desiatky teploty
    movlw    0x40
    addwf    term10,1
    movf    r4,0
    movwf    term100    ; term100 stovky teploty
    movlw    0x80
    addwf    term100,1
    clrf r1
    clrf r2
    clrf r3
    clrf r4
    return

_________________
Ako elektrikár sa cítim slobodne.
Môžem hovoriť do vedenia!


Naposledy upravil ViPali dne st duben 04 2007, 6:39, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mikollar



Založen: Dec 26, 2004
Příspěvky: 1426
Bydliště: Košice - okolie

PříspěvekZaslal: út duben 03 2007, 13:25    Předmět: Citovat

dakujeeem, uf tak nad toto si budem musiet sadnut a pochopit to, zatial to idem odskusat v simulatore
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mikollar



Založen: Dec 26, 2004
Příspěvky: 1426
Bydliště: Košice - okolie

PříspěvekZaslal: út duben 03 2007, 14:36    Předmět: Citovat

cumim cumim na to a skusam to rozchodit ale beznadejne, pozeral som aj tie odkazy a tak isto som jelen z toho.Co mam ukladat do registra "termv"?
A este mi nieje jasne ze ako dekodujem hodnotu z ADRESL? alebo ADRESL ma byt v termv? ja som fakt z toho jelen Sad
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
anonym






PříspěvekZaslal: út duben 03 2007, 15:27    Předmět: Citovat

Stáhni si APNote http://ww1.microchip.com/downloads/en/AppNotes/00526e.pdf
Tam je stručně popsán algoritmus binary to BCD konverze a v příloze H je i program.
Návrat nahoru
anonym






PříspěvekZaslal: út duben 03 2007, 15:47    Předmět: Citovat

kód:
vybral som rutinu z jedneho staršieho programu, preistotu to otestuj simulátorom.
;*****************************************************************************
; Dekadicka korekcia z BCD (10bit) na DEC (1023) *
; vstup: termv *
; vystup: term01, term1, term10, term100 *
;*****************************************************************************

Nehodlám kritizovat vlastní algoritmus, ale minimálně mi nějak nesedí deklarované vlastnosti a parametry. Vstupní parametr je 8bit a konverze se provádí na 4xBCD? Trochu podivné dr. Watson!
Návrat nahoru
mikollar



Založen: Dec 26, 2004
Příspěvky: 1426
Bydliště: Košice - okolie

PříspěvekZaslal: út duben 03 2007, 18:19    Předmět: Citovat

je to 10 bit ak som to dobre pochopil lebo v tom programe je aj ADRESH kde su zvysne 2 bity po A/D prevode + ADRESL = 10bit

Idem to prebehnut vsetko este raz snad to pochopim
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mikollar



Založen: Dec 26, 2004
Příspěvky: 1426
Bydliště: Košice - okolie

PříspěvekZaslal: út duben 03 2007, 18:51    Předmět: Citovat

trocha som pokrocil, jednie co sa mi podarilo je ze term01 sa meni podla A/D prevodu ale term1 a term100 si stale sakcu ako chcu a term10 sa nemeni
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
ViPali



Založen: Nov 21, 2005
Příspěvky: 524
Bydliště: Bratislava

PříspěvekZaslal: st duben 04 2007, 7:10    Předmět: Citovat

Mám problém s PC, preto trpezlivosť, nemôžem reagovať ihneď.

Existuje viac (ja poznám štyri) spôsobov prevodu BCD na DEC (to len pre tých čo miesto pomoci rozhadzujú perly)

Ak riešime problem AD prevodníka, tak vstupom bude určite hodnota z AD prevodníka. Asi tam niet o čom špekulovať.
Ten kod je asi 5 rokov starý a mám ho zachovaný v PC s koncovkou _1, takže za ním určite existovalo niekoľko ďalších úprav. Doplnil som tam riadky dc10. Skontroluj ako pracuje CARRY C_ bit, s tým nie som si istý.

Filozofia:
Predstav si, že AD načítal hodnotu 755d, čo je 2F3h. V registroch A..H bude 0x02 a v A..L bude 0xF3
Hodnotu 0xF3 = 243d zapíšeš do r1, od r1 potom odpočítavaš 10 a pri každom odpočítaní pripočítaš do r2 1.
Ak sa to zopakuje 24 krát, bude r1 = 3 a r2 = 24. Pri ďalšom odpočítaní bude r1 záporné, čo je podmienka na skok, predtým ale musí byť k r1 pripočítané 10 aby v r1 bol 3 (nie -7).
Následne poskočíš na r2, od ktorého odpočítaš 10 (2x), v r2 zostane 4 a v r3 bude 2.
Po skončení bude v regirtroch r3,r2,r1 == 2,4,3.

Pretože, ale ty máš 10bitov, tak v momente, keď sa r1 dopočíta do nuly, pripočíta sa k r1 255 a ADRESH sa dekrementuje, To sa opakuje max. 3x a následne sa rieši r2. To ti pozmení hodnoty v registroch,
takže v závere by si mal mať v r4,r3,r2,r1 == 0,7,5,5 .

Je to náročné na čas, ale ak procesor celý deň nič nerobí, tak aspon chvíľu nech počíta. Smile
Rýchlejšie algoritmy sú cez tabuľky, alebo výpočtom pomocou C, DC.

A na doplnenie, výstup potom išiel na dekoder BCD/7seg. takže výstupný byte bol v tvare 0001 čččč, 0010 čččč, 0100 čččč, 1000 čččč.

_________________
Ako elektrikár sa cítim slobodne.
Môžem hovoriť do vedenia!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mikollar



Založen: Dec 26, 2004
Příspěvky: 1426
Bydliště: Košice - okolie

PříspěvekZaslal: st duben 04 2007, 14:36    Předmět: Citovat

dikes, teoriu som uz pochopil Smile , C je pri prechode cez 255 =1 alebo 0? lebo v tom programe sa stale zamotam tak ze chodim dookola
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.15 sekund