Egy fény rulet-et készítek (van 15 LED sorba villognak amikor megnyomok egy gombot megáll a villogás, amikor egy másik gombot elindul). Írtam egy programot (8 LED-re a próbálgatáshoz):
$regfile = "2313def.dat"
$crystal = 4000000
Config Pind.2 = Input
Config Pind.3 = Input
Config Portb = Output
Config Int0 = Falling
Config Int1 = Falling
Config Timer1 = Timer , Prescale = 256
Dim Szamlalo As Word
Szamlalo = 0
On Int0 Indit
On Int1 Allj
Enable Timer1
Enable Interrupts
Enable Int0
Enable Int1
Start Timer1
Do
Szamlalo = Timer1
If Szamlalo > 0 Then
Portb = 1
Waitms 50
End If
Szamlalo = Timer1
If Szamlalo > 8192 Then
Portb = 2
Waitms 50
End If
Szamlalo = Timer1
If Szamlalo > 16385 Then
Portb = 4
Waitms 50
End If
Szamlalo = Timer1
If Szamlalo > 24577 Then
Portb = 8
Waitms 50
End If
Szamlalo = Timer1
If Szamlalo > 32769 Then
Portb = 16
Waitms 50
End If
Szamlalo = Timer1
If Szamlalo > 40960 Then
Portb = 32
Waitms 50
End If
Szamlalo = Timer1
If Szamlalo > 49152 Then
Portb = 64
Waitms 50
End If
Szamlalo = Timer1
If Szamlalo > 57345 Then
Portb = 128
Waitms 50
End If
Loop
Indit:
Start Timer1
Waitms 75
Gifr = 64
Return
Allj:
Stop Timer1
Waitms 75
Gifr = 64
Return
End
A LED-ek nagyábbol csak össze vissza villognak és amikor megynyomom az állj gombot megáll egy pillanatra a villogás, aztán folytatódik. Mi a baj??? Segítsetek!
A hozzászólást 1 alkalommal szerkesztették, utoljára Bence 2007. december 16. vasárnap, 13:13-kor.
Hello! Módosítottam a programot! Most csak az a baj, hogy elkezd világítani az 1. LED aztán az 1. és a 2., aztán az 1., 2. és a 3. stb... Nekm úgy kéne, hogy (csak) az 1., aztán (csak) a 2., aztán (csak) a 3., stb... Miért nem így működik???
$regfile = "2313def.dat"
$crystal = 4000000
Config Pind.2 = Input
Config Pind.3 = Input
Config Portb = Output
Config Int0 = Falling
Config Int1 = Falling
Config Timer1 = Timer , Prescale = 256
Dim Szamlalo As Word
Szamlalo = 0
On Int0 Allj
On Int1 Indit
Enable Interrupts
Enable Int0
Enable Int1
Enable Timer1
Do
Szamlalo = Timer1
If Szamlalo > 0 Then
Portb = 1
End If
Szamlalo = Timer1
If Szamlalo > 8192 Then
Portb = 2
End If
Szamlalo = Timer1
If Szamlalo > 16385 Then
Portb = 4
End If
Szamlalo = Timer1
If Szamlalo > 24577 Then
Portb = 8
End If
Szamlalo = Timer1
If Szamlalo > 32769 Then
Portb = 16
End If
Szamlalo = Timer1
If Szamlalo > 40960 Then
Portb = 32
End If
Szamlalo = Timer1
If Szamlalo > 49152 Then
Portb = 64
End If
Szamlalo = Timer1
If Szamlalo > 57345 Then
Portb = 128
End If
Loop
End
Indit:
Start Timer1
Waitms 75
Gifr = 64
Return
Allj:
Stop Timer1
Waitms 75
Gifr = 64
Return
$regfile = "2313def.dat"
$crystal = 4000000
Config Pind.2 = Input
Config Pind.3 = Input
Config Portb = Output
Config Int0 = Falling
Config Int1 = Falling
Config Timer1 = Timer , Prescale = 256
Dim Szamlalo As Word
Szamlalo = 0
On Int0 Allj
On Int1 Indit
Enable Interrupts
Enable Int0
Enable Int1
Enable Timer1
Do
Szamlalo = Timer1
If Szamlalo = 0 Then
Portb = 1
End If
Szamlalo = Timer1
If Szamlalo = 8192 Then
Portb = 2
End If
Szamlalo = Timer1
If Szamlalo = 16385 Then
Portb = 4
End If
Szamlalo = Timer1
If Szamlalo = 24577 Then
Portb = 8
End If
Szamlalo = Timer1
If Szamlalo = 32769 Then
Portb = 16
End If
Szamlalo = Timer1
If Szamlalo = 40960 Then
Portb = 32
End If
Szamlalo = Timer1
If Szamlalo = 49152 Then
Portb = 64
End If
Szamlalo = Timer1
If Szamlalo = 57345 Then
Portb = 128
End If
Loop
End
Indit:
Start Timer1
Waitms 75
Gifr = 64
Return
Allj:
Stop Timer1
Waitms 75
Gifr = 64
Return
$regfile = "2313def.dat"
$crystal = 4000000
Config Pind.2 = Input
Config Pind.3 = Input
Config Portb = Output
Config Int0 = Falling
Config Int1 = Falling
Config Timer1 = Timer , Prescale = 256
Dim Szamlalo As Word
Szamlalo = 0
On Int0 Allj
On Int1 Indit
Enable Interrupts
Enable Int0
Enable Int1
Enable Timer1
Start Timer1
Do
Szamlalo = Timer1
If Szamlalo > 0 Then
If Szamlalo < 8192 Then
Portb = 1
End If
End If
Szamlalo = Timer1
If Szamlalo > 8192 Then
If Szamlalo < 16385 Then
Portb = 2
End If
End If
Szamlalo = Timer1
If Szamlalo > 16385 Then
If Szamlalo < 24577 Then
Portb = 4
End If
End If
Szamlalo = Timer1
If Szamlalo > 24577 Then
If Szamlalo < 32769 Then
Portb = 8
End If
End If
Szamlalo = Timer1
If Szamlalo > 32769 Then
If Szamlalo < 40960 Then
Portb = 16
End If
End If
Szamlalo = Timer1
If Szamlalo > 40960 Then
If Szamlalo < 49152 Then
Portb = 32
End If
End If
Szamlalo = Timer1
If Szamlalo > 49152 Then
If Szamlalo < 57345 Then
Portb = 64
End If
End If
Szamlalo = Timer1
If Szamlalo > 57345 Then
If Szamlalo < 65535 Then
Portb = 128
End If
End If
Loop
End
Indit:
Start Timer1
Waitms 75
Gifr = 64
Return
Allj:
Stop Timer1
Waitms 75
Gifr = 64
Return