Založen: Dec 26, 2004 Příspěvky: 1426 Bydliště: Košice - okolie
Zaslal: ne duben 01 2007, 14:30 Předmět: A/D pic a LED display
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
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.
Založen: Nov 21, 2005 Příspěvky: 524 Bydliště: Bratislava
Zaslal: po duben 02 2007, 12:10 Předmět:
Čí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!
Založen: Dec 26, 2004 Příspěvky: 1426 Bydliště: Košice - okolie
Zaslal: po duben 02 2007, 19:52 Předmět:
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 dakujem za rady
Založen: Nov 21, 2005 Příspěvky: 524 Bydliště: Bratislava
Zaslal: út duben 03 2007, 10:01 Předmět:
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
Založen: Dec 26, 2004 Příspěvky: 1426 Bydliště: Košice - okolie
Zaslal: út duben 03 2007, 14:36 Předmět:
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
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!
Založen: Nov 21, 2005 Příspěvky: 524 Bydliště: Bratislava
Zaslal: st duben 04 2007, 7:10 Předmět:
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.
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!
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
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.