Hi!
Bin ziemlich neu auf dem Gebiet C-Control und hab ne Frage zur letzten Routine. Wenn man im 4Bit-Modus arbeitet, dann werden doch die Daten in 2 Takten gesendet und beidesmal in den Datenbereich ganz vorne im byteport, also die ersten 4 Bits. Und wenns ein kommando is, dann in den ganzen byteport rein. Aber irgendwie versteh ich die routine nicht, eigentlich gar nicht! Außerdem ist bei B00100000 der 1er nicht an der Stelle vom RegisterSelect, des müsste doch heißen B00000100 oder? Und warum wird keine unterscheidung zwischen kommando und zeichen senden gemacht, bitte erklär mir das verständlich, ich versuchs schon seit längerem zu kapiern, wird aber net *Gg*
Code:' *** Daten-Definition *** define lcd_buf byte 'Zeichen oder Kommando define lcd_param byte ' *** Definition LCD-Ports *** define lcd_port byteport[2] define lcd_rs port[14] 'Register Select define lcd_rw port[13] 'Read/Write define lcd_e port[15] 'Enable '*** Programmoperationen *** gosub LCD_INIT pause 10 end ' Display initialisieren #LCD_INIT lcd_port = OFF 'alle Ports auf 0 setzen lcd_param=&H38 : gosub LCD_WRITECMD '8-Bit-Modus aktivieren lcd_port=&B00000010 'mit 8-Bit-Command in 4-Bit-Modus umschalten pulse lcd_e lcd_param = &H28 : gosub LCD_WRITECMD 'ab jetzt 4-Bit-Modus lcd_param = &H0C : gosub LCD_WRITECMD 'Display einschalten, kein Cursor, kein Blinken return ' Display löschen #LCD_CLS lcd_param = &H02 : gosub LCD_WRITECMD 'Cursor home lcd_param = &H01 : gosub LCD_WRITECMD 'Display clear return ' Zeilenwechsel #LCD_GOTOLINE if lcd_param = 1 then lcd_param = &H80 'in 1. Zeile wechseln if lcd_param = 2 then lcd_param = &HC0 'in 2. Zeile wechseln goto LCD_WRITECMD return ' LCD-Kommando #LCD_WRITECMD lcd_buf = OFF 'Controlregister aktivieren goto LCD_WRITE return ' Zeichenausgabe #LCD_WRITECHAR lcd_buf = &B00100000 'Datenregister aktivieren goto LCD_WRITE return ' Kommando oder Zeichen an Display senden #LCD_WRITE lcd_port = lcd_buf or (lcd_param shr 4) 'Hi-Nibble senden pulse lcd_e lcd_port = lcd_buf or (lcd_param and &H0F) 'Lo-Nibble senden pulse lcd_e return







Zitieren

Lesezeichen