#if IO_MUX_DA if (!MuxAufgabe) { MUX_CLOCK_SERIELL = 0; if (AnalogWertUebernehmen) { AnalogEingang[AnalogWertUebernehmen-1] = *((__dataSDCC unsigned short*)(&(ADRESL))); AnalogWertUebernehmen = 0; //Idee. Vielleicht mehr mal durchlaufen ?. Durchschnitt bilden? } else AnalogEingang[MUX_ANALOG_EINGAENGE]=*((__dataSDCC unsigned short*)(&(ADRESL))); if(MUX_CLOCK_PARALLEL) //Alle Ausgänge wurden durch setzen MUX_CLOCK_PARALLEL in MuxAufgabe=1 an externe PIN von 74HC595 { //ausgegeben. Jetzt auch Adresse S0-S1-S2 an beiden 74HC4051 sind stabil und adressierte Eingänge MUX_CLOCK_PARALLEL = 0; //werden übernommen #if ZWEI_ZWEI_MUX_CHIP if (MuxEingangNr=MUX_EINGAENGE) MuxEingangNr = 0; } else ADCON0 = ADCON0_InitWertAN0; if (MuxAusgangNr==2) //Ausgänge von Ausgang[0] bis Ausgang[2] für Ansteuerung von MuxEeingängen Adressen S0 bis S2 verwendet { Ausgang[2]=MuxEingangNr>>2; //S2 von 74HC4051 } else if(MuxAusgangNr==1) { Ausgang[1]=MuxEingangNr>>1; //S1 von 74HC4051 } else if(!MuxAusgangNr) { Ausgang[0]=MuxEingangNr; //S0 von 74HC4051 } MUX_DATEN_SERIELL = Ausgang[MuxAusgangNr]&1; //Ausgang[] an Serielepin von 74HC595 if(!MuxAusgangNr) //Alle Ausgänge von Ausgang[MUX_AUSGAENGE - 1] bis Ausgang[0] sind schon { MuxAusgangNr = MUX_AUSGAENGE - 1; //in zwei 74HC595 über Serielepin "reingetaktet" MuxAufgabe=1; } else --MuxAusgangNr; //den nächste Ausgang von Ausgang[] bereit zum seriellen raustakten MUX_CLOCK_SERIELL = 1; //Serielleclock von 74HC595 setzen - Daten werden verschoben }else //Muxaufgabe 1: Daten von seriellen Register von 74HC595 paraller in Qa bis Qg { // MUX_CLOCK_SERIELL = 0; MuxAufgabe=0; MUX_CLOCK_PARALLEL =1; //Daten von beiden 74HC595 gehen nach "Aussen" also zum Buchsen von Ausgängen } #endif