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 

Sestavljanje prebranih cifer s tipkovnice

 
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
LoLek
Član
Član



Pridružen-a: Sre 25 Feb 2004 12:46
Prispevkov: 343
Aktiv.: 1.45

PrispevekObjavljeno: Čet Jan 19, 2006 5:38 pm    Naslov sporočila:  Sestavljanje prebranih cifer s tipkovnice Odgovori s citatom

Imam priključeno tipkovnico na PIC. S tipkovnice preberem cifro in jo zapišem na LCD, ko vtipkam drugo cifro LCD enostavno šifta in jo napiše za prejšnjo. Se pravi, če npr. vtipkam 1 2 3, dobim na LCD-ju noramlno izpisano 123 (sto triindvajset).
Problem pa se pojavi pri uporabi teh cifer za preračunavanje. Namreč te cifre bi moral sestaviti v 123 oz. v hex ekvivalent 7B. Tukaj pa nastopijo težave s katerimi se že cel dan ubadam.

Če kdo ve kako to sestaviti oz. pretvoriti v hex...

Programiram pa v ansi C-ju.

hvala Confused


Nazadnje urejal/a LoLek Čet Jan 19, 2006 7:09 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Djurodrljaca
Član
Član



Pridružen-a: Pet 19 Dec 2003 16:31
Prispevkov: 393
Aktiv.: 1.66
Kraj: Mengeš

PrispevekObjavljeno: Čet Jan 19, 2006 5:52 pm    Naslov sporočila:   Odgovori s citatom

Najprej bi to moral pretvoriti v binarno vrednost (stotice*100 + desetice*10 + enice), potem pa preko maske (& 00001111) in (& 11110000) dobiš spodnjo in zgornjo cifro v hex (od 0 do 15). Potem pa vrednosti večje od 9 pretvoriš v črke od A do F (npr. vrednost - 10 + 'A') ostale pa povečaš za '0'.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Čet Jan 19, 2006 5:52 pm    Naslov sporočila:   Odgovori s citatom

Ne vem sicer kako v C-ju V assemblerju bi napisal enostavno proceduro.
Cifre se začnejo (če pišem desetiško) 0=48,1=49 .... torej procedura bi od prejetega karakterja odštela 48. Če je rezultat v mejah 0-9 bi vrnila vrednost 0-9 sicer pritisnjena tipka ni numerična. Enoštevilčnih vrednosti sedaj ni problem sešteti. Če bodo večštevilčne pa bo potrebno napisati še kako proceduro.

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.62
Kraj: Trzic

PrispevekObjavljeno: Čet Jan 19, 2006 7:22 pm    Naslov sporočila:   Odgovori s citatom

Koda:

int16 PreberiStevilo()
{
  char buffer[5]=0;
  int index=0, n;
  int osnova;
  int16 stevilo=0;

  while (keyCode=PreberiTipko()!=13)
  {
     buffer[index++]=keyCode-'0';
  }
 
  if (!index) return 0;

  osnova=1;
  stevilo=0;
  for (n=index; n; n--)
  {
     stevilo += buffer[n-1]*osnova;
     osnova *= 10;
  }

  return stevilo;
}


edit: sem moral malce popraviti.
Tale procedura sprejme do 5 znakov in jih pretvori. Vpis se konča z enter


Nazadnje urejal/a NeoTO Čet Jan 19, 2006 7:31 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
LoLek
Član
Član



Pridružen-a: Sre 25 Feb 2004 12:46
Prispevkov: 343
Aktiv.: 1.45

PrispevekObjavljeno: Čet Jan 19, 2006 7:31 pm    Naslov sporočila:   Odgovori s citatom

Hvala Djurodrljaca za namig. Naredil sem sledeče: vhodne cifre sem vpisal v polja tipa char. Prvo polje sem pomnožil s 100, drugo z 10. Ta polja sem nato samo seštel.
Včasih imaš rešitev na dlani pa je ne vidiš. Potrebuješ samo majhen namig. Rolling Eyes
Najbolj me [cenzurirano] v C-ju, ker ne vem kakšne vrste podatkov se skrivajo pod določenimi tipi spremenljivk. Confused
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.95
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Čet Jan 19, 2006 7:32 pm    Naslov sporočila:   Odgovori s citatom

Če sem sam razumel ni to, ampak tisto kar sem jaz napisal. Tipkovnica namreč vrača ASCI vrednosti. Te lahko tudi direktno pošlješ na LCD. Če hočeš z njimi računati jih je pa treba pretvoriti. Tipkovnica namreč vrne recimo za pritisnjeno tipko "1" = 0x31 oz 49 desetiško. Z tem ne moreš računat dokler vrednost ne pretvoriš v dejansko vrednost. K sreči si asci znaki sledijo en za drugim... kot sem napisal v predhodnem sporočilu.
_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.62
Kraj: Trzic

PrispevekObjavljeno: Čet Jan 19, 2006 7:35 pm    Naslov sporočila:   Odgovori s citatom

LoLek: kaj pa če vneseš enomestno ali dvomestno cifro?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.57

PrispevekObjavljeno: Čet Jan 19, 2006 7:38 pm    Naslov sporočila:   Odgovori s citatom

Kot je napisal Silvo - ce dobis ASCII kodo, potem jo sicer lahko spravis v spremenljivko tipa char (ker je "char", en znak torej, velik en bajt), ampak to ne bo primerno za racunanje, saj koda stevilke (recimo nicle) ni 0x00, temvec 0x30 (ASCII tabela).

Ce torej dobis ASCII kode znakov 1, 2 in 3 (0x31. 0x32 in 0x33), ter jih pomnozis prvega s sto, drugega z deset in potem sestejes, bos dobil eno zmedo. Prepricaj se torej, da res dobis stevilske vrednosti (0 = 0x00, 1 = 0x01, itd).
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
LoLek
Član
Član



Pridružen-a: Sre 25 Feb 2004 12:46
Prispevkov: 343
Aktiv.: 1.45

PrispevekObjavljeno: Čet Jan 19, 2006 8:16 pm    Naslov sporočila:   Odgovori s citatom

Se opravičujem, ker na začetku nisem omenil, da je to navadna numerična tastatura. Jaz lovim samo signal je pritisnjena ali ni. Temu signalu pa jaz potem priredim kar hočem.
Saj zdaj sem problem rešil. Hvala vsem. Very Happy
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