Hallo Roberto,
Du irrst aber durch die C Compiler Welt 
/*Offtopic*/
Was war denn so schlimm an CodeVison(Es ist keine Ironie sondern eine ernste Frage)
/*Ende Offtopic*/
Ja ich weiß, Du möchtest irgendwas haben, was immer wieder aus neue einsetzbar ist, ohne viel in Code rumzuwühlen, kann ich gut nachvollziehen!
Ich mache es z.B. so
lcd.h
Code:
#define DATADDR DDRA
#define DATAPORT PORTA
#define DATAPIN PINA
#define ENABLEPORT PORTC
#define ENABLEDDR DDRC
#define ENABLE (1<<PC6)
#define RWPORT PORTC
#define RWDDR DDRC
#define RW (1<<PC7)
#define RSPORT PORTG
#define RSDDR DDRG
#define RS (1<<PG2)
dann ein Auszug aus lcd.c
Code:
uint8_t get_busy_flag(void) {
uint8_t busy;
DATADDR = 0;
DATAPORT = 0x00;
RWPORT |= RW;
enable();
busy = DATAPIN;
RWPORT &= ~RW;
DATADDR = 0xFF;
if (busy & 0x80)
return 1;
else
return 0;
}
Du siehst also, wenn ich einen anderen µC nehme, oder das ganze anders belege,
brauche ich nur ein paar Änderungen in lcd.h machen 
Man kann das auch weiter vereinfachen und zwar liegen die Register PIN* DDR* PORT*
immer beieinander (leider weiß ich nicht mehr aus dem Kopf in welcher Reihenfolge)
dann könnte man einfach nur sowas machen
Code:
#define DATAPIN PINC
#define DATADDR DATAPIN+1
#define DATAPORT DATADDR+1
jetzt muß man nur noch 1 Zeile Ändern!
Ich weiß jetzt wirkilch nicht ob die Reihenfolge so stimmt, also nicht drauf verlassen,
lieber in io*.h nachschauen !
Gruß Sebastian
Lesezeichen