Strona 1 z 1
Bascom-AVR "Dead Code"
: 04 lut 2021, 13:58
autor: Oldman
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
Re: Bascom-AVR "Dead Code"
: 04 lut 2021, 14:21
autor: niveasoft
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.
Re: Bascom-AVR "Dead Code"
: 04 lut 2021, 15:46
autor: Oldman
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
Re: Bascom-AVR "Dead Code"
: 04 lut 2021, 17:01
autor: niveasoft
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.
Re: Bascom-AVR "Dead Code"
: 04 lut 2021, 19:02
autor: Oldman
I pozamiatane. Ten dwukropek był przyczyną, a właściwie ten co je tam wstawił...
Dziękuję!