BASCOM: Přerušení přetečením Timer0 začne fungovat při Int0

Tak jsem trochu poupravil časy původního programu, ale stále se to chová jinak, než bych chtěl. Na začátku má zablikat nastřídačku zelená led na portu B1 nastřídačku s červenou led na portu B.2 Poté má blikat zelená led a zhruba 1x za 3,5sekundy by měla 3x bliknout červená led. První fáze proběhne, ale pak bliká jen zelená led a červená led, jíž by mělo ovládat přerušení jen svítí. A vůbec nevím proč.

[code] ’ Preuseni

$regfile = “m48def.dat”
$crystal = 8000000

Dim A As Byte
Dim B As Integer

Config Portb = Output
Config Timer0 = Timer , Prescale = 1024
On Ovf0 Prerus
Enable Timer0

Enable Interrupts
Start Timer0

B = 0

Portb.1 = 1 ’ Zelena led
Portb.2 = 1 ’ Cervena led

For A = 1 To 10 ’ Zablikej Ledkami
Portb.1 = 0
Portb.2 = 1
Waitms 15
Portb.1 = 1
Portb.2 = 0
Waitms 15
Next

Portb.1 = 1
Portb.2 = 1

Do ’ Hlavni cyklus
Portb.1 = 0 ’ Blikni zelenu led
Waitms 20
Portb.1 = 1
Waitms 20 ’ Konec hlavniho cyklu
Loop

’ Podprogram

Prerus: ’ Podprogram vzkonavany pri preruseni
’ Zvys B o jednu
Incr B ’ Pokud uplynuko cca 3.5 sek blikni cervenou led
’ 8000000/1024 = 7812.5Hz
’ Kmitocet zakladni / preddelicka
’ = vysledny pocet preruseni za sekundu
’ 27500 / 7812.5 = 3.52 sek
If B > 50 Then
For A = 1 To 3
Portb.2 = 0
Waitms 20
Portb.2 = 1
Waitms 30
Next
Else
B = 0
End If
Return[/code]