Witam.
Szukam pomocy w napisaniu kodu do wydaje mi się prostego układu, chodzi o sterowanie 20 diodami led.
Zasada działania
Wciskam przycisk (np zwarcie do masy) zapalają się diody od prawej do lewej, ale zapala się dioda 1 i świeci potem 2 i świeci, i tak dalej aż do 20 i wtedy świecą już wszystkie. Następnie po np 3 sekundach zaczynają gasnąć od diody 20 do 1 aż zgasną wszystkie. Czynność ta miała by się uruchamiać po naciśnięciu włącznika.
Oraz po naciśnięciu 2 przycisku zaczyna się robić to samo ale w odwrotnej kolejności czyli od lewej do prawej.
A jeszcze czas zapalania się kolejnych diod to 0.4s.
Robię makietę pasa startowego, myślę że potrafię zaprogramować µC bo kiedyś się trochę bawiłem ale nie potrafię napisać kodu..
Po rozmowie z kolegą Mictronic dostałem kod ale na atmega16:
switche są na PA.0 i PA.1
LED na PORTB,C,D
kwarc wewnętrzny standardowy 1Mhz
Czy dało by się zmodyfikować całość żeby działało by to na atmega8?
Pozdrawiam.
Proszę, zgodnie z regulaminem pkt 11.1, o usunięcie słów PROBLEM lub/i POMOC z tytułu. Prośba dotyczy także wszelkich wariacji typu: kłopot, pomocy, problemy itd.
Proszę równocześnie, o poprawienie błędów w poście. - arnoldziq
Szukam pomocy w napisaniu kodu do wydaje mi się prostego układu, chodzi o sterowanie 20 diodami led.
Zasada działania
Wciskam przycisk (np zwarcie do masy) zapalają się diody od prawej do lewej, ale zapala się dioda 1 i świeci potem 2 i świeci, i tak dalej aż do 20 i wtedy świecą już wszystkie. Następnie po np 3 sekundach zaczynają gasnąć od diody 20 do 1 aż zgasną wszystkie. Czynność ta miała by się uruchamiać po naciśnięciu włącznika.
Oraz po naciśnięciu 2 przycisku zaczyna się robić to samo ale w odwrotnej kolejności czyli od lewej do prawej.
A jeszcze czas zapalania się kolejnych diod to 0.4s.
Robię makietę pasa startowego, myślę że potrafię zaprogramować µC bo kiedyś się trochę bawiłem ale nie potrafię napisać kodu..
Po rozmowie z kolegą Mictronic dostałem kod ale na atmega16:
switche są na PA.0 i PA.1
LED na PORTB,C,D
kwarc wewnętrzny standardowy 1Mhz
Kod:
$sim
$regfile = "m16def.dat"
$crystal = 1000000 'przykładowo masz zegar 1Mhz
Ddrb = 255
Ddrc = 255
Ddrd = 255
Ddra.0 = 0
Ddra.1 = 0
Dim A As Byte
Dim Flaga As Bit
Dim Program As Bit
Do
If Flaga = 0 Then
Porta.0 = 1
Porta.1 = 1
If Pina.0 = 0 Then : Program = 0 : Flaga = 1 : End If
If Pina.0 = 0 Then : Program = 1 : Flaga = 1 : End If
End If
If Flaga = 1 Then
If Program = 0 Then
Portb.0 = 1
For A = 1 To 7
Shift Portb , Left , 1
waitms 150
Next A
Portc.0 = 1
Portb.7 = 0
For A = 1 To 7
Shift Portc , Left , 1
waitms 150
Next A
Portd.0 = 1
Portc.7 = 0
For A = 1 To 7
Shift Portd , Left , 1
waitms 150
Next A
For A = 1 To 7
Shift Portd , Right , 1
waitms 150
Next A
Portc.7 = 1
Portd.0 = 0
For A = 1 To 7
Shift Portc , Right , 1
waitms 150
Next A
Portb.7 = 1
Portc.0 = 0
For A = 1 To 7
Shift Portb , Right , 1
waitms 150
Next A
Portb.0 = 0
End If
If Program = 1 Then
Portd.7 = 1
For A = 1 To 7
Shift Portd , Right , 1
waitms 150
Next A
Portc.7 = 1
Portd.0 = 0
For A = 1 To 7
Shift Portc , Right , 1
waitms 150
Next A
Portb.7 = 1
Portc.0 = 0
For A = 1 To 7
Shift Portb , Right , 1
waitms 150
Next A
Portb.0 = 1
For A = 1 To 7
Shift Portb , Left , 1
waitms 150
Next A
Portc.0 = 1
Portb.7 = 0
For A = 1 To 7
Shift Portc , Left , 1
waitms 150
Next A
Portd.0 = 1
Portc.7 = 0
For A = 1 To 7
Shift Portd , Left , 1
waitms 150
Next A
End If
Portb = 0
Portc = 0
Portd = 0
Flaga = 0
End If
Loop Czy dało by się zmodyfikować całość żeby działało by to na atmega8?
Pozdrawiam.
Proszę, zgodnie z regulaminem pkt 11.1, o usunięcie słów PROBLEM lub/i POMOC z tytułu. Prośba dotyczy także wszelkich wariacji typu: kłopot, pomocy, problemy itd.
Proszę równocześnie, o poprawienie błędów w poście. - arnoldziq
