www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

PIC in primerjava podatkov

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
twom
Član
Član



Pridružen-a: Ned 26 Okt 2003 0:37
Prispevkov: 986
Aktiv.: 4.16
Kraj: Ljubljana

PrispevekObjavljeno: Sob Feb 07, 2004 4:29 pm    Naslov sporočila:  PIC in primerjava podatkov Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Strela
Član
Član



Pridružen-a: Pon 24 Nov 2003 13:33
Prispevkov: 22
Aktiv.: 0.09

PrispevekObjavljeno: Ned Feb 08, 2004 8:21 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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