PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C Befehler portieren



Adlukas
22-11-2004, 13:20
Hallo, ich weiß nicht ob das so richtig in dieses Forum reinpasst, aber vieleicht kann mir jmd. helfen :)

Ich hab eine kleine Funktion die in C gecodet ist und ich würde sie gerne in Basic portieren. Schaut einfach mal:


void lcgout(int where, int value)
{
outportb(PORTB,LCGCMD|LCGWR|LCGDIS);
outportb(PORTB,LCGCMD|LCGWR|LCGEN);
outportb(PORTA,where);
delay(EDELY);
outportb(PORTB,LCGCMD|LCGWR|LCGDIS);

}

Die großgeschriebenen Konstanten habe ich bereits portiert, das ist ja auch einfach :)
Aber ich finde keinen passenden Befehl für outportb in Basic. Ah ja, und was bedeuten die | in c? UND? wie könnte ich das in Basic machen? :(
Ich hoffe mir kann jmd. helfen - Danke!

KL47
22-11-2004, 15:10
Bist du sicher, dass du das in Basic machen möchtest? _Wirklich_ sicher? ;)

Was die "|" angeht: Das ist ein "oder", ist in BASIC "XOR" soweit ich weiß (nicht OR, das wäre ||).

Die Funktionen kenne ich alle nicht, du könntest vllt. mal posten, welche Bibliotheken du alle eingebunden hast. Hab ich eigentlich schon gefragt, ob du dir sicher bist, dass du das in Basic programmieren willst? :rolleyes:

Joghurt
22-11-2004, 18:45
Welches BASIC meinst du? Da gibt es verschiedene

"XOR" ist übrigens falsch. "|" ist das binäre OR, ich weiss leider nicht mehr, wie das in BASIC geschrieben wurde (vielleicht "^"?)

In QBASIC gab es glaube ich den OUT befehl, der etwas an einen (IDE-)Port schrieb. (outportb(a,b) => OUT a,b)

BTW: Du weisst, dass dies hier ein UNIX-Forum ist?

Adlukas
22-11-2004, 19:00
Hym, ja ich wollte das theoretisch in basic machen, wieso denn nicht ? ist das sooooo kompliziert?
Ich weiß das das ein unix forum ist, aber auch ein coderforum :] und weil mir niemand wo anders helfen konnte hab ich mir mal gedacht, vieleicht habt ihr mehr drauf :]
Du sagst also mit OUT? hab ich mir auch überlegt, aber wie mach ich das in basic mit dem | ...
Wenn das jetzt der OUT befehlt währe, dann konnte ich das do einfach so machen, oder?:


define function lcgout(where as byte)

function lcgout(where)
OUT PORTB,LCGMD^LCGWR^LCGDIS
OUT PORTB,LCGCMD^LCGWR^LCGEN
OUT PORTA,where
delay(EDELY)
OUT PORTB,LCGCMD^LCGWR^LCGDIS
end function

anda_skoa
23-11-2004, 15:01
BTW: Du weisst, dass dies hier ein UNIX-Forum ist?

Wäre mir neu dass es keine BASIC Interpreter/Compiler für Unix gibt.

Am besten du kontaktierst umgehend die Entwickler von xbasic.org, die sind doch tatsächlich der Meinung es würde auch unter Linux funktionieren.

Ciao,
_

Pingu
23-11-2004, 15:21
@anda
Volle Punktzahl *rotfl*

@Adlukas
Das sieht mir doch sehr nach Schulaufgabe aus, nüsch wahr?

Denn hier sind ja wohl ein Widerspruch:

Ich hab eine kleine Funktion die in C gecodet ist und ich würde sie gerne in Basic portieren.

Ah ja, und was bedeuten die | in c?
Denn entweder hast Du es geschrieben und weißt somit was es bedeuted oder eben nicht. Aber dann sehr ehrlich.

Pingu

Adlukas
23-11-2004, 17:09
lool, sorry das ich lache aber es ist wirklich nicht für die schule :] sowas würden wir im leben nie machen :D
und, ich habe das nicht selbst gecodet, sonder ich habe die lib im netz gefunden, leider ist sie - wie ihr seht in C geschrieben.
Die library ist zum ansteuern eines µC, der widerum ein DotMatrix Display steurt. Da ich mich nun in Basic eingearbeitet habe und so gut wie mein komplettes Programm in Basic ist, würde ich auch gerne diese Lib in Basic haben um die Befehle implementieren zu können.
Währe echt super von euch wenn ihr mir helfen könntet. Die Tage werde ich einpaar der Lösung ausprobieren aber vorher muss ich mir meine passende Schaltung dazu aufbauen/löten :]
Im Endeffekt ist das ganze für die Schule - Facharbeit. Aber das ist nur 0.01% der eigendlichen Arbeit :] So ein schöner Nebeneffekt, ein Display :]
big thx nochmal!

EDIT: ah ja, wo ist denn da ein Wiederspruch? Da steht "ich habe hier eine Funktion die in C gecoddet _IST_" und nicht, dass ich sie selbst gecoddet habe :] aber ist egal :P

Joghurt
24-11-2004, 00:13
Wäre mir neu dass es keine BASIC Interpreter/Compiler für Unix gibt.IIRC ist outportb ein Befehl von Borland C, also DOS/Windows. Daraus schloss ich, dass auch das Programm eher unter Windows laufen soll; unter Unix müsste es ja eh als root laufen, wenn es auf Ports zugreift.

r00t043
24-11-2004, 18:28
@Adlukas
Was ist das den fuer Mikrocontroller? Denn fuer jeden uC gibt es einen anderen Kompiler der unterschiedliche Befehlen dir zur verfuegung stellt, z.B. saehe das fuer einen AVR so aus:
statt

outportb(PORTB,LCGCMD|LCGWR|LCGDIS);

PORTB = LCGMD | LCGWR | LCGDIS;
bzw. frueher:

outp( PORTB, LCGCMD|LCGWR|LCGDIS );
Am besten mal die Dokumentation fuer dein BASIC suchen, die Ausgabe duerfte relativ am Amfang erklaert sein ( erster Versuch mit LED an irgendeinem Pin zum leuchten bringen ). Koennte auch sein das du bei deinem BASIC-Kompiler schon die lib fuer dein LCD dabei hast und du dich garnicht mit den Bits rumschlagen musst.

@Joguhrt
Ich glaube nicht das auf dem uC irgendeine Art von Betriebssystem laeuft ( es sei den Adlukas hat ne CControl am Gange )