Pytania, kody i porady dotyczące nie tylko Bascom.
-
Oldman
- Posty: 61
- Rejestracja: 19 cze 2019, 11:15
Post
autor: Oldman » 04 lut 2021, 13:58
Może ktoś mi wytłumaczyć dlaczego Bascom oznacza niektóre polecenia jako "Dead Code" choć wg mnie wcale takie nie są. Np. tu linia 8 i 9 jawi się na szaro (widać to tylko w Bascomie, tu nie):
If C = 8 Then
C = 0
Shift R , Right , 3
Select Case R:
Case Is > 100
Portb.3 = 1
A = 1
B = 0
Case Is < 70
Portb.4 = 0
A = 0
B = 1
End Select
R = 0
End If
-
niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
-
Kontakt:
Post
autor: niveasoft » 04 lut 2021, 14:21
Z ciekawości sprawdziłem i u mnie problem nie występuje. Niemniej kiedyś to już widziałem i coś tam w kodzie lekko zmieniłem w innym zupełnie miejscu i tez mu przeszło.
Przy okazji to zawsze w Select Case jadę od mniejszej do większej chociaż w Select można porównywać do zmiennych i te mogą miec rózne wartości więc to nie powinno miec znaczenia.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
-
Oldman
- Posty: 61
- Rejestracja: 19 cze 2019, 11:15
Post
autor: Oldman » 04 lut 2021, 15:46
Jednak zamiana kolejności nie pomogła. Oczywiście ten fragment to część większego programu więc efekty mogą być różne. Załączam cały program. Jest to wersja robocza dlatego coś tam jeszcze pozmieniam, uproszczę.
$regfile = "attiny25.dat"
$crystal = 1000000
Dim A As Bit 'A flaga dla pomiaru czasu
Dim B As Bit
Dim C As Byte
Dim P As Byte
Dim R As Word
Dim Czas As Byte
Config Portb = &B11111011 ' pin7 (PB2) to we (INT0), pin2 (PB3) WYJ1, pin3 (PB4) WY2
Portb = &B00000000
Config Watchdog = 2048
Wait 3
Start Watchdog
Config Timer1 = Timer , Prescale = 1024 ' Przerwanie co 0,26214400 sekundy, 19 cykli to ok. 5 sekund
Config Timer0 = Timer , Prescale = 8
On Timer1 Cykl
Config Int0 = Rising
On Int0 Pomiar
Enable Int0
Enable Timer1
Enable Interrupts
'########################################################################################################
Do
Loop
End
'###########################################################################################################
Pomiar:
Timer0 = 0
Waitus 800
Start Timer0
While Pinb.2 = 1
Wend
Stop Timer0
P = Timer0
Incr C
R = R + P
If C = 8 Then
C = 0
Shift R , Right , 3
Select Case R:
Case Is < 70
Portb.4 = 0
A = 0
B = 1
Case Is > 100
Portb.3 = 1
A = 1
B = 0
End Select
R = 0
End If
Reset Watchdog
Return
Cykl:
If A = 1 And B = 0 Then
Incr Czas
If Czas => 20 Then
Portb.4 = 1
B = 1
Czas = 0
End If
End If
If A = 0 And B = 1 Then
Incr Czas
If Czas => 30 Then
Portb.3 = 0
B = 0
Czas = 0
End If
End If
Return
-
niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
-
Kontakt:
Post
autor: niveasoft » 04 lut 2021, 17:01
Chodzi o ten niepotrzebny dwukropek który masz wstawiony za "Select Case R:"
U siebie go z automatu usunąłem bo myślałem, że to literówka przy wklejaniu.
-
Oldman
- Posty: 61
- Rejestracja: 19 cze 2019, 11:15
Post
autor: Oldman » 04 lut 2021, 19:02
I pozamiatane. Ten dwukropek był przyczyną, a właściwie ten co je tam wstawił...
Dziękuję!