Hallo,
es funktioniert mit zwei PCF8574 und zwei 7-Segment-Anzeigen.
Es gibt ein kleines Problem.
Atmega8 soll die Byte-Zufallszahlen RND(255) so lange generieren, bis die Byte "7" für IC1 und "109" für IC2 wiedergibt. Es soll dann die Zahlen "75" auf dem Segment erscheinen.
Bei mir wird die IC2 jedoch gestoppt, nachdem die Byte "7" für IC1 erscheint.
Wie kann ich trennen, so dass IC2 weiterläuft bis die richtige Byte erscheint, nachdem IC1 gestoppt wird.
Wenn ich "Stop" rausnehme, zählt Atmega unendlich weiter ohne zu stoppen, auch wenn richtige Byte erscheint. Wie kann ich also "I2cwbyte B0" und "I2cwbyte B1" stoppen lassen?
Bild hier
Code:$regfile = "m8def.dat" $crystal = 16000000 Config Sda = Portc.4 Config Scl = Portc.5 Dim B0 As Byte Dim B1 As Byte 'IC1 PCF8574 I2cstart I2cwbyte &H40 I2cwbyte &H00 I2cstop 'IC2 PCF8574 I2cstart I2cwbyte &H42 I2cwbyte &H00 I2cstop 'I²C verbinden mit 7-Segment-Anzeige '################################### 'P0 = a = 1 'P1 = b = 2 'P2 = c = 4 'P3 = d = 8 'P4 = e = 16 'P5 = f = 32 'P6 = g = 64 'P7 = DP = 128 Do B0 = Rnd(255) 'Zufallszahlen generieren B1 = Rnd(255) 'Zufallszahlen generieren Waitms 50 I2cstart I2cwbyte &H40 I2cwbyte B0 I2cstart If B0 = 7 Then 'Zahl "7" erscheint auf 7-Segment-Anzeige I2cwbyte 7 Stop 'PCF8574#1 soll stoppen bzw. PCF8574#2 weiterlaufen lassen End If I2cstop I2cstart I2cwbyte &H42 I2cwbyte B1 I2cstart If B1 = 109 Then 'Zahl "5" erscheint auf 7-Segment-Anzeige I2cwbyte 109 Stop 'PCF8574#2 soll stoppen bzw. PCF8574#1 weiterlaufen lassen End If I2cstop Loop
Ich bin gehörlos.
http://www.christian-elektronik.de
Hallo
Wie ich das sehe, erzeugst Du B0 immer wieder neu und bleibst dadurch wieder in der ersten Schleife hängen, bis B0 den Wert 7 erhält.
Eine Lösung wäre z.B zwei Schleifen zu machen.
Mit freundlichen Grüßen
Benno
Wo man nicht mit Vernunft handelt, da ist auch Eifer nichts nütze; und wer hastig läuft, der tritt fehl.
Ein König richtet das Land auf durchs Recht; wer aber viel Steuern erhebt, richtet es zugrunde
Lesezeichen