hallo,
ich nehme meistens counter als timer her. wenns genauer gehen muß nen timer als takt und counter zum vervielfachen. im folgenden beispiel blinkt sekbyte im sekundentakt (nicht genau, aber das spielt hier keine rolle) und minbyte soll alle 9 sek blinken.
meine problem: manchmal blinkt minbyte alle 9 sek, manchmal alle 10 sek.
irgendwie denk ich, liegt es daran dass ich bei xxxbyte=0 gleichzeitig ein anderes byte runterzählen lasse und das xxxbyte wieder auf den anfangswert setze.
läuft jetzt die schleife nochmal durch und xxxbyte ist immer noch 0, dann wird eben das andere byte nochmal runtergezählt.
so ganz hab ich das leider noch nicht kapiert, wann ein befehl gelesen wird und wann er ausgeführt wird.
oder liegts an was anderem![]()
![]()
Code:$regfile = "attiny26.dat" $crystal = 1000000 Ddrb = &B00011100 'Bit 0, 1 auf Eingang Portb = &B00000011 Config Timer0 = Timer , Prescale = 1024 'Timer0 als timer definieren, teiler 1024 ' Const Preset = 5 'zählt von 1 bis 255 On Timer0 Marke Timer0 = 230 Enable Timer0 Enable Interrupts Dim Sekbyte As Byte Dim Minbyte As Byte Sekbyte = 0 Minbyte = 9 Do If Sekbyte < 5 Then Portb.4 = 1 Else Portb.4 = 0 End If If Sekbyte = 20 Then Decr Minbyte End If If Sekbyte = 20 Then Sekbyte = 0 End If If Minbyte = 9 Then Portb.3 = 1 Else Portb.3 = 0 End If If Minbyte = 0 Then Minbyte = 9 End If Loop Marke: Timer0 = 230 If Pinb.0 = 0 Then Incr Sekbyte End If Return







Zitieren


Lesezeichen