|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 2816 (0xb00) Types: TextFile Names: »STYR.LST«
└─⟦037dced94⟧ Bits:30003312 Elevopgave i styring af skildpadde til Piccolo └─ ⟦this⟧ »STYR.LST«
0010 // .................................................................... 0020 // Procedurer til styring af stepmotorer og relæer. 0030 // 0040 // Variablen bit holder styr på de enkelte bits 0050 // derved undgås, de enkelte udgange påvirker hinanden. 0060 // 0070 // I øjeblikket er det kun muligt, at få en motor til at køre af gangen. 0080 // Der mangler også mulighed for at aflæse de 2 indgangsbit ( bit 6 og 7). 0090 // 0100 // Procedurerne kan indlæses til et program ved hjælp og ENTER "styr.lst" 0110 // 0120 // SC d.20/7/88 0130 // .................................................................... 0140 0150 PROC init // SKAL kaldes før de andre procedurer kan anvendes!! 0160 OPEN FILE 5,"/19/port", WRITE 0170 marg:=SYS(6) // husker margin til senere brug 0180 MARGIN 0 0190 PRINT FILE 5: CHR$(255); // z80-pio skal initialiseres 0200 PRINT FILE 5: CHR$(192); // bit 6 og 7 læse - resten skrive bit 0210 CLOSE FILE 5 0220 OPEN FILE 5,"/17/port", WRITE 0230 PRINT FILE 5: CHR$(0); // sikre bl.a at relæer er brudt 0240 CLOSE FILE 5 0250 DIM bit(0:7) // skal sikre, at relæerne er uafhænging 0260 MARGIN marg // margin reetableres 0270 ENDPROC init 0280 0290 PROC motor(nr,retning,trin) CLOSED 0300 // retning > 0 drejer med uret og retning <0 drejer mod uret 0310 // trin angiver hvor mange gange 7.5 grad der drejes 0320 IMPORT vent,bit,bit_to_tal 0330 OPEN FILE 5,"/17/port", WRITE 0340 marg:=SYS(6) 0350 MARGIN 0 0360 bit(2*(nr-1)):=0; bit(2*nr-1):=0 0370 slukbyte:=bit_to_tal 0380 IF retning>=0 THEN 0390 bit(2*nr-1):=0 0400 ELSE 0410 bit(2*nr-1):=1 0420 ENDIF 0430 bit(2*(nr-1)):=1 0440 byte:=bit_to_tal 0450 FOR motorskridt:=1 TO trin DO 0460 EXEC vent(4) 0470 PRINT FILE 5: CHR$(byte); 0480 EXEC vent(4) 0490 PRINT FILE 5: CHR$(slukbyte); 0500 NEXT motorskridt 0510 bit(2*(nr-1)):=0; bit(2*nr-1):=0 0520 CLOSE FILE 5 0530 MARGIN marg 0540 ENDPROC motor 0550 0560 PROC vent(tid) CLOSED 0570 FOR i:=1 TO tid DO i:=i 0580 ENDPROC vent 0590 0600 PROC relæ(nr,on) CLOSED 0610 // on = 1 slutter og on = 0 bryder relæet hvis det er sluttet 0620 IMPORT bit,bit_to_tal 0630 marg:=SYS(6) 0640 MARGIN 0 0650 OPEN FILE 5,"/17/port", WRITE 0660 bit(2*nr-1):=on; bit(2*(nr-1)):=0 0670 on:=bit_to_tal 0680 PRINT FILE 5: CHR$(on); 0690 CLOSE FILE 5 0700 MARGIN marg 0710 ENDPROC relæ 0720 0730 FUNC bit_to_tal CLOSED 0740 // omsætter de 6 outbit til et tal, der kan sendes til porten 0750 IMPORT bit 0760 tal:=bit(0)+2*bit(1)+4*bit(2)+8*bit(3)+16*bit(4)+32*bit(5) 0770 RETURN tal 0780 ENDFUNC bit_to_tal «eof»