Forum: Mikrocontroller und Digitale Elektronik Pascal Programm in C übersetzen


von Anthony (Gast)


Lesenswert?

Hallo, ich hatte mal ein Problem mit einem Router und mir wurde hier 
geholfen. Und nun habe ich noch ein Problem. Ich kenne mich überhaupt 
nicht mit Pascal aus, muss das aber für meine Semesterarbeit machen. 
Helft mir Bitte!

Hier wäre das Programm:


PROGRAM AD_Wandler_Abfrage;

USES Crt;

TYPE typLPT             = RECORD
                            Dat, Stat, Steu : Word;
                          END;
VAR LPT : typLPT;
    I   : Byte;
    AD  : Byte;

PROCEDURE OPort(PortAddr : Word; DataByte : Byte); ASSEMBLER;
ASM
  MOV AL, DataByte
  MOV DX, PortAddr
  OUT DX, AL
END;

FUNCTION IPort(PortAddr : Word) : Byte; ASSEMBLER;
ASM
  MOV DX, PortAddr
  IN  AL, DX
END;

PROCEDURE PortInit;
BEGIN
  OPort(LPT.Dat,  $00);
  OPort(LPT.Stat, $00);
  OPort(LPT.Steu, $00);
END;

BEGIN
  LPT.Dat  := MemW[$0040:$0008];  { Einlesen der Parallel-Port-Nummer }
  LPT.Stat := LPT.Dat + 1;
  LPT.Steu := LPT.Dat + 2;

  PortInit; { Ports resetten }

  OPort(LPT.Dat, $01); { D0 auf 1 (Stromversorgung an) }

  REPEAT
    OPort(LPT.Steu, $00); { CS auf 0, IO auf 0 }
    OPort(LPT.Steu, $02); { CS auf 1, IO auf 0 }

    AD := 0; { alten Wandlerwert loeschen }

    FOR I := 7 DOWNTO 0 DO { Bit-Werte auslesen }
    BEGIN
      AD := AD SHL 1;
      IF IPort(LPT.Stat) AND $08 = $08 THEN
      BEGIN
        AD := AD OR 1;
        Write(1);
      END ELSE Write(0);

      OPort(LPT.Steu, $06); { CS auf 1, IO auf 1 }
      OPort(LPT.Steu, $02); { CS auf 1, IO auf 0 }
    END;

    WriteLn(AD:10);
    Delay(250); { etwas warten ... }

  UNTIL KeyPressed;

  ReadKey;
  PortInit; { Ports resetten }
END.

von Reiner S. (chickstermi) Benutzerseite


Lesenswert?

Also wenn ich mir das Programm so anschaue würde ich sagen, dass es 
reicht wenn du C kannst...

BEGIN
...
END

=

{
...
}

Function = Funktion mit Rückgabeparameter
Procedure= Funktion ohne Rückgabewert

repeat
...
until

=

while() oder do {} while()

for-schleife in pascal ist wie for-schleife in C nur andere Syntax...

Und ein bisschen in einem Handbuch der Pascalprogrammierung stöbern kann 
ja nicht so schwer sein...

gruß reiner

von Martin (Gast)


Lesenswert?

Hast du dior den Code schon mal angeschaut? Auch ohne Pascalkentnisse 
kann man die Funktion des Code halbwegs gut raus bekommen. Ansonsten 
frage detailierter.

von P. S. (Gast)


Lesenswert?

Anthony wrote:

> Hallo, ich hatte mal ein Problem mit einem Router und mir wurde hier
> geholfen. Und nun habe ich noch ein Problem. Ich kenne mich überhaupt
> nicht mit Pascal aus, muss das aber für meine Semesterarbeit machen.

Es ist DEINE Semesterarbeit. Ist dir eigentlich klar, dass du dein 
ganzes Studium mit sowas riskierst?

von tuppes (Gast)


Lesenswert?

Auf welchem Betriebssystem soll das laufen? Das verwendet direkte 
Hardwarezugriffe (Assembler-Befehle IN und OUT), darum geht das nur auf 
MS-DOS und Windows 95  98  ME.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.