Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: ich kriegs einfach nicht gebacken CCBASIC/BASIC++ Kategorie: Programmierung Basic (von Robert - 2.10.2005 1:08)
 Als Antwort auf Re: ich kriegs einfach nicht gebacken CCBASIC/BASIC++ von Henrik - 1.10.2005 22:50
Robert nutzt:  CC1-M-Unit V1.2/2.0
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

Bisherige Antworten:

Re: ich kriegs einfach nicht gebacken CCBASIC/BASIC++ (von Henrik - 2.10.2005 14:10)