DTMF pomoci PIC16F84

Ing. Jiří Vojtek j_vojtek
Středa Březen 17 14:32:30 CET 2004


> > LM> omlouvam se za svoji neznalost, ale zatim mi to Cecko nejak nejde.
> > LM> Potrebuji k jedne promenne pristupovat ruznym zpusobem,
> > LM> konkretne pole CHAR, a potrebuji z neho vybrat jednu polozku jako
> > LM> INT (tedy dva po sobe jdouci znaky).
> >
> > LM> V Cecku jsem zatim objevil dve moznosti
> > LM> 1. pres ukazatele, ovsem vysledny kod v C51 je neefektivni
> > LM> 2. Vytvorit UNION, ovsem kdyz potrebuji k tomu bufferu pristupovat
> > LM> pokazde jinak, vychazi to velmi slozite.
> >
> > A co to udelat obracene, pole intu a pokud chci char, tak vezmu
> > horni/dolni bajt, C51 to udela celkem prefikane, kdyz dam i/256 a
> > i%256 (viz. pripadny listing :-) )
> >
>
> Pokud to ma byt v C51, tak proc nepouzit :
>
> int    b[15] _at_ 0xXXXX;
> char c[30] _at_ 0xXXXX;
>
> ma to nevyhodu, ze se nedostanete ale na int zacinajici na lichem indexu
>
> MK
>

Kdyz uz toto, tak pak se to da napsat:
union {
  int b[15]
  char c[30];
  struct {
    char blb1;
    int d[14];
    char blb2;
  } shifted;
} moje_promenna;

Pak ji mohu pouzivat:
  moje_promenna.b[index]
  moje_promenna.c[index]
  moje_promenna.shifted.d[index]

Hynek Sladky






Další informace o konferenci Hw-list