codevision - problem s pointery

GT5 gt5@seznam.cz
Úterý Červenec 4 18:44:06 CEST 2006


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

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

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

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

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


LP.




Další informace o konferenci Hw-list