 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
twom Član


Pridružen-a: Ned 26 Okt 2003 0:37 Prispevkov: 986 Aktiv.: 4.16 Kraj: Ljubljana
|
Objavljeno: Sob Feb 07, 2004 4:29 pm Naslov sporočila: PIC in primerjava podatkov |
|
|
Microchipov Application Note TB054 razlaga kako učinkovito sprejeti podatke (Manchester encoding).
Ali ima kdo nasvet ali AN za primerjavo sprejetega podatka s tabelo (da veš kateri znak si sprejel in da narediš pripadajočo akcijo)?
Če je podatek dolg 1 byte še gre, kaj pa če je dolg 3 byte (npr.: koda daljinca)?
Lp, Peter
P.S. po microchipu sem že brskal, pa nič uporabnega našel |
|
Nazaj na vrh |
|
 |
Strela Član

Pridružen-a: Pon 24 Nov 2003 13:33 Prispevkov: 22 Aktiv.: 0.09
|
Objavljeno: Ned Feb 08, 2004 8:21 pm Naslov sporočila: |
|
|
Pozdravljen!
Primerjanje 3 bajtov lahko izvedeš s 3-bajtnim odštevanjem, vendar je tako dobljen program precej dolg in ne preveč učinkovit. Morda ti bo pomagala tale domislica: najprej primerjaj 1. bajt z njegovimi možnimi vrednostmi. Če se ta ujema s katero izmed možnih vrednosti, skoči v podprogram, ki preverja 2. bajt (vsaka možna vrednost 1. bajta ima svoj podprogram). V tem podprogramu preveri, če se 2. bajt ujema s katero izmed možnih vrednosti (te možne vrednosti pa so spet odvisne tudi od vrednosti 1. bajta). Tukaj spet skočiš ob ujemanju v tretji podprogram, ki preveri še zadnji bajt. Tako se ti nabere kar nekaj podprogramov (kolikor je različnih kod), vendar je koda bolj učinkovita. Ker predpostavljam, da programiraš v asemblerju (če bi npr. v C-ju, bi uporabil if ali pa switch stavek), ti predlagam še potek primerjanja 1 bajta:
movlw vrednost_za_primerjavo_1
subwf register_prvega_bajta,w
btfsc STATUS,Z
goto zadetek1
movlw vrednost_za_primerjavo_2
subwf register_prvega_bajta,w
btfsc STATUS,Z
goto zadetek2
...
Upam, da ti bo omenjeni del programa pomagal (nisem ga nikoli preizkusil, zaenkrat je le na papirju). Instrukcijo goto sem uporabil namesto call zato, ker bi se po koncu podprograma izvajanje nadaljevalo za call in bi program brez potrebe še naprej testiral bajte. Morda obstaja še kakšen boljši način, a trenutno se ga ne spomnim.
Lp,
Jernej |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|