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

Pridružen-a: Pon 05 Jul 2004 12:17 Prispevkov: 129 Aktiv.: 0.54 Kraj: ljubljana
|
Objavljeno: Tor Maj 30, 2006 10:45 pm Naslov sporočila: Pretvorba spremenlivke v hex verdnost. |
|
|
Dve spremenlivki moram spremeniti v hex vrednost zato sem napisal sledeč program:
Koda: |
[b]Dim C As String * 10 , A As String * 11[/b]
A = Hex(minute)
P1 = A
C = Hex(ure)
P3 = C |
In Bascom "normalno" izpiše :Out of internal memory.
Kako bi pretvarjal spremenlivki v hex drugače?
P.S.:Gre za uro k čas kaže binarno.
|
|
Nazaj na vrh |
|
 |
clownfish Član

Pridružen-a: Pet 05 Avg 2005 13:05 Prispevkov: 765 Aktiv.: 3.23 Kraj: Povir / Ljubljana
|
Objavljeno: Tor Maj 30, 2006 11:34 pm Naslov sporočila: Re: Pretvorba spremenlivke v hex verdnost. |
|
|
fbifbi je napisal/a: |
Kako bi pretvarjal spremenlivki v hex drugače? |
tukaj vržeš noter var1 kot spremenljivko char 0..15 in ven dobiš v var2 Ascii char znak 0..9, A..F
switch (var1)
{
case 10:
{
var2='A';
}
break;
case 11:
{
var2='B';
}
break;
case 12:
{
var2='C';
}
break;
case 13:
{
var2='D';
}
break;
case 14:
{
var2='E';
}
break;
case 15:
{
var2='F';
}
break;
default:
{
var2=var1+'0';
}
break;
|
|
Nazaj na vrh |
|
 |
. Član

Pridružen-a: Pon 23 Avg 2004 16:16 Prispevkov: 16777190 Aktiv.: 70831.19
|
Objavljeno: Sre Maj 31, 2006 7:54 am Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika.
|
|
Nazaj na vrh |
|
 |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.71 Kraj: [color=zelena]Ljubljana[/color]
|
Objavljeno: Sre Maj 31, 2006 9:50 am Naslov sporočila: |
|
|
Ne uporabljam tega basica, zato bolj ugibam. Napaka je verjetno v eni od teh vrstic. Vrzi ven eno po eno in glej kdaj neha javljati napako.
A = Hex(minute)
P1 = A
Deklarirana sta A in C. Deklarirani nisto ure, minute, P1 in P3.
Z drugimi besedami: če P1 ni String * 11, bo crknilo. A (Dim A As String * 11) vtakneš v P1 (nedeklariran) bo crknilo.
Mešanje tipov je lahko nevarno, zato pascal to prepoveduje. Deklarirati je potrebno vse speremenljivke in konec.
Večina basicov res dovoljuje svobodne deklaracije in uporabo... Zgoraj omenjeni program crkne. Napako vidim v mešanju tipov. Mogoče sem uganil narobe.
Jur
Nazadnje urejal/a jur Sre Maj 31, 2006 10:07 am; skupaj popravljeno 2 krat |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Sre Maj 31, 2006 10:04 am Naslov sporočila: |
|
|
jur, v Basicu ni potrebno najavljati spremenljivk! Pač ko jo prvič uporabiš, ji dodeli tip in vrednost. Je pa res, kar si rekel, da ne smeš mešati tipov.
|
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3358 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Sre Maj 31, 2006 11:08 am Naslov sporočila: |
|
|
Citiram: |
Dve spremenlivki moram spremeniti v hex vrednost zato sem napisal sledeč program:
Koda:
Dim C As String * 10 , A As String * 11
A = Hex(minute)
P1 = A
C = Hex(ure)
P3 = C
In Bascom "normalno" izpiše :Out of internal memory.
Kako bi pretvarjal spremenlivki v hex drugače?
P.S.:Gre za uro k čas kaže binarno. |
Pretvorbo si naredil pravilno, ne moreš pa tako predelano vsebino enostavno dati na porte, ne naredi nič pametnega. Tako vsebino lahko z
Print A
daš na terminal ali z
LCD A
daš na LCD
Če imaš na portih led diode, ti bodo le te povedale kaj, če boš dal direktno vsebino na porte recimo
P1 = minute
potem ti bodo diode svetile, kot so interni biti v spremenljivki minute. Hm, seveda če imaš diode direktno na portu, potem bodo gorele tiste diode, katerih odgovarjajoči biti so na 0 in ne na 1.
MMGD: Izogibaj sem poimenovanja spremenljivk z A, B, C, pride lahko do kolizije z rezerviranimi imeni.
_________________ Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart |
|
Nazaj na vrh |
|
 |
CarpeDiem Član


Pridružen-a: Pon 16 Feb 2004 17:24 Prispevkov: 333 Aktiv.: 1.41 Kraj: Vrhnika
|
Objavljeno: Sre Maj 31, 2006 3:49 pm Naslov sporočila: |
|
|
Citiram: |
Dve spremenlivki moram spremeniti v hex vrednost zato sem napisal sledeč program |
Tole je pa sumljivo. Saj je hex, dec, bin, oct, ... samo oblika zapisa ene in iste stvari. Ali boš vrednost izpisoval na LCD? Še posebaj je sumljivo to, da bi ti to rad izpisoval na port.
|
|
Nazaj na vrh |
|
 |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.71 Kraj: [color=zelena]Ljubljana[/color]
|
Objavljeno: Sre Maj 31, 2006 3:56 pm Naslov sporočila: |
|
|
Problem je mogoče v tem, ker je rezultat hex funkcije več bytov. Če je vrednost stringa (rezultat hex funkcije) na primer 1A, to je dejansko"1A" (string dolg dva bajta). Kaj se zgodi, če na port pošlješ vrednost 1A? Ali bo za mikrosekundo na portu vrednost 0x1 in potem vrednost 0xA (dokler je kasneje ne povoziš), ali bo basic javil napako?
Jur
|
|
Nazaj na vrh |
|
 |
fbifbi Član

Pridružen-a: Pon 05 Jul 2004 12:17 Prispevkov: 129 Aktiv.: 0.54 Kraj: ljubljana
|
Objavljeno: Sre Maj 31, 2006 9:55 pm Naslov sporočila: |
|
|
Izdelujem uro ki čas kaže binarno. To pomeni, da se mora spremenlivki ure in minute pretvorti v binarno ali hex vrednost in se izpisati na P1(minute) in P3(ure).
BASCOM javi napako zaradi Dim C As String * 10 , A As String * 11
napak pa se glasi:Out of internal memory
Kar bi lahko pomenilo da se nesem uporabljati string več kot enkrat.
Citiram: |
Deklarirana sta A in C. Deklarirani nisto ure, minute, P1 in P3.
|
V pravem programu so deklarirane v tem sem pozabil dopisati.
Bistvo je da je nekaj narobe pri pretvorbi obeh sprmenlivk v hex.
P1 in P3 pa so porti.
P.S.: V prvem postu sem pozabil napisati tip mikrokontroleja, ki AT89C2051.
P.P.S.:Če pretvarjam samo eno spremenlivko zadeva deluje čim dodam še drugo pa neha delovati.
|
|
Nazaj na vrh |
|
 |
. Član

Pridružen-a: Pon 23 Avg 2004 16:16 Prispevkov: 16777190 Aktiv.: 70831.19
|
Objavljeno: Sre Maj 31, 2006 10:01 pm Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika.
Opis: |
|
Velikost datoteke: |
163.37 KB |
Pogledana: |
29 krat |

|
|
|
Nazaj na vrh |
|
 |
fbifbi Član

Pridružen-a: Pon 05 Jul 2004 12:17 Prispevkov: 129 Aktiv.: 0.54 Kraj: ljubljana
|
Objavljeno: Sre Maj 31, 2006 10:20 pm Naslov sporočila: |
|
|
Gradim uro ki dobesedno kaže čas binarno!
Štiri LED diode ponazarjajo ure ostalih 6 pa minute.
Prikaz:
0001.... ura 1
000001 ... in ena minuta
000010... dve minuti
0010 ... ura 2
.
.
.
Opis: |
|
Velikost datoteke: |
17 KB |
Pogledana: |
7710 krat |

|
|
|
Nazaj na vrh |
|
 |
. Član

Pridružen-a: Pon 23 Avg 2004 16:16 Prispevkov: 16777190 Aktiv.: 70831.19
|
Objavljeno: Sre Maj 31, 2006 10:25 pm Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika.
|
|
Nazaj na vrh |
|
 |
fbifbi Član

Pridružen-a: Pon 05 Jul 2004 12:17 Prispevkov: 129 Aktiv.: 0.54 Kraj: ljubljana
|
Objavljeno: Sre Maj 31, 2006 10:28 pm Naslov sporočila: |
|
|
Tako uro sem nekje videl pa jo poskušam naredti.
Pa se mi je ustavilo pri pretvorbi spremenlivke.
|
|
Nazaj na vrh |
|
 |
. Član

Pridružen-a: Ned 19 Sep 2004 22:04 Prispevkov: 16777193 Aktiv.: 70831.20
|
Objavljeno: Sre Maj 31, 2006 10:30 pm Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika.
|
|
Nazaj na vrh |
|
 |
Slemi Član

Pridružen-a: Pet 29 Okt 2004 13:29 Prispevkov: 386 Aktiv.: 1.63 Kraj: Hrastnik
|
Objavljeno: Sre Maj 31, 2006 11:23 pm Naslov sporočila: |
|
|
Če prav razumem, ti rabiš samo spodnje 4 oz. 6 bitov binarnega podatka prikazati na LED? Če je tako potem samo napiši:
PORT1 = minute & 63
PORT3 = ure & 15
To ti odbije stran zgornje 2 oz. 4 bite podatkov.
Lp
_________________ slemi.info - en
slemi.si - slo |
|
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
|