Gast
#1029773
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.