' COLLEGAMENTI ALLA PORTA PARALLELA: ' PIN MAX147 PORTA PARALLELA ' DIN = D5 ' SCLK = D7 ' CS = D6 ' DOUT = BUSY ' ALIMENTAZ. = C2 ' 1 A = 0.546 lpt = 958 ' INDIRIZZO PER LPT1 max usc = 956 ' INDIRIZZO PER LPT1 rele' RITARDO = 1 ' IN FUNZIONE DELLA VELOCITA' DEL PC VREF = 2.5 ' VALORE DI VREF SUL PIN 11 DEL MAX147 ' DEFINISCE I PESI DELLE USCITE E DELL'INGRESSO din = 1 cs = 2 DOUT = 128 clk = 8 vcc = 4 rele = 0 ' LEGGE I DATI DI CONFIGURAZIONE PER IL MAX147 RESTORE FOR I = 0 TO 7: READ CONF(I): NEXT I DATA 142,206,158,222,174,238,190,254 OUT 958, 10 'inizio CLS LOCATE 15, 1 PRINT "PREMERE UN TASTO PER USCIRE" 10 ' lettura FOR ingr = 0 TO 7 CONF = CONF(ingr) ' LEGGE BYTE DI CONFIGURAZIONE GOSUB LEGGIMAX ' LEGGE LA TENSIONE volt = dato * (VREF / 4095) LOCATE 3 + ingr, 1 PRINT "INGRESSO"; ingr; " "; PRINT USING "#.####"; volt; PRINT " VOLT" FOR I = 1 TO RITARDO: NEXT I ' RITARDO PER PC VELOCI NEXT ingr a$ = INKEY$ IF a$ = "" THEN 10 20 OUT lpt, din + cs + clk ' TOGLIE VCC END ' E FINISCE '******* ROUTINE PER LEGGERE I DATI DAL MAX147 ******** LEGGIMAX: OUT lpt, din + cs + clk + vcc ' CS = 0, ATTIVA MAX147 FOR I = 7 TO 0 STEP -1 ' INVIA BYTE DI CONFIGURAZIONE IF (CONF AND 2 ^ I) = (2 ^ I) THEN OUT lpt, cs + clk + vcc ELSE OUT lpt, cs + clk + din + vcc END IF OUT lpt, cs + din + vcc ' IMPULSO DI CLOCK OUT lpt, cs + din + clk + vcc NEXT I dato = 0 FOR I = 11 TO 0 STEP -1 ' RICEVE IL DATO A 12 BIT OUT lpt, cs + din + vcc OUT lpt, cs + din + clk + vcc IF (INP(lpt - 1) AND DOUT) = 0 THEN dato = dato + 2 ^ I NEXT I OUT lpt, din + clk + vcc ' CS A 1, MAX147 IN STANDBY RETURN