das ist schlecht - ich progge in pascal. aber so schwer sollte es nicht sein. die basisadresse ist 40h schreiben/41h lesen wenn A0-A2 auf masse liegt.

ich weiß nicht, wie das bei deinem compiler ist: ich muß die oben 7 bits nach rechts schieben und hab so automatisch 20h schreibend und lesend. der compiler macht daraus automatisch 40h und 41h je nach dem ob ich I2COut oder I2CInp mache .

ich weiß nicht, ob dir das so etwas bringt ....

initialisierung beider ports als output

I2COut($20,$06,$00); //adresse, configration-register 6, output
I2COut($20,$07,$00); //adresse, configration-register 7, output

ausgabe von daten:

I2COut($20,$02,Out1); //Bit 0-7
I2COut($20,$03,Out2); //Bit 8-15



wenn du etwas einlesen willst, muß so konfiguriert werden:

I2COut($20,$06,$FF); //adresse, configration-register 6, input
I2COut($20,$07,$FF); //adresse, configration-register 7, input

es kann jeder pin unabhängig von den anderen als input oder output eingestellt werden - 1 = input / 0 = output

lesen der eingänge mit

I2CInp($20,$00,Data1);
I2CInp($20,$01,Data2);


interessant ist vielleicht noch die möglichkeit die eingänge zu invertieren:

I2COut($20,$04,$00); //Polarity Inversion Register Bit 0-7
I2COut($20,$05,$00); //Polarity Inversion Register Bit 8-15

0 = "normal" .... 1 = invertiert

wenn du konkrete fragen hast: fragen