www.mikrocontroller.net

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


Autor: Anthony (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Reiner S. (chickstermi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: tuppes (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.