Bascom-AVR "Dead Code"

Pytania, kody i porady dotyczące nie tylko Bascom.
ODPOWIEDZ
Awatar użytkownika
Oldman
Posty: 61
Rejestracja: 19 cze 2019, 11:15

Bascom-AVR "Dead Code"

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):
  1. If C = 8 Then
  2.          C = 0
  3.          Shift R , Right , 3
  4.          Select Case R:
  5.  
  6.          Case Is > 100
  7.               Portb.3 = 1
  8.               A = 1
  9.               B = 0
  10.          Case Is < 70
  11.               Portb.4 = 0
  12.               A = 0
  13.               B = 1
  14.          End Select
  15.          R = 0
  16.     End If
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Bascom-AVR "Dead Code"

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.
Awatar użytkownika
Oldman
Posty: 61
Rejestracja: 19 cze 2019, 11:15

Re: Bascom-AVR "Dead Code"

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ę.
  1.  $regfile = "attiny25.dat"
  2. $crystal = 1000000
  3. Dim A As Bit                                                'A flaga dla pomiaru czasu
  4. Dim B As Bit
  5. Dim C As Byte
  6. Dim P As Byte
  7. Dim R As Word
  8. Dim Czas As Byte
  9. Config Portb = &B11111011                                   ' pin7 (PB2) to we (INT0), pin2 (PB3) WYJ1,  pin3 (PB4) WY2
  10.         Portb = &B00000000
  11. Config Watchdog = 2048
  12.  Wait 3
  13. Start Watchdog
  14.  
  15. Config Timer1 = Timer , Prescale = 1024                     ' Przerwanie co 0,26214400 sekundy,  19 cykli to ok. 5 sekund
  16. Config Timer0 = Timer , Prescale = 8
  17.  
  18.  
  19.  
  20.  On Timer1 Cykl
  21.  Config Int0 = Rising
  22.     On Int0 Pomiar
  23.  Enable Int0
  24.  Enable Timer1
  25.  Enable Interrupts
  26.  
  27. '########################################################################################################
  28.  
  29.  
  30.     Do
  31.     Loop
  32.     End
  33.  
  34. '###########################################################################################################
  35.  
  36.  
  37.  
  38.    Pomiar:
  39.  
  40.     Timer0 = 0
  41.     Waitus 800
  42.     Start Timer0
  43.     While Pinb.2 = 1
  44.     Wend
  45.     Stop Timer0
  46.     P = Timer0
  47.     Incr C
  48.     R = R + P
  49.     If C = 8 Then
  50.          C = 0
  51.          Shift R , Right , 3
  52.          Select Case R:
  53.          Case Is < 70
  54.               Portb.4 = 0
  55.               A = 0
  56.               B = 1
  57.  
  58.          Case Is > 100
  59.               Portb.3 = 1
  60.               A = 1
  61.               B = 0
  62.          End Select
  63.          R = 0
  64.     End If
  65.    Reset Watchdog
  66.   Return
  67.  
  68.  
  69.        Cykl:
  70.  
  71.  
  72.           If A = 1 And B = 0 Then
  73.             Incr Czas
  74.  
  75.              If Czas => 20 Then
  76.                  Portb.4 = 1
  77.                  B = 1
  78.                  Czas = 0
  79.              End If
  80.           End If
  81.           If A = 0 And B = 1 Then
  82.              Incr Czas
  83.  
  84.              If Czas => 30 Then
  85.                 Portb.3 = 0
  86.                  B = 0
  87.                  Czas = 0
  88.              End If
  89.           End If
  90.  
  91.  
  92.        Return
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Bascom-AVR "Dead Code"

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.
Awatar użytkownika
Oldman
Posty: 61
Rejestracja: 19 cze 2019, 11:15

Re: Bascom-AVR "Dead Code"

Post autor: Oldman » 04 lut 2021, 19:02

I pozamiatane. Ten dwukropek był przyczyną, a właściwie ten co je tam wstawił... :oops:
Dziękuję!
ODPOWIEDZ