#include #include #define __OPTIMIZE__ // Code Optimieren für richtige verzögerungszeit #define F_CPU 8000000 // Geschwindigkeit für verzögerug (8mhz) #include /* bei alter avr-libc: #include */ void delay(); //Funktionen void enable(); int main(){ DDRB = 0xff; // Daten Ports initialisieren DDRC = 0xff; // Steuer DDRD = 0x00; _delay_ms(100); /////////////////////////// //schreiben PORTC = 0b00000000; // Steuerbefehle PORTB = 0b00110000; // Daten (8 Bit Modus) enable(); _delay_ms(16); enable(); // 3x senden zur Initialisierung _delay_ms(15); enable(); _delay_ms(15); PORTB = 0b00111100; //2 zeilig 5*8 enable(); wait(); PORTB = 0b00001000; // Display aus enable(); wait(); PORTB = 0b00000001; // Display löschen enable(); wait(); PORTB = 0b00000110; // increment DD Ram und Cursor schieben enable(); wait(); /////// Schreiben PORTC = 0b00000001; // Steuerbefehle PORTB = 0b00110000; // 0 enable(); wait(); PORTB = 0b00110001; // 1 enable(); wait(); PORTB = 0b00110010; // 2 enable(); wait(); while(1){ } return 0; } void enable(){ //ennableimpuls PORTC |= (1 << 2); /* setzt Bit 2 an PortC auf 1 */ _delay_ms(1); PORTC &= ~(1 << 2); /* loescht Bit 2 an PortC */ } void wait(){ //Portumstellung für Datenempfang DDRB = 0x00; // Daten Ports initialisieren PORTC |= (1 << 1); /* setzt Bit 1 an PortB auf 1 (R/W auf High für Busyflag)*/ while((PINB & (1 << 7))){ // bit 7 wird abgefragt gesetzt Busyflag } PORTC &= ~(1 << 1); /* loescht Bit 1 an PortC (R/W wieder auf low)*/ DDRB = 0xff; // Port wieder auf Eingang } void delay(){ while(!(PIND & (1 << 0))){ // bit 1 wird abgefragt gesezt } while((PIND & (1 << 0))){ // bit 1 wird abgefragt gelößt } }