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