codevision - problem s pointery

Aleš Novák ales.novak@t-email.cz
Úterý Červenec 4 19:26:10 CEST 2006


V CodeVision nedelam ale neslo by to takhle?

  horni8 = adresa16/256;
  dolni8 = adresa16%256;

  Novalex

G> Zdravim,
G> nevim jestli se to nekomu stalo, ale mam docela kruty problem.
G> Pravdepodobne BUG prekladace a premyslim jak ho obejit.
G> Pouzivam CodeVision 1.23.6a pro AVR. V programu jsem potreboval vyresit
G> rozklad 16bit adresy (unsigned int) na  dolni a horni byte (unsigned char).
G> Zkousel jsem to mnoha zpusoby a porad to dela kraviny. Uvedu priklad
G> reseni pres pointery.

G> unsigned int adresa16;
G> unsigned char *horni8 , *dolni8;
G> adresa = 0x01FA;  // napriklad
G> dolni8 = &adresa;
G> hodni8 = &adresa + 1; //nasledujici byte o pozici vedle.
G> nyni by promenne
G> // *dolni8 a *horni8 mely obsahovat 0x01 a 0xFA.
G> // jenze neobsahuji :(

G> jiny postup : // opet nefunkcni
G> unsigned int adresa16;
G> unsigned char horni8 , dolni8;
G> adresa = 0x01FA;  // napriklad
G> dolni8 = (unsigned char)(0x00FF & adresa);
G> horni8 = (unsigned char)(adresa >> 8);  //defacto vydelime 256

G> Prosil bych o radu "jak" udelat funkce, ktere by vracely horni a dolni
G> byte z (unsigned int).
G> Nejhorsi je na tom to ze syntaxe je spravna a treba v DOS TurboC v
G> pohode funguje, HitechC pro PIC to taky pobral

G> Jeste doplnim maly dodatek. Prekladac drzi globalni promenne v SRAM,
G> lokalne deklarovane jsou docasne umisteny v registrech R.


G> LP.






Další informace o konferenci Hw-list