Цитата(kolyan_olvs @ Mar 19 2007, 12:59)

Есть вопрос: как надо описать переменные Ri[], a, w в этом примере? как-то по особому, или просто
например: char Ri ?
//Здесь каждый городит по своему, я же в самом начале описал типы переменных так:
typedef unsigned char byte;
typedef unsigned int word;
//Затем все переменные определяю через эти самые типы, например:
byte a; word w; //temp
xdata byte Ri[16], Ro[60]; //Input and output array from RS-232
Цитата(kolyan_olvs @ Mar 19 2007, 12:59)

Еще вопрос - надо ли как-то настраивать карту памяти проца (имеется в виду настройки в Uvision)
диапазоны code, xdata, pdata, idata..
Думаю, не надо, достаточно явно по тексту программы описать переменные, где их нужно разместить. Для неявного определения места размещения переменных (если это необходимо вопреки задаваемому по умолчанию), нужно задать Memory model, например small (чтобы переменные, без дополнительного определения, размещались в data или же как-то иначе), это делается в опции Project->Options for Target.
//Ниже примеры размещения переменных:
code char* code Prog_ID = {__DATE__}; //Здесь для
code во Flash в виде ASCII-кода версия-дата программы
//Ro[0]=Prog_ID[4]; Ro[1]=Prog_ID[5]; //Data
//Ro[2]=Prog_ID[3];
//Ro[3]=Prog_ID[0]; Ro[4]=Prog_ID[1];Ro[5]=Prog_ID[2]; //Month
//Ro[6]=Prog_ID[6];
//Ro[7]=Prog_ID[7]; Ro[8]=Prog_ID[8]; Ro[9]=Prog_ID[9]; Ro[10]=Prog_ID[10]; //Year
//Все считывается в выходной массив Ro для последующей передачи через прерывания по RS-232
sbit S3 = P3^3; //Это биты S3, S4 порта Р3. в поле
sbitsbit S4 = P3^4; //
bdata Flags; //Это флажки-признаки в поле битов
bdata, сведенные к одному байту Flags
sbit MainLoop = Flags^0; //Flag for Main loop
sbit fPcmEth0 = Flags^1; //Flag PcmEth0(0-buffer EthPcm0, 1-buffer EthPcm1,)
sbit fPcmEth1 = Flags^2; //Flag PcmEth1
sbit fEthPcm = Flags^3; //Flag PcmEth(1-Run,0-Stop)
sbit fEthPcm0 = Flags^4; //Flag PcmEth0
sbit BackPressure = Flags^5; //BackPressure
sbit K_IND_b0 = Flags^6; //K_IND current
sbit K_IND_b1 = Flags^7; //K_IND previous
*((char pdata *)Rx)=*(pEthPcm++); //Это обращение к переферийному оборудованию
// в пространстве адресов
pdata, где константа Rx определена, например так:
#define Rx 0x00 //Rx for accesing for the RS Xilinx
idata byte Ar[32] //Это переменные в
idata, индексной области СОЗУ.
byte rs; //В области
dataxdata byte Ri[16], Ro[60]; //Block for RS-232 communication в
xdata (или большой внутренней памяти)
xdata byte RiT,RoT; //
word RsI, RsO, RsN; //
byte FlagTIMER2; //
Примеры иногда предпочтительней теории...(хотя опять же это спорно...). В этом плане удачно представлен материал в
http://www.onembedding.com/Цитата(kolyan_olvs @ Mar 19 2007, 12:59)

Ситуация у меня просто следущая: если просто в лоб создать проект и закопипастить выложенный здесь пример (ну с необходимыми добавками, конечно), то прога читает прекрасно, а вот стирать или писать не хотит...
????