Programik w pascalu - motor krokowy


(03200454) #1

Witam, mam problem z dokonczeniem programu w pascalu. Chodzi o motor krokowy, trzy komendy juz wlasciwie dzialaja (przelaczniki 0,1,2) pozostaly mi przelaczniki 3, 4 i 5 i za nic nie wiem , jak mam sie do tego zabrac. Czy ktos umialby to dokoczyc?

Z gory dziekuje za reakcje

Zuzanna

PROGRAM WYGLADA TAK:

uses crt;

const select = $280;

data = $281;

var trzydziesci :byte;

siedemdziesiatpiec :byte;

licznik :integer;

licznik2:integer;

licznik3:integer;

licznik4:integer;

label

przeczytaj,start_lewo,start_prawo,timer,timer_tk,start_30,start_75,mainprog,przelacznik0,przelacznik1,przelacznik2,przelacznik3,przelacznik4,przelacznik5,l1_2,r1_3;

BEGIN

writeln('przelacznik0 do zera');

writeln('przelacznik1 75 stopni w lewo');

writeln('przelacznik2 30 stopni w prawo');

writeln('przelacznik3 najktrotsza droga do pozycji zero');

writeln('bez przerwy w lewo - dopoki przelacznik4=1') ;

writeln('bez przerwy w prawo - dopoki przelacznik5=1');

asm

mov dx,select

mov al,255-16

out dx,al

mainprog: call przelacznik0

call przelacznik1

call przelacznik2

call przelacznik3

call przelacznik4

call przelacznik5

ret

przelacznik0: mov dx,data

in al,dx

and al,00000001B

cmp al,00000001B

jz przeczytaj

call timer_tk

ret

przelacznik1: mov dx,data

in al,dx

and al, 00000010B

cmp al, 00000010B

jz start_75

call timer_tk

ret

przelacznik2: mov dx,data

in al,dx

and al, 00000100B

cmp al, 00000100B

jz start_30

call timer_tk

ret

przelacznik3: jmp przelacznik4

przelacznik4: mov dx,data

in al,dx

and al, 00000100B

cmp al, 00000100B

ret

przelacznik5: mov dx,data

in al,dx

and al, 0000001B

cmp al, 0000001B

ret

start_75: mov siedemdziesiatpiec,0

jmp l1_2

l1_2: inc siedemdziesiatpiec;

call start_lewo

dec trzydziesci;

start_lewo: mov dx,data

mov al,249

out dx,al

call timer

mov dx, data

mov al, 248

out dx, al

call timer

ret

start_30: mov trzydziesci, 0

jmp r1_3

r1_3: mov al, trzydziesci

cmp al, 8

jnz l1_2

jmp przelacznik3

timer_tk: mov licznik3, 32000

mov licznik4, 100

ret

przeczytaj: mov dx, data

mov al, 127

out dx, al

ret

timer: mov licznik, 32000

mov licznik2, 1

ret

END;

END.