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]