' *****************************************************
' * Modul fuer Betrieb der Analog-Ein- und Ausgaenge  *
' * MotorMaster hat zwei analoge Ein- und Ausgaenge,  *
' * MiniMaster nur vier analoge Eingaenge             *
' * BasicMaster hat nur analoge Eingaenge,            *
' * ber APS-Bus mit ExAn 4 Ana-Out ansprechen        *
' *****************************************************
100 MTOP=3FFFH
110 $(0)="                "     ; ein String wird als Leerzeile im Display def.
210 INPUT "analog-Aus = 0; analog Ein = 1",X
220   IF X<>INT(X) THEN 110
230   IF X<0.OR.X>1 THEN 110
240   ON X GOSUB 5700,5800
250 GOTO 110
;    -------------- Ana-Ausgang 0 und 1 setzen -----------
5700 CLS                        ; clear screen
5705 P. "Analog-Ausgang1",
5710 I=0                        ; Anfangswert
5720 DO
5730   CUR 1,1:P. I             ; Cursor stellen
5740   DACONV(0,I)              ; wandles Ausgang 0, pos. Saegezahn
5750   DACONV(1,4095-I)         ; wandles Ausgang 1, pos. Saegezahn
5760   I=I+10                   ; Ausgangsspannung erhoehen
5770   IF I>4095 THEN I=0       ; wrap around
5780   X2=GET                   ; Taste einlesen
5790 UNTIL X2=27                ; mit esc abbrechen
5799 RETURN
;    -------------- Ana-Eingang
; Mit Hilfe des Analogausganges wird eine Spannung erzeugt,
; die direkt auf den Eingang gelegt werden kann.
; Fuer den Eingang 1 gilt es sinngemae.
5800 P.U.(##.##):CLS:V=0        ; Ausgabeformat des Printbefehls festlegen
5805 CUR 0,0
5810 P. "Analog-Eingang 0",
5815 CUR1,0:?$(0),              ; Cursor stellen, Zeile loeschen
5820 DO
5835   V=V+0.1
5840   IF V>5 THEN V=0
5845   DACONV(0,INT((V+10)*2047/10)  ; gebe Analogspannung auf Ausgang 0
5850   ADCONV(0,0):POP VIN      ; lese Analogeingang 0
5855   CUR 1,3
5860   P. VIN,"Volt  ",
5865   X2=GET
5870 UNTIL X2=ESC
5875 P.U.(0),                   ; Print-Format wieder Fliekomma
5890 DACONV(1,2047)             ; Ausgangsspannung wieder auf 0
5899 RETURN
