• 3 odgovora
  • 1.930 pregleda
Ubacivanje varijable u naredbu 12.01.2010. u 22:35 · pre 204 meseci #1
Ovako, zanima me da li postoji mogučnost da se u C-u nekako napravi sljedeće.

Znači imam beskonačnu while petlju, u njoj for petlju koja ide od 1 do 7 a može iči u nekom slučaju i puno dalje, sa korakom od 1.
U toj for petlji je neka naredba recimo konkretno u mojem slučaju PORTB.Bx = 1;

E mene zanima kako ja mogu mjenjati taj 'x' ovisno o iteraciji u petlji bez da upotrebljavam switch petlju za svaki slučaj jer dok se radi o velikom broju ponavljanja switch petlja postaje stvarno preduga a ja sam ograničen malom ROM memorijom mikro kontrolera pa trebam efikasniji kod.

Ako nemože tako kako sam si ja zamislio da li postoji možda neki drugi način? Uglavnom bitno mi je da je kod što manji.
Potpis
Windows 95 /Win’ dz/: n., 32-bit extensions and a graphical shell for a 16-bit patch to an 8-bit operating system
originally coded for a 4-bit microprocessor, written by a 2-bit company, that can’t stand 1 bit of competition.
Re: Ubacivanje varijable u naredbu 13.01.2010. u 09:07 · pre 204 meseci #2
Mnogo zavisi od toga kako izgleda "funkcija x". Jedno rešenje je if-else-if koji bi bio pametniji od switcha. Napiši objašnjenje šta x treba da bude u svakom od slučajeva.
Re: Ubacivanje varijable u naredbu 13.01.2010. u 14:13 · pre 204 meseci #3
Evo otprilike ovako

Code:

while (1)
{
for ( int i = 0; i <= 7; i++)
{
 PORTB.Bi = 1; // inače bi to pisao bez for petlje i pisao bi za svaki slučaj PORTB.B1 = 1 pa onda PORTB.B2 = 1 i tako do PORTB.B=7
}
}


Znači trebalo bi se ovisno o 'i' mjenjati i bit kojemu pristupam tj. PORTB.B(i) tj. u prvom slučaju bi to bilo PORTB.B0, u drugom PORTB.B1 i tako dalje pa sve do PORTB.B7. Naravno da to mogu rješiti sa IFovima ali sam jako ograničen memorijom a trebam još napraviti podosta toga i neče mi stati u ROM ako ču se razbacivati tako sa memorijom.

Potpis
Windows 95 /Win’ dz/: n., 32-bit extensions and a graphical shell for a 16-bit patch to an 8-bit operating system
originally coded for a 4-bit microprocessor, written by a 2-bit company, that can’t stand 1 bit of competition.
Re: Ubacivanje varijable u naredbu 13.01.2010. u 14:59 · pre 204 meseci #4
Ako je samo to onda je prosto. Treba ti samo niz pointera na članice (pointer to member variables). To su u suštini ofseti unutar strukture. Ako je data struktura

Code:

struct PORT
{
  int B1;
  int B2;
};

onda treba da napraviš pomoćni niz

Code:

int PORT::* niz[] = {&PORT::B1, &PORT::B2};

a onda članovima nekog objekta port tipa PORT sada možeš da pristupaš i sa port.*niz[x], gde je x jednako 0 ili 1. Na primer

Code:

for (int i = 0; i < 2; ++i)
  port.*niz[i] = 5 + i;

Po izvršenju ovog koda port.B1 će biti 5 a port.B2 će biti 6. Preduslov da ovo može da se kompajlira je da su B1 i B2 istog tipa (int).
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme