Toon posts:

[Delphi / ASM] Printerpoort aansturen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey, ik ben nu met Delphi bezig met een programma om via de parallele poort 8 ledjes aan te kunnen sturen. Nu moet ik hiervoor wat assembler toepassen en dat wil niet echt lukken.

Hier een stukje ASM waarmee ik ledje B1, van het programma wat ik gebruik om te testen, mee aan en uit kan zetten :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.Button1Click(Sender: TObject);
begin
asm
mov     dx,379h
in  al,1
and     al,78h
mov     cl,3
shr     al,cl
xor     al,0fh
mov     dx,378h
out     dx,al
mov     ah,4ch
end;
end;

end.

Ik doe dit onder Windows 98 en ik maak gebruik van deze leds om het programma mee te kunnen testen.

Ik weet dus zowat niks van ASM en het is dan ook een beetje toeval dat ik met het stukje source hierboven een aantal ledjes wel kan aansturen.

Weet iemand hoe ik elk ledje afzonderlijk aan en uit kan zetten en hoe ik alle ledjes kan resetten als er een aantal aan zijn ?

  • Skinkie
  • Registratie: Juni 2001
  • Laatst online: 09-06-2020

Skinkie

Op naar de 500

Op torry.ru hebben ze hier componentjes voor dus daar zou ik eerst ff kijken.

Steun Elkaar, Kopieer Nederlands Waar!


Verwijderd

Topicstarter
Op zondag 06 januari 2002 21:11 schreef Skinkie het volgende:
Op torry.ru hebben ze hier componentjes voor dus daar zou ik eerst ff kijken.
Hmmm ben ik al wel eens eerder geweest. Ook wel op een hoop andere site's maar het probleem is een beetje dat ik die componenten niet maarzo in Delphi kan integreren, want daar ben ik te n00b voor ;(

Ik ben nu wat componenten aan het proberen, maar ik betwijfel of ik dat wat mee kan.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15-09 19:59

Creepy

Tactical Espionage Splatterer

Hmm.. er zijn al redelijk wat vragen hierover geweest, dus gebruik ff de search van GoT, Google, kijk ff op community.borland.com, of zoals al aangegeven op torry.ru (ook bereikbaar op torry.net tegenwoordig)

Ikzelf gebruik deze routines voor win9x/ME.
code:
1
2
3
4
5
6
7
8
9
10
11
FUNCTION Port_In(IOport: WORD): BYTE; ASSEMBLER; REGISTER;
Asm
   MOV DX,AX
   IN AL,DX
End;

PROCEDURE Port_Out(IOport: WORD; Value: BYTE); ASSEMBLER; REGISTER;
Asm
  XCHG DX,AX
  OUT DX,AL
END;

Hiermee kan je elke gewenste waarde naar elke I/O poort sturen. Ze werken echter NIET onder NT/2000/XP opdat je hiero een driver voor nodig hebt.

Dus zend een 1 naar poort $378, en pin 1 is hoog, een 2 en pin 2 is hoog, een 4 en pin3 is hoog etc.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney