Přepis kódu CodeVision -> Atmel Studio 6

Ahoj, potřebuju nutně poradit, potřebuju rozchodit grafický LCD, ale program, který sem našel je psán v CodeVisionuAVR a Atmel Studio 6.0, který používám ho díky částečné syntaktické nekompatibilitě nezvládne zkompilovat bez chyb. Můžete mi prosím poradit jak kód dopravit? Částečně už sem ho předělal, ale pořád mi hlásí chyby a nevím si už rady.

main - codepad.org/LzE6rLHB, hlavní soubor, zde se mu nelíbí #pragma used+ jinak asi ok
lbr glcd - codepad.org/qfmbHq7M, knihovna příkazů ovládání lcd, zde asi 50x Error expected ‘;’ before numeric constant, přitom se mi nezdá, že by něco chybělo, ale zdá se mi, že definice maker pinů asi nebude správná
#define E_DELAY 3
#define DATAPORT PORTA
#define DATADDR DDRA
#define DATAPIN PINA
#define CS1 PORTC.2
#define CS2 PORTC.3
#define RS PORTC.4
#define RW PORTC.0
#define EN PORTC.1

a pak také asi něco v těch funkcích, protože všechny chyby odkazují na ty konstanty maker (EN, CS1…) takže jakoby před nima chyběl středník, ale ten tam je.

void trigger()
{
EN = 1; //EN high
delay_us(E_DELAY);
EN = 0; //EN low
delay_us(E_DELAY);
}

void glcd_on()
{
//Activate both chips
#ifdef CS_ACTIVE_LOW
CS1 = 0;
CS2 = 0;
#else
CS1 = 1;
CS2 = 1;
#endif
RS = 0; //RS low → command
RW = 0; //RW low → write
DATAPORT = 0x3F; //ON command
trigger();
}
více odkaz nebo příloha
main.c (2.72 KB)
glcd.h (16.7 KB)

To je tím, že jednotlivé bity portu AVR Studio NEADRESUJE způsobem

PORTC.1=1;

Ale i to jde v AVR udělat…

:arrow_right: administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.

Zdravím páni.
Pokúšam sa vyššie riešené knižnice prepísať pre Hi tech C pre pic mcu.
Ale môj kompilátor a aj ja máme problém s funkciou map[prevLet-193][5]
Viete mi poradiť čo je to za funkciu a odkiaľ ju CodeVisionuAVR berie?

Ďakujem,Relatko.

map]] není funkce ale dvourozměrné pole… Napiš víc, takhle zase máme problém my…

map]] je použité v tejto funkcii.

[code]void glcd_putchar(byte c,int x,int y,byte l,byte sz)
{
if(l == 1)
{
switch©
{
case 129:
c = 250;
break;
case 144:
c = 251;
break;
case 152:
c = 252;
break;
case 142:
c = 253;
break;
case 141:
c = 254;
break;
}
if((c >= 193) && (prevLet >= 193) && (map[prevLet-193][5]) && (map[c-193][4]))
{
putIt(map[prevLet-193][stat+1],prevX,prevY);
stat = 2;
}else stat = 0;

    if(c >= 193) putItSz(map[c-193][stat],x,y,sz);
    else putItSz(c,x,y,sz);

    prevLet = c;
    prevX = x;
    prevY = y;

}else putItSz(c,x,y,sz);

}[/code]

No a ? Kompilátor hlásí co ?

Vďaka za radu,to dvojrozmerné pole som nakoniec našiel,bolo dosť zašité.
Mám to už celé prepísané pre pic,čakám na glcd dám vedieť ako to dopadlo.
relatko.