;----------------------------------------- ; LCD Routines for 4Bit I/F ;----------------------------------------- ; ; Connections ; DB4-DB7 PORTB 7..4 ; RS PORTC 2 ; RW PORTC 3 ; E PORTC 4 ;----------------------------------------- ;----------------------------------------- ; Basic configuration ;----------------------------------------- .equ autoMOVE = 1 ; automove cursor after char written .equ autoSHIFT = 0 ; autoshift display .equ cursor = 0 ; cursor ON/OFF .equ blink = 0 ; cursor blinks .equ ifDL = 0 ; I/F Datalength 4Bit (0)/8Bit (1) .equ lines = 1 ; Display lines 1L (0)/2L (1) .equ font = 0 ; Display Font 5x7 (0)/5x10 (1) .equ dataPORT = PORTA .equ dataPORTD= DDRA .equ D4 = 0 .equ D5 = 1 .equ D6 = 2 .equ D7 = 3 .equ controlPORT = PORTC .equ controlPORTD= DDRC .equ E1 = 5 .equ E0 = 4 .equ RW = 3 .equ RS = 2 ;----------------------------------------- .DEF lcdDATA = R18 .DEF cnt1 = R20 .DEF cnt2 = R21 ; init LCD-Display lcdINIT: ; set DDRB and DDRC ldi mp, (1< ca. 17 Steps * 3 Steps/Turn delay50us: ldi cnt1, 0x10 delay50us_: dec cnt1 brne delay50us_ ret ; warteschleife 5ms @ 1 MHz --> 1000 * delay50us --> 4 * 256 * delay50us delay5ms: ldi cnt1, 0x03 delay5ms_0: ldi cnt2, 0xFF delay5ms_1: dec cnt2 brne delay5ms_1 dec cnt1 brne delay5ms_0 ret