logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[atmega8][bascom AVR] problem z insftukcją if then else

marcin1990 27 Lis 2009 15:20 2528 2
REKLAMA
  • #1 7315324
    marcin1990
    Poziom 14  
    Witam, on niedawna uczę się Bascoma i chcę stworzyć układ który będzie dbał o zapalanie światła w określonym czasie. Oczywiście czas będzie ustalany przez użytkownika np od 15:30 do 16:43. Mam taki pomysł żeby godzinę zamienić na liczbę np 1530 i 1643 jeśli czas przeliczony na liczbę będzie pomiędzy to na pinie C.5 będzie stan wysoki. Na co dzień programuje w C++ ale w uC wole zacząć od bascoma zamiast C# i mam problem z instrukcją "if" jeśli zostawię to tak :
    If Czas > Roz Or Czas < Zak Then Portc.5 = 1
      Else
      Portc.5 = 0

    to odostaję błąd 61 label not fund [_ENDIF0 ]
    jeśli dodam end if to :
    If Czas > Roz Or Czas < Zak Then Portc.5 = 1
      Else
      Portc.5 = 0
    End If
    

    otrzymuje całą listę błędów :
    error 28 Spodziewano się IF..THEN
    error 7 Spodziewana instrukcja IF..THEN
    error 124 loop expected
    Poniżej zamieszczam cały kod. Oczywiście jeszcze nei dokończony ale byłbym wdzięczny za pomoc. Jak ma wyglądać ta instrukcja?


     $regfile = "m8def.dat"
    $crystal = 1000000
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portd.1 , Rs = Portd.0
    
    
    Config Scl = Portb.2                                        'config i2c
    Config Sda = Portb.1
    Config Pinc.5 = Output                                      'pin c.5 jako wyjście
    Pinc.5 = 0                                                  'stan 0
    
    Dim M As Byte                                               'minuty
    Dim S As Byte                                               'sekundy
    Dim H As Byte                                               'godziny
    
    Dim Roz As Integer                                          'rozpoczęcie
    Dim Zak As Integer                                          'zakończenie
    Dim Czas As Integer
    Dim Mroz As Integer                                         'minuty rozpoczęcia
    Dim Hroz As Integer                                         'godzina rozpoczęcia
    Dim Mzak As Integer                                         'minuty zakonczenia
    Dim Hzak As Integer                                         'gdzina zakonczenia
    
    Mroz = 58                                                   'przykładowe wartości
    Hroz = 23                                                   'przykładowe wartości
    Mzak = 2                                                    'przykładowe wartości
    Hzak = 0                                                    'przykładowe wartości
    
    Cursor Off
                                                                 'procedura wpisania przykładowej godziny do testów
    S = Makebcd(30)
    M = Makebcd(57)
    H = Makebcd(23)
    I2cstart
    I2cwbyte 162
    I2cwbyte 0
    I2cwbyte 8
    I2cstop
    I2cstart
    I2cwbyte 162
    I2cwbyte 2
    I2cwbyte S
    I2cwbyte M
    I2cwbyte H
    
    
    I2cstop
    
    Roz = Hroz * 100                                            'łączenie godzin i minut w celu porównania
    Roz = Roz + Mroz
    Zak = Hzak * 100                                            'łączenie godzin i minut w celu porównania
    Zak = Zak + Mzak
    
    
    Do
    I2cstart                                                    'procedura odczytu godziny
    I2cwbyte 162
    I2cwbyte 2
    I2cstart
    I2cwbyte 163
    I2crbyte S , Ack
    I2crbyte M , Ack
    I2crbyte H , Nack
    I2cstop
    
    S = Makedec(s)                                              'konwersja liczb
    M = Makedec(m)
    H = Makedec(h)
    
    Czas = H * 100                                              'łączenie godzin i minut w celu porównania
    Czas = Czas + M
    
    
    If Czas > Roz Or Czas < Zak Then Portc.5 = 1
      Else
      Portc.5 = 0
      'End If
    
     Cls
     Lcd H ; ":" ; M ; ":" ; S
    
    
     Wait 1
    Loop
    End                                                         'end program
    
  • REKLAMA
  • #3 7315457
    marcin1990
    Poziom 14  
    dzięki temat do zamknięcia
REKLAMA