Witam! Czy może mi ktoś pomóc w przerobieniu kodu do węża aby nie stosować Waitms tylko licznik, timer. Zależy mi aby była płynna regulacja prędkości zapalania kolejnych ledów na portach. Czy można zastosować zmienną typu integer w celu rozszerzenia reg.prędkości?[] $regfile = "m8def.dat" 'zadeklarowanie użytego procesora $crystal = 1000000 Config Pind.0 = Input Portd.0 = 1 Szybko Alias Pind.0 Config Pind.1 = Input Portd.1 = 1 Wolno Alias Pind.1 Config Pinb.0 = Output Portb.0 = 0 Led_1 Alias Portb.0 Config Pinb.1 = Output Portb.1 = 0 Led_2 Alias Portb.1 Config Pinb.2 = Output Portb.2 = 0 Led_3 Alias Portb.2 Config Pinb.3 = Output Portb.3 = 0 Led_4 Alias Portb.3 Config Pinb.4 = Output Portb.4 = 0 Led_5 Alias Portb.4 Config Pinb.5 = Output Portb.5 = 0 Led_6 Alias Portb.5 Config Pinb.6 = Output Portb.6 = 0 Led_7 Alias Portb.6 Config Pinb.7 = Output Portb.7 = 0 Led_8 Alias Portb.7 Enable Interrupts Dim Tempo As Byte At &H62 Tempo = 255 Do If Szybko = 0 Then Gosub Szybciej If Wolno = 0 Then Gosub Wolniej Led_8 = 1 Led_1 = 0 Waitms Tempo If Szybko = 0 Then Gosub Szybciej If Wolno = 0 Then Gosub Wolniej Led_1 = 1 Led_2 = 0 Waitms Tempo If Szybko = 0 Then Gosub Szybciej If Wolno = 0 Then Gosub Wolniej Led_2 = 1 Led_3 = 0 Waitms Tempo If Szybko = 0 Then Gosub Szybciej If Wolno = 0 Then Gosub Wolniej Led_3 = 1 Led_4 = 0 Waitms Tempo If Szybko = 0 Then Gosub Szybciej If Wolno = 0 Then Gosub Wolniej Led_4 = 1 Led_5 = 0 Waitms Tempo If Szybko = 0 Then Gosub Szybciej If Wolno = 0 Then Gosub Wolniej Led_5 = 1 Led_6 = 0 Waitms Tempo If Szybko = 0 Then Gosub Szybciej If Wolno = 0 Then Gosub Wolniej Led_6 = 1 Led_7 = 0 Waitms Tempo If Szybko = 0 Then Gosub Szybciej If Wolno = 0 Then Gosub Wolniej Led_7 = 1 Led_8 = 0 Waitms Tempo Loop End Szybciej: If Tempo < 0 Then Tempo = 0 Decr Tempo Return Wolniej: If Tempo > 255 Then Tempo = 255 Incr Tempo Return
|
|||








Re: Przeróbka programu "Wąż"
z tego co widzę to (jak dla mnie) jest kilka błędów. na przykład tu:
już w tym widzę co najmniej 2 błędy.
1 - zmienna byte przyjmuje wartości od 0 do 255 więc mniejsza od 0 nie będzie nigdy
2 - co w ogóle robi ta etykieta? dajmy na to że zmienna Tempo przyjęła by wartość mniejszą niż 0 i co wtedy? instrukcja THEN sprowadzi ją do wartości 0 a linijkę niżej instrukcja DECR spowrotem zmniejszy jej wartość poniżej 0 i tak wkoło. tak samo jest w etykiecie Wolniej.
a co do zamiany WAITMS na timer to trzeba dodać zmienna typu (na przykład) WORD i przy naciskaniu przycisków zwiększać lub zmniejszać jej wartość, a następnie wpisywać wartość tej zmiennej do timera.
a pomijając to wszystko to (jak dla mnie) program w ogole źle jest napisany i jakoś tak chaotycznie. trzeba by go całkowicie przebudować, albo napisać od początku.
tyle na początek.
Moja strona w powijakach
Re: Przeróbka programu "Wąż"
Dzięki, za zainteresowanie ,program zaczerpnięty gdzieś z netu, niby działa ale ta regulacja prędkości jest do bani. Kolego matrix,jeśli to nie problem dla Ciebie to możesz podać przykład w Bascom jak przy naciskaniu przycisków zwiększać lub zmniejszać wartość zmiennej, a następnie wpisywać wartość tej zmiennej do timera.
Re: Przeróbka programu "Wąż"
mówisz i masz jakiś tam gotowy soft. program napisany na szybko, ale kompilator błędów nie wywala więc można wnioskować że będzie działać ok. nie sprawdzałem.
zapomniałem dodać. co ile ma być wywoływane przerwanie? w jakich granicach? bo trzeba odpowiednio dobra timery i podział. w tym przykładzie będzie to mało zauważalne.
Moja strona w powijakach