Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "typeDef.c"
- // include the library code:
- #include <LiquidCrystal.h>
- // initialize the library with the numbers of the interface pins
- LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
- #define sda REGISTER_BIT(PORTB,4) //PORT-Register beim schreiben
- #define sdain REGISTER_BIT(PINB,4)//PIN-Register beim lesen, Änderung in Funktion bitein falls notwendig
- #define scl REGISTER_BIT(PORTB,5) //PORT-Register beim schreiben
- #define tsda REGISTER_BIT(DDRB,4) //DDR-Register für die Datenrichtung
- #define tscl REGISTER_BIT(DDRB,5) //DDR-Register für die Datenrichtung
- //#include "IICAtmega328P.c"
- int zeit = 1;
- //void bstart(void);
- void setup() {
- lcd.begin(16, 2); //start des LCDs mit 16 Zeichen auf 2 Zeilen
- }
- void bstart(void) // Startbedingung generieren
- {
- sda=1;
- tsda=1; //sda,scl-Ausgänge
- tscl=1;
- scl=0;
- delay(zeit);
- scl=1;
- delay(zeit);
- delay(zeit);
- delay(zeit);
- delay(zeit);
- sda=0;
- delay(zeit);
- delay(zeit);
- delay(zeit);
- delay(zeit);
- delay(zeit);
- scl=0;
- delay(zeit);
- delay(zeit);
- }
- void bstop(void) // Stopbedingung generieren
- {
- tsda=1; //sda,scl-Ausg�nge
- sda=0;
- delay(zeit);
- delay(zeit);
- delay(zeit);
- scl= 1;
- delay(zeit);
- delay(zeit);
- delay(zeit);
- sda=1;
- delay(zeit);
- delay(zeit);
- scl= 0; //? eigentlich hochomig machen
- delay(zeit);
- delay(zeit);
- delay(zeit);
- }
- unsigned char bitein (void) // Ein Bit Einlesen
- {
- Bitvar din;
- tsda=0; //sda input
- tscl=1;
- sda=1; // braucht man nicht
- scl=1;
- delay(zeit);
- delay(zeit);
- delay(zeit);
- delay(zeit);
- delay(zeit);
- din.b0=sda; //Notfalls in Pin-Register ändern
- scl=0;
- return din.asByte;
- }
- void bitaus (Bitvar dout) // Ein Bit Schreiben
- {
- Bitvar out;
- out.asByte = dout.asByte;
- tsda=1; //sda output
- sda=out.b7;
- delay(zeit);
- scl=1;
- delay(zeit);
- delay(zeit);
- delay(zeit);
- delay(zeit);
- scl=0;
- }
- unsigned char lesen(void) // Byte empfangen
- {
- Bitvar DATEIN;
- unsigned char i;
- for(i=0;i<8;i++)
- {
- DATEIN.asByte =DATEIN.asByte<<1;
- if( bitein() == 1 ) DATEIN.b0=1;
- }
- return DATEIN.asByte;
- }
- unsigned char schreib (unsigned char dout)
- {
- unsigned char i ;
- Bitvar DATOUT;
- DATOUT.asByte = dout;
- for(i=0;i<8;i++)
- {
- //bitaus(DATOUT.asByte);
- tsda=1; //sda output
- sda = DATOUT.b7;
- delay(zeit);
- scl=1;
- delay(zeit);
- delay(zeit);
- delay(zeit);
- delay(zeit);
- scl=0;
- DATOUT.asByte = DATOUT.asByte << 1;
- }
- return bitein(); //if din=1 dan fehler
- }
- //#include "IICAtmega328P.c"
- void loop() {
- bstart(); // Start - Bedingung einstellen
- schreib(0b01000000); // Bauteiladresse senden zum Schreiben/letztes Bit = 1 wenn lesen
- int x=1;
- int z;
- for(x; x<=128; )
- {
- lcd.setCursor(3,0); // Setzt die Position auf Zeichen 3 in Zeile 1
- int y = 255-x;
- z= 255-y;
- lcd.print(z); // Ausgabe von z auf LCD
- x=x+x;
- schreib(y); // Datenbyte beschreiben
- delay(1000); // 1 Sekunde warten
- }
- lcd.clear(); // LCD leeren
- bstop(); // Stop - Bedingung einstellen
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement