Witam
Właśnie piszę program do sterowania diodami na dyskotekę tzn. wąż świetlny.
Projekt jeszcze nie jest skończony ale niby działa i niestety pojawił się problem.
Przycisk Sv1 Alias Pind.3 służy jak na razie do wyboru programu (zwiększa o jeden) Na razie jest 6 programów.
Owy przycisk działa na zasadzie przerwania od przepełnienia timer0, które to wywołuje pod program "Corobic"
Problem polega na tym, że po przyciśnięciu przycisku Sv1 nie włącza się od razu kolejny program tylko dopiero wtedy gdy zostanie zakończona instrukcja FOR w danym programie.
Czy istnieje możliwość natychmiastowego zaprzestania pętli FOR..?
Do regulacji prędkości używam potencjometru i ADC
Właśnie piszę program do sterowania diodami na dyskotekę tzn. wąż świetlny.
Projekt jeszcze nie jest skończony ale niby działa i niestety pojawił się problem.
Przycisk Sv1 Alias Pind.3 służy jak na razie do wyboru programu (zwiększa o jeden) Na razie jest 6 programów.
Owy przycisk działa na zasadzie przerwania od przepełnienia timer0, które to wywołuje pod program "Corobic"
Problem polega na tym, że po przyciśnięciu przycisku Sv1 nie włącza się od razu kolejny program tylko dopiero wtedy gdy zostanie zakończona instrukcja FOR w danym programie.
Czy istnieje możliwość natychmiastowego zaprzestania pętli FOR..?
Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pinb.2 = Output
Config Pinb.3 = Output
Config Pinb.4 = Output
Config Pinb.5 = Output
Config Pinb.6 = Input
Config Pinb.7 = Input
Config Portd = &B11000111
Config Adc = Single , Prescaler = Auto , Reference = Avcc
'przerwanie od opadającego zbocza
Config Timer0 = Timer , Prescale = 64
On Timer0 Corobic
Config Debounce = 60
Portb = &B11111111
Portd = &B11111111
Dim A As Byte
Dim B As Byte
Dim C As Byte
Dim Ktprog As Byte
Dim W As Word
Start Adc
Enable Interrupts
Enable Timer0
Sv1 Alias Pind.3
Sv2 Alias Pind.4
Sv3 Alias Pind.5
Ktprog = 1
Do
If Ktprog = 1 Then
Restore Dane
For A = 0 To 31
Read B
Rotate B , Right , 2
Portb = B
Portd = B Or &B00111111
W = Getadc(1)
W = W + 20
Waitms W
Next A
End If
If Ktprog = 2 Then
Restore Dane
For A = 0 To 31
If A = 16 Then Restore Dane
Read B
Rotate B , Right , 2
Portb = B
Portd = B Or &B00111111
W = Getadc(1)
W = W + 20
Waitms W
Next A
Restore Dane
C = 15
For A = 0 To 31
If C = 31 Then C = 15
C = C + 1
B = Lookup(c , Dane)
Rotate B , Right , 2
Portb = B
Portd = B Or &B00111111
W = Getadc(1)
W = W + 20
Waitms W
Next A
End If
If Ktprog = 3 Then
Restore Dane2
For A = 0 To 15
Read B
Rotate B , Right , 2
Portb = B
Portd = B Or &B00111111
W = Getadc(1)
W = W + 20
Waitms W
Next A
End If
If Ktprog = 4 Then
Restore Dane3
For A = 0 To 7
Read B
Rotate B , Right , 2
Portb = B
Portd = B Or &B00111111
W = Getadc(1)
W = W + 20
Waitms W
Next A
End If
If Ktprog = 5 Then
Restore Dane4
For A = 0 To 11
Read B
Rotate B , Right , 2
Portb = B
Portd = B Or &B00111111
W = Getadc(1)
W = W + 20
Waitms W
Next A
End If
If Ktprog = 6 Then
For B = 255 To 0 Step -1
Rotate B , Right , 2
Portb = B
Portd = B Or &B00111111
W = Getadc(1)
W = W + 20
Waitms W
Next A
For B = 0 To 255
Rotate B , Right , 2
Portb = B
Portd = B Or &B00111111
W = Getadc(1)
W = W + 20
Waitms W
Next A
End If
loop
End
Corobic:
Debounce Sv1 , 0 , Robic , Sub
Return
Robic:
Incr Ktprog
If Ktprog = 7 Then Ktprog = 1
Return
''''''''''''
Dane:
Data &B01111111 , &B00111111 , &B00011111 , &B00001111 , &B00000111 , &B00000011 , &B00000001 , &B00000000,
Data &B10000000 , &B11000000 , &B11100000 , &B11110000 , &B11111000 , &B11111100 , &B11111110 , &B11111111,
Data &B11111110 , &B11111100 , &B11111000 , &B11110000 , &B11100000 , &B11000000 , &B10000000 , &B00000000,
Data &B00000001 , &B00000011 , &B00000111 , &B00001111 , &B00011111 , &B00111111 , &B01111111 , &B11111111
Dane2:
Data &B01111111 , &B00111111 , &B00011111 , &B00001111 , &B00000111 , &B00000011 , &B00000001 , &B00000000,
Data &B00000001 , &B00000011 , &B00000111 , &B00001111 , &B00011111 , &B00111111 , &B01111111 , &B11111111
Dane3:
Data &B11100111 , &B11000011 , &B10000001 , &B00000000 , &B10000001 , &B11000011 , &B11100111 , &B11111111
Dane4:
Data &B00111111 , &B10011111 , &B11001111 , &B11100111 , &B11110011 , &B11111001 , &B11111100 , &B11111001,
Data &B11110011 , &B11100111 , &B11001111 , &B10011111Do regulacji prędkości używam potencjometru i ADC