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
dann ein Auszug aus lcd.cCode:#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)
Du siehst also, wenn ich einen anderen µC nehme, oder das ganze anders belege,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; }
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
jetzt muß man nur noch 1 Zeile Ändern!Code:#define DATAPIN PINC #define DATADDR DATAPIN+1 #define DATAPORT DATADDR+1
Ich weiß jetzt wirkilch nicht ob die Reihenfolge so stimmt, also nicht drauf verlassen,
lieber in io*.h nachschauen !
Gruß Sebastian







Zitieren

Lesezeichen