Sterowanie LPT piny 1,14,16 i 17 "Zlportio"

0

Witam
jak wysterować piny 1,14,16 i 17 korzystam z wtyczki "Zlportio" (bardzo prosta i działa pod xp)

piny od 2 do 9 wysterowuje tak:

procedure zapal (k: integer); 
var
b:byte;
begin
b:=$00;
case form1.ComboBox1.ItemIndex of
0:port:=$378;
1:port:=$278;
end;
case k of
0: b:=b+$01;
1: b:=b+$02;
2: b:=b+$04;
3: b:=b+$08;
4: b:=b+$10;
5: b:=b+$20;
6: b:=b+$40;
7: b:=b+$80;
end;
portwriteb(port,b);
end;

i wtedy pod buttony
zapal(6); //zapala pin6

taki banał a nie wiem jak wysterować te cztery piny są to wyjścia widać to na obrazku w linku
http://www.techgsm.pl/img/testers/lpt_signals.gif

proszę o pomoc

ps. pisze program do sterowania numerycznej frezarki do płytek pcb.

0

Pin 1, 14, 16, 17 należą do rejestru kontrolnego więc do adresu bazowego należy dodać offset = 02h.
Więcej na stronie: http://www.freefm.kni.pl/mike/lpt.html

Poza tym wywołanie procedury zapal(6) zapali pin 8 o oznaczeniu D6, a nie pin 6 który oznaczany jest jaki D4.

0

Mogę prosić o przykład na tej linijce jak wysterować pin 1?

portwriteb($378,$ )
0

Aptekarz podal Ci link (i offset)... pewnie nawet nie zajrzales :|

Aby wystawić bajt na linie danych D0..D7 wpisujemy go pod adres bazowy portu np. LPT1 (378h). W Pascalu napiszemy tak: 
    port[$3F8]:=bajt;
Podobnie zapisuje się do kolejnych dwóch rejestrów, przy czym trzeba podać ich adresy. Ponieważ wszystkie trzy rejestry danego portu są umieszczone w kolejnych adresach wystarczy do tzw. adresu bazowego dodawać przesunięcia (offsety) od 0 do 2.
0

Skoro masz diodki już podłączone pod LPT i testujesz go, bo mówisz że coś Ci tam już zapala, to mógłbyś troszkę pokombinować z wartościami, nawet jeśli opisy nie są dość zrozumiałe. Skoro kilka osób zwraca ci uwagę na temat offsetu to powinieneś iść w tą stronę, a co za tym idzie do adresu bazowego dodać owy offset.
Przy wyborze portu pierwszego adresem bazowym jest $378 więc dodając offset 2 (bo tak dostaniemy się do rejestru kontrolnego) otrzymasz wartość $37A więc kod powinien wyglądać mniej więcej tak:

portwriteb($378,$xx )

gdzie $xx to wartość w której odnosisz się do poszczególnych pinów i tu odsyłam po raz kolejny do stronki, którą prędzej Ci podałem.

PS.
nie mówię, że wszystko tłumaczę bezbłędnie bo piszę praktycznie wszystko teraz teoretycznie bo nie mam chwilowo możliwość sprawdzenia wszystkiego w praktyce.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0