Pascal Port Kontrolü Sağlayan Örnek Kodlar
-
Step Motor Kontrol.
Port`a Step Motor Baglanmasi gerekiyor.
--------------
uses crt,graph;
var
p,X_,Y_:word;
A,B:INTEGER;
X1,X2,Y1,Y2:INTEGER;
AC,YAZI:STRING;
GM,GS,HATANO:integer;
x:integer;
tus:char;
q,sonuc:integer;
w:real;
{m e n u n u n h a z i r l a n m a s i}
procedure renk(r:byte);
begin
setcolor(r);
end;
procedure menu;
begin
settextstyle(8,0,4);
setbkcolor(1);
renk(14);
outtextxy(130,30,"M E N U");
line(120,70,280,70);
renk(9);
settextstyle(1,0,1);
outtextxy(50,110,"<- Motoru Geriye Dogru Dondur... ");
settextstyle(1,0,1);
outtextxy(50,140,"-> Motoru ileriye Dogru Dondur... ");
settextstyle(1,0,1);
outtextxy(50,170,"Esc CiKiS... ");
end;
BEGIN
q:=2;
x:=0;
DETECTGRAPH(GM,GS);
INITGRAPH(GM,GS,"");
HATANO:=GRAPHRESULT;
IF HATANO <> 0 THEN
BEGIN
WRITELN("GRAFIK ORTAMIMA GECILEMEDI...");
WRITELN("GRAFIK HATA NUMARASI:",HATANO);
Writeln("Grafik HATASI:",GRAPHERRORMSG(HATANO));
ReadLn;
END;
repeat
menu;
repeat
tus:=upcase(readkey);
until tus in[chr(27),chr(75),chr(77)];
if tus=#27 then
begin
renk(14);
outtextxy(80,350,"H A Z I R L A Y A N L A R");
line(60,380,350,380);
renk(9);
settextstyle(0,0,1);
outtextxy(20,400,"HIDIR ATSIZ - BiL.PROG");
outtextxy(20,420,"KABUS - BiL.PROG");
tus:=readkey;
halt;
end;
if tus=#75 then
begin
port[$378] :=q;
cleardevice;
menu;
renk(9);
circle(500,235,100);
setfillstyle(4,14);
pieslice(500,235,x,x+18,100);
x:=x+18;
if x=342 then
x:=0;
q:=q*2;
if q=32 then
q:=2;
end;
if tus=#77 then
begin
port[$378]:=q;
cleardevice;
menu;
circle(500,235,100);
pieslice(500,235,x,x-18,100);
x:=x-18;
if x=0 then
x:=342;
w:=q;
sonuc:=round(w/2);
q:=sonuc;
if q=1 then
q:=16;
end;
until false;
readln;
end. -
delphide ozellestirsek kodu walla cok yararı olcak..
-
yani demek istedigim
port[$378]:=q demissin iki seferde fark ne merak ettim dogrusu
aynı tip bi program uzerinde calısıyorum ama biraz daha karısık. bi printer yapıyorum step motorlarla.
benim tek istediğim lpt seri yada paralelde belirleyebildiğim bi pine logic 0 1 gondermek.
-
ben x-y koordinatında hareket edebilecek bir tezgah yaptım yazıcı portu gibi portlara erişim sağlam asm ile mümkün fakat bu komutları Win2000 WinXp gibi programlardada çalıştırman gerekirse farklı bir bilgiye daha ihtiyacın var istersen sana gönderebilirim hazır kodları okulda ödev için yapmıştım bende ben uln2803 entegre kullanmıştım neysede
delphide açıklıyım portlara erişimin win98 kullanımını
önce 378 ne onu anlatayım 378 bilgisayarımın özelliklerinden aygıt yöneticisini aç ve aradan Yazıcı Bağlantı Noktası (Lpt1) üzerini çifttıkla veya özelliklerine tıkla oradanda Kanaklar sekmesine geç orada yazıcı portunun veri giriş ve çıkış aralığını göreceksin orası genelde 378 olur fakat donanım çakışmalarında başka bir değerde alabilir. her neyse bu 378 o 378 yani dahası..
dx registeri portlara erişim registeridir diyelim ve smallintdir
ör:
asm
mov dx,$378 // Burada dx Registerine Hangi portla uğraşacağımızı bildiriyoruz..
// ve in out komutlarıyla bilgi gönderimi veya alımı işlemlerini gerçekleştereceğiz..
// Eğer Porta veri data göndereceksek göndereceğimiz veriyi tabi bayt olarak al registerine atarız al veya direkte atayabiliriz baytı bite çevirerek hesaplamaları yaparsın artık oralarada girmiyim çok uzar..
mov al,255 // al registerine 255 atayalım yani buda bütün pinlerin lojik bir olması demek
out dx ,al // ve bu al registerindeki veriyi porta
yollayalım..
end;
// sonuç 8 pininde bir sonraki uyarıya kadar lojik bir oldu..
// veriyi okutmak içinse
in al,dx komutunu kullanırsın ve al registeride veriyi barındırız örneğin yukarıdaki işlemden sonra okutursan 255 olur gibi bir problem olursa beni haberdar et yardımcı olmaya çalışırım elden geldiği kadar..
maillerim :
micprog2003@yahoo.com / micprog2003@hotmail.com -
cok tesekkur ederim ama ben yazdım kodu calıstırdım ii niyetin icin saol
(biraz gec gordum galıba:)))
-
bana devreyi yapıp gönderebilirmisin bu arada sen step motromu dc motormu kullandın ?
yanlız bana 2 tane motor lazım çift yönlü hereket yaptıcam aynı anda ikisine ileri ve geri şeklinde... 20 -30 milyon veririm bayağı laızm oldu
Toplam Hit: 2821 Toplam Mesaj: 6