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

[bascom] pytanie czemu i .....

simpson777 30 Kwi 2009 11:29 1428 3
  • #1 6474043
    simpson777
    Poziom 11  
    Witam wszystkich forumowiczów

    A więc mam problem z bascomem a zaczyna się tak że bascom nie kompiluje mi większości np.config clock
    
    $regfile = "m8def.dat"                                      'Dyrektyway dla kompilatora.
    $crystal = 8000000                                          'Oscylator wewnętrzny o częstotliwości 8MHz.
    
    Enable Interrupts
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.2 , Rs = Portd.3
    Cursor Off
    Config Clock = Soft                                         'Konfiguracja czasu.
    
    Config Date = Dmy , Separator = /                           'Konfig. daty. Dmy=dzień,miesiąc,rok. Seperator=/,albo-,albo. .                                          'Uruchamiamy odblokowania.
    
    Date$ = "02/08/06"                                          'Ustawiamy datę od której wystartuje.
    Time$ = "12:00:00"                                          'Ustawiamy czas od którego wystartuje.
    
    Cls                                                          'Czyść Lcd.
    
    Do                                                          'Pętla główna.
    Lcd Time$ ; "  " ; Date$
    Waitms 100                                                  'Pobierz aktualny czas.
    Loop                                                        'Trzymaj chwilę wyświetlony czas.
                                                                   'Zamknij pętlę.
    End


    [bascom] pytanie czemu i .....

    Mam jeszcze jedno pytanie co do programowania w bascom czy ten program da rade jakoś go skrócić

    
    $crystal = 8000000
    
    $regfile "m8def.dat"
    $sim
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
    Config Lcd = 16 * 2
    ' Miernik prędkości obrotowej
    'licznikiem 0...65535 jest Timer1
    Dim Wynik As Long
    
    Config Timer1 = Counter , Edge = Rising                     'konfiguracja Timera do zliczania impulsów
    
    Deflcdchar 0 , 16 , 16 , 16 , 16 , 16 , 16 , 16 , 16        ' replace ? with number (0-7)
    Deflcdchar 1 , 24 , 24 , 24 , 24 , 24 , 24 , 24 , 24        ' replace ? with number (0-7)
    Deflcdchar 2 , 28 , 28 , 28 , 28 , 28 , 28 , 28 , 28        ' replace ? with number (0-7)
    Deflcdchar 3 , 30 , 30 , 30 , 30 , 30 , 30 , 30 , 30        ' replace ? with number (0-7)
    Deflcdchar 4 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 31        ' replace ? with number (0-7)
    
    
    Cursor Off
    
    Cls
    Lcd "Obrotomierz"
    Wait 1                                                      'powitanie
    
    Do                                                          'program główny - pętla
       Timer1 = 0                                               'zeruj licznik
       Start Timer1                                             'zacznij liczyć
       Wait 1                                                   'zliczaj impulsy przez 1 sekundę
       Stop Timer1                                              'przestań liczyć
    
       Wynik = Timer1 * 60                                      'wynik zliczania w czasie 1s mnożymy przez 60 dla otrzymania wyniku w: obr/min
    
       Cls
          If Wynik => 0 Then
          Locate 1 , 1
          Lcd Chr(4)
          If Wynik => 100 Then
          Locate 1 , 2
          Lcd Chr(0)
          If Wynik => 200 Then
          Locate 1 , 2
          Lcd Chr(1)
          If Wynik => 300 Then
          Locate 1 , 2
          Lcd Chr(2)
          If Wynik => 400 Then
          Locate 1 , 2
          Lcd Chr(3)
          If Wynik => 500 Then
          Locate 1 , 2
          Lcd Chr(4)
          If Wynik => 600 Then
          Locate 1 , 3
          Lcd Chr(1)
          If Wynik => 700 Then
          Locate 1 , 3
          Lcd Chr(2)
          If Wynik => 800 Then
          Locate 1 , 3
          Lcd Chr(3)
          If Wynik => 900 Then
          Locate 1 , 3
          Lcd Chr(4)
          If Wynik => 1000 Then
          Locate 1 , 4
          Lcd Chr(0)
          If Wynik => 1100 Then
          Locate 1 , 4
          Lcd Chr(1)
          If Wynik => 1200 Then
          Locate 1 , 4
          Lcd Chr(2)
          If Wynik => 1300 Then
          Locate 1 , 4
          Lcd Chr(3)
          If Wynik => 1400 Then
          Locate 1 , 4
          Lcd Chr(4)
          If Wynik => 1500 Then
          Locate 1 , 5
          Lcd Chr(0)
          If Wynik => 1600 Then
          Locate 1 , 5
          Lcd Chr(1)
          If Wynik => 1700 Then
          Locate 1 , 5
          Lcd Chr(2)
          If Wynik => 1800 Then
          Locate 1 , 5
          Lcd Chr(3)
          If Wynik => 1900 Then
          Locate 1 , 5
          Lcd Chr(4)
          If Wynik => 2000 Then
          Locate 1 , 6
          Lcd Chr(0)
          If Wynik => 2100 Then
          Locate 1 , 6
          Lcd Chr(1)
          If Wynik => 2200 Then
          Locate 1 , 6
          Lcd Chr(2)
          If Wynik => 2300 Then
          Locate 1 , 6
          Lcd Chr(3)
          If Wynik => 2400 Then
          Locate 1 , 6
          Lcd Chr(4)
          If Wynik => 2500 Then
          Locate 1 , 7
          Lcd Chr(0)
          If Wynik => 2600 Then
          Locate 1 , 7
          Lcd Chr(1)
          If Wynik => 2700 Then
          Locate 1 , 7
          Lcd Chr(2)
          If Wynik => 2800 Then
          Locate 1 , 7
          Lcd Chr(3)
          If Wynik => 2900 Then
          Locate 1 , 7
          Lcd Chr(4)
          If Wynik => 3000 Then
          Locate 1 , 8
          Lcd Chr(0)
          If Wynik => 3100 Then
          Locate 1 , 8
          Lcd Chr(1)
          If Wynik => 3200 Then
          Locate 1 , 8
          Lcd Chr(2)
          If Wynik => 3300 Then
          Locate 1 , 8
          Lcd Chr(3)
          If Wynik => 3400 Then
          Locate 1 , 8
          Lcd Chr(4)
          If Wynik => 3500 Then
          Locate 1 , 9
          Lcd Chr(0)
          If Wynik => 3600 Then
          Locate 1 , 9
          Lcd Chr(1)
          If Wynik => 3700 Then
          Locate 1 , 9
          Lcd Chr(2)
          If Wynik => 3800 Then
          Locate 1 , 9
          Lcd Chr(3)
          If Wynik => 3900 Then
          Locate 1 , 9
          Lcd Chr(4)
          If Wynik => 4000 Then
          Locate 1 , 10
          Lcd Chr(0)
          If Wynik => 4100 Then
          Locate 1 , 10
          Lcd Chr(1)
          If Wynik => 4200 Then
          Locate 1 , 10
          Lcd Chr(2)
          If Wynik => 4300 Then
          Locate 1 , 10
          Lcd Chr(3)
          If Wynik => 4400 Then
          Locate 1 , 10
          Lcd Chr(4)
          If Wynik => 4500 Then
          Locate 1 , 11
          Lcd Chr(0)
          If Wynik => 4600 Then
          Locate 1 , 11
          Lcd Chr(1)
          If Wynik => 4700 Then
          Locate 1 , 11
          Lcd Chr(2)
          If Wynik => 4800 Then
          Locate 1 , 11
          Lcd Chr(3)
          If Wynik => 4900 Then
          Locate 1 , 11
          Lcd Chr(4)
          If Wynik => 5000 Then
          Locate 1 , 12
          Lcd Chr(0)
          If Wynik => 5100 Then
          Locate 1 , 12
          Lcd Chr(1)
          If Wynik => 5200 Then
          Locate 1 , 12
          Lcd Chr(2)
          If Wynik => 5300 Then
          Locate 1 , 12
          Lcd Chr(3)
          If Wynik => 5400 Then
          Locate 1 , 12
          Lcd Chr(4)
          If Wynik => 5500 Then
          Locate 1 , 13
          Lcd Chr(0)
          If Wynik => 5600 Then
          Locate 1 , 13
          Lcd Chr(1)
          If Wynik => 5700 Then
          Locate 1 , 13
          Lcd Chr(2)
          If Wynik => 5800 Then
          Locate 1 , 13
          Lcd Chr(3)
          If Wynik => 5900 Then
          Locate 1 , 13
          Lcd Chr(4)
          If Wynik => 6000 Then
          Locate 1 , 14
          Lcd Chr(0)
          If Wynik => 6100 Then
          Locate 1 , 14
          Lcd Chr(1)
          If Wynik => 6200 Then
          Locate 1 , 14
          Lcd Chr(2)
          If Wynik => 6300 Then
          Locate 1 , 14
          Lcd Chr(3)
          If Wynik => 6400 Then
          Locate 1 , 14
          Lcd Chr(4)
          If Wynik => 6500 Then
          Locate 1 , 15
          Lcd Chr(0)
          If Wynik => 6600 Then
          Locate 1 , 15
          Lcd Chr(1)
          If Wynik => 6700 Then
          Locate 1 , 15
          Lcd Chr(2)
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
       End If
    
       Locate 2 , 1                                             'przejście do drugiej linii
       Lcd Wynik ; " obr/min"                                   'wyświetlamy wynik i jednostkę
    Loop                                                        'koniec pętli głównej programu
    End
  • #2 6474145
    sp3ots
    Poziom 38  
    Witam !
    Pierwszy kod przekopiowałem do Bascoma AVR wer. 1.11.7.9
    demo i jest ok. nie wykrywa żadnego błędu. Czy działa ?, nie wiem bo nie wgrywałem do Megi8.
    Pozdrawiam. Stefan
  • #3 6474334
    seba_x
    Poziom 31  
    aleś nawalił if-ów , zamiast pisać sto razy lcd chr ... może zrób sobie tak :

    Zero:
      Lcd Chr(0)
    Return
    
    Jeden:
      Lcd Chr(1)
    Return
    
    Dwa:
      Lcd Chr(2)
    Return
    
    Trzy:
      Lcd Chr(3)
    Return
    
    Cztery:
      Lcd Chr(4)
    Return


    w odpowiednich miejscach powstawiaj gosub i już masz zaoszczędzone 100 bajtów , a najlepiej zapoznaj się z SELECT CASE
  • #4 6474867
    simpson777
    Poziom 11  
    Co do pierwszego programu to jest tak że na wersji 1.11.9.1 jes ok, ale już na 1.11.8.7 już powstaje problem:(
    No i jest tak z większością "config....".


    A co do drugiego programu to dzięki za pomoc raraz bede się brał do roboty.
REKLAMA