INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo! VIELEN VIELEN DANK zuerst einmal, dass du dich meines Problems angenommen hast! Also das Problem ist folgendermaßen: Ich hab ein 4x20 LCD-Display mit dem KS0073 Kontrollerchip, der irgendwie anders zu initialisieren ist wie der Standardchip... des weiteren stimmt die Zeilencodierung auch nicht überein. Der Code den ich in CCBASIC hier schon angegeben hab funktioniert einwandfrei, d.h. ich kann das Display richtig initialisieren und auch die Zeilen halbwegs vernünftig ansprechen. Leider funktioniert der selbe Code in BASIC++ überhaupt nicht, d.h. das Display bleibt vollkommen leer... vielleicht hab ich auch nur ne kleinigkeit übersehn, jedenfalls will es nicht um die graue Burg funktionieren in BASIC++..... Der Code, den ich jetzt so zusammengeschustert habe in BASIC++ schaut so aus: '////////////////////////////////////// '// '// CCBasic++ '// Destination C-Control I M2.0 '// Beschreibung: '// '////////////////////////////////////// OPTION CC2.0 'Zielplattform 'Deklarationen 'Define byte1 as byte[1] '------ I/O PORTS --------- '-------------------------- define LCDPORT byteport[2] '-------------------------- '---- SYSTEM MEMORY ------- '-------------------------- define OUTBYTE byte ' define LCDDATA byte[2] '(4-Bit Nibblefolge: 2,4,0,9,2,0) 'print "#ON_LCD#"; LCD.INIT SWITCHONLY LCD.INIT 'print "#INIT#"; LCD_WRITECMD(24h) pause 2 LCD_WRITECMD(09h) pause 2 LCD_WRITECMD(20h) pause 2 LCD.INIT SWITCHONLY LCD.INIT LCD_WRITECMD(24h) pause 2 LCD_WRITECMD(09h) pause 2 LCD_WRITECMD(20h) pause 2 LCD.CLEAR 'print"#L101#";"Z1"; LCD.POS 1,1 LCD.PRINT "Z1" '--------- ------WRITE HI NIBBLE LCD COMMAND ------------ Function LCD_WRITECMD(LCDDATA as word) 'define LCD_dat_hi as byte[2] 'LCD_dat_hi=LCDDATA shr 4 OUTBYTE=(4 shr LCDDATA) LCDPORT=OUTBYTE or 01000000b pause 2 LCDPORT=OUTBYTE and 10111111b pause 2 '--------------- WRITE LO NIBBLE ------------------------ OUTBYTE=(LCDDATA and 00001111b) LCDPORT=OUTBYTE or 01000000b pause 2 LCDPORT=OUTBYTE and 10111111b end Function pause 50 LCD.OFF END > > > Hallo! > > Ich versuche nun schon ne halbe ewigkeit folgenden code nach BASIC++ zu übersetzen, aber es funzt absolut nicht.. jemand nen tip? > > Zunachst solltest Du die Konventionen von Basic++ einhalten. Also kein gosub, statt "&hxxxxx" > "xxxxh" usw. Da Du uns nicht erzählst, wo es denn nun klemmt, welche Fehlermeldungen du > bekomst etc. klatsche ich hier meine gesammelten LCD Routinen rein. > ACHTUNG! Die benütigten Variablen musst Du Dir selbst aus dem Code rausklauben und definieren! > > Grüße > Henrik > > > '--------------------- LCD Routinen --------------------------------- > function lcd_locate(y ref line, x ref row) > > if line = 1 then base = line1 'Die Werte sind als Konstanten > if line = 2 then base = line2 'im Kopf definiert und können > if line = 3 then base = line3 'dort dem verwendeten Display > if line = 4 then base = line4 'angepasst werden. > 'Das Datenblatt gibt Auskunft > 'über die CG-ROM Belegung. > lcddata = base + row-1 > lcd_writecmd() > > end function > > '--------------------------------------------------------- > function lcd_cursor_on() > lcddata = 00001110b > lcd_writecmd() > end function > '--------------------------------------------------------- > function lcd_cursor_off() > lcddata = 00001100b > lcd_writecmd() > end function > > '------------------------------------------------------------------- > > function init_character() > lcddata=00000110b 'User Ram aktivieren und > lcd_writecmd() 'auf schreiben setzen. > lcddata=01000000b 'Zeiger auf Zeichen > '0 setzen. > lcd_writecmd() > > for tempval = 0 to 63 > lcddata = looktab (lcd_character,tempval) > put lcddata > next > > lcddata = 10000000b > lcd_writecmd() 'User Ram deaktivieren > 'umschalten auf Normal- > 'betrieb > end function > > '------------------------------------------------------------------- > > '--------------------------------------------------------- > '---------- Hilfsroutine für CMD-Ausgabe an LCD ---------- > '--------------------------------------------------------- > > function LCD_WRITECMD() > > '-------- höherwertiges nibble senden ------------------ > OUTBYTE = (LCDDATA shr 4) > OUTPORT = OUTBYTE or 01000000b > set_byteport() > OUTPORT = OUTBYTE and 10111111b > set_byteport() > '--------- niederwertiges nibble senden ------------------ > OUTBYTE = (LCDDATA and 0Fh) > OUTPORT = OUTBYTE or 01000000b > set_byteport() > OUTPORT = OUTBYTE and 10111111b > set_byteport() > end function > '---------------------------------------------------------- > '------- Bug Umgehungspfusch für C-Control(V 2.01)-------- > '---------------------------------------------------------- > function set_byteport() > LCDP0 = OP0 > LCDP1 = OP1 > LCDP2 = OP2 > LCDP3 = OP3 > LCDP4 = OP4 > LCDP5 = OP5 > LCDP6 = OP6 > > end function > '-------------------------------------------------------------------- > '-------------------------------------------------------------------- > table lcd_character 'invertierte Zahlendarstellung 0 bis 7 > 31 17 21 21 21 21 17 31 '0 > 31 27 19 27 27 27 17 31 '1 > 31 17 29 29 17 23 17 31 '2 > 31 17 29 29 17 29 17 31 '3 > 31 21 21 21 17 29 29 31 '4 > 31 17 23 23 17 29 17 31 '5 > 31 19 23 23 17 21 17 31 '6 > 31 17 29 27 23 23 23 31 '7 > end table > |
Antwort schreiben |