DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦f0280f590⟧ TextFile

    Length: 2816 (0xb00)
    Types: TextFile
    Names: »STYR.LST«

Derivation

└─⟦037dced94⟧ Bits:30003312 Elevopgave i styring af skildpadde til Piccolo
    └─ ⟦this⟧ »STYR.LST« 

TextFile

0010 // ....................................................................«nul»
0020 //       Procedurer til styring af stepmotorer og relæer.«nul»
0030 //
0040 // Variablen bit holder styr på de enkelte bits«nul»
0050 // derved undgås, de enkelte udgange påvirker hinanden.«nul»
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"«nul»
0110 //
0120 //                                                     SC  d.20/7/88
0130 // ....................................................................«nul»
0140
0150 PROC init // SKAL kaldes før de andre procedurer kan anvendes!!«nul»
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«nul»
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«nul»
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«nul»
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»