50 DIN$="111101111111" ' Adresse fuer Kanal 8
60 B=512 ' Skalierungsfaktor fuer Dout (Anf.wert)
70 VOUT=0 ' Vout: dezimale Darstellung von Dout
80 REF=5 ' Referenzspannung=5,000 V
90 REM
100 FOR I = 1 TO 12 ' Schleife 12 mal durchlaufen (12 Bits)
110 OUT &H3FC,(&HFE AND INP (&H3FC)) ' SClk und CS auf LOW
120 IF MID$ (DIN$, 13-I,1)="0" THEN OUT &H3FC, (&HFD AND INP (&H3FC)) ELSE OUT &H3FC, (&H2 OR INP(&H3FC)) ' DIN wird seriell uebertragen
130 OUT &H3FC, (&H1 OR INP (&H3FC)) ' SClk auf HIGH
140 IF (INP (&H3FE) AND 16) = 16 THEN D = 0 ELSE D = 1 ' Datenbit einlesen
150 VOUT=VOUT+(D*B) : B=B/2 ' alle Bits skalieren und summieren
160 NEXT I ' Schleife erneut durchlaufen
170 REM
200 OUT &H3FC, (&HFD AND INP (&H3FC)) ' DIN und CS auf HIGH
210 OUT &H3FC, (&H2 OR INP (&H3FC)) ' DIN geht auf LOW
220 REM
230 REM FOR J=1 TO 20 : NEXT J ' CS fuer 52 Takte High (nur bei Bedarf)
240 REM
250 REM PRINT VOUT ' Anzahl der Schritte ausdrucken
260 VIN=(VOUT/1023)*REF ' Zahlenwert ausrechnen
270 PRINT VIN "Volt" ' Ergebnis ausgeben
275 If INKEY$="" THEN 50 ' bei Tastendruck Programmende
290 END ' Programmende
Объяснение кода из программы на Basic
Код:
Привет, пожалуйста объясните назначение масок в строках 110,120,130 . Данные адреса относятся к COM порту ( &HFE &HFD &H2 . &H1), если вам известно к которым именно под регистров они принадлежат напишите к которым именно.
[COLOR=Red]Научитесь оформлять свой код. Предупреждение.[/COLOR]