// Definition von 3 i/o-Pins // diese könne beliebig verteilt sein //-------------- Definieren von 3 i/o-Pins ------------------------- #define _6963_D0_DDR DDRC #define _6963_D0_PORT PORTC #define _6963_D0_PIN PINC #define _6963_D0_P PC2 //--------------------Data 1-------------------------------------- #define _6963_D1_DDR DDRC #define _6963_D1_PORT PORTC #define _6963_D1_PIN PINC #define _6963_D1_P PC1 //--------------------Data 2-------------------------------------- #define _6963_D2_DDR DDRC #define _6963_D2_PORT PORTC #define _6963_D2_PIN PINC #define _6963_D2_P PC0 // // Definieren der Funktionen für die 3 Datenpins // //--------------------Data 0-------------------------------------- #define _6963_D0_OUT sbi (_6963_D0_DDR, _6963_D0_P) // Ausgang #define _6963_D0_IN cbi (_6963_D0_DDR, _6963_D0_P) // Eingang #define _6963_D0_H sbi (_6963_D0_PORT, _6963_D0_P) //WR -> H, PortC Pin2 setzen #define _6963_D0_L cbi (_6963_D0_PORT, _6963_D0_P) //WR -> L, PortC Pin2 löschen #define _6963_D0_D bit_is_set(_6963_D0_PIN, _6963_D0_P) // PortPin abfragen //--------------------Data 1-------------------------------------- #define _6963_D1_OUT sbi (_6963_D1_DDR, _6963_D1_P) // Ausgang #define _6963_D1_IN cbi (_6963_D1_DDR, _6963_D1_P) // Eingang -> Daten lesen #define _6963_D1_H sbi (_6963_D1_PORT, _6963_D1_P) //WR -> H, PortC Pin1 setzen #define _6963_D1_L cbi (_6963_D1_PORT, _6963_D1_P) //WR -> L, PortC Pin1 löschen #define _6963_D1_D bit_is_set(_6963_D1_PIN, _6963_D1_P) //--------------------Data 2-------------------------------------- #define _6963_D2_OUT sbi (_6963_D2_DDR, _6963_D2_P) // Ausgang #define _6963_D2_IN cbi (_6963_D2_DDR, _6963_D2_P) // Eingang-> Daten lesen #define _6963_D2_H sbi (_6963_D2_PORT, _6963_D2_P) //WR -> H, PortC Pin0 setzen #define _6963_D2_L cbi (_6963_D2_PORT, _6963_D2_P) //WR -> L, PortC Pin0 löschen #define _6963_D2_D bit_is_set(_6963_D2_PIN, _6963_D2_P) //---------------------------------------------------------- // Portpins für Daten auf Eingabe void _6963_DATA_input (void) { _6963_D0_IN; //6963 Data0 _6963_D1_IN; //6963 Data1 _6963_D2_IN; //6963 Data2 }; //---------------------------------------------------------- // Portpins für Daten auf Ausgabe void _6963_DATA_output (void) { _6963_D0_OUT; //6963 Data0 _6963_D1_OUT; //6963 Data1 _6963_D2_OUT; //6963 Data2 }; //---------------------------------------------------------- // Pins müssen zuvor als Ausgang geschaltet sein void _6963_write_DATA (unsigned int DATA) { if ((DATA & 0x01)== 0x01) {_6963_D0_H;} else {_6963_D0_L;}; if ((DATA & 0x02)== 0x02) {_6963_D1_H;} else {_6963_D1_L;}; if ((DATA & 0x04)== 0x04) {_6963_D2_H;} else {_6963_D2_L;}; }; //----------------------------------------------------------- // Pins müssen zuvor als Eingang geschaltet sein --> _6963_DATA_input unsigned int _6963_read_DATA (void) { unsigned int data; if (_6963_D0_D) {data = data +1;}; if (_6963_D1_D) {data = data +2;}; if (_6963_D2_D) {data = data +4;}; return(data); }; //-----------------------------------------------------------