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

BASCOM Zmiana lokalizacji pików dołączanych

anglik20 05 Lis 2010 20:49 1483 3
REKLAMA
  • #1 8707024
    anglik20
    Poziom 14  
    Mam taki początek:
    Cytat:
    $regfile = "m128def.dat"
    $crystal = 8000000
    $lib "glcdKS108.lbx"
    $include "funkcje.bas"


    Chciałbym 2 dolne pliki umieścić w folderze, w którym się znajduje główny plik .bas. Normalnie z tego co widzę, to BASCOM przeszukuje swoje własne katalogi w poszukiwaniu plików "dołączanych". A ja chce, żeby szukał w tym katalogu, w którym znajduje się główny kompilowany plik .bas

    Póki co nic nie znalazłem na ten temat.

    Po prostu chce sobie zrobić oddzielny plik z funkcjami, podprogramami itp. które będą bez zmian.
    Pozdrawiam.
  • REKLAMA
  • #2 8707132
    aleexander
    Poziom 15  
    Witam,
    dzieje się dokładnie tak jak chcesz.
    Dając polecenie $include Bascom przeszukuje katalog z kompilowanym plikiem. Jeśli chcesz aby szukał w innym katalogu (np. katalogu wewnątrz katalogu z kompilowanym plikiem) to wpisujesz np.:
    $include = "funkcje\funkcje.bas"
    

    Pozdrawiam, aleexander
  • REKLAMA
  • #3 8707448
    anglik20
    Poziom 14  
    To coś jest nie tak.

    Jak wszystko jest w jednym pliku, to działa ok, jak zaś jest oddzielnie, to program nie działa. Nie wykonuje się funkcja Lednum, nie działa PWM (contrast, backlight).

    Glowny.bas
    
    $regfile = "m128def.dat"
    $crystal = 8000000
    $lib "glcdKS108.lbx"
    $include "funkcje.bas"
    
    Config Porta = Output
    Config Portc = Output
    Config Ping.0 = Output
    Config Ping.1 = Input
    
    
    Config Graphlcd = 128 * 64sed , Dataport = Portd , Controlport = Portb , Ce = 4 , Ce2 = 3 , Cd = 0 , Rd = 1 , Reset = 5 , Enable = 2
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc
    
    Config Timer3 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64
    
    
    Config Timer1 = Timer , Prescale = 8
    On Timer1 Touchscreen
    Enable Interrupts
    Enable Timer1
    
    Dim Backlight As Byte
    Dim Contrast As Byte
    
    Portg.1 = 0
    Portg.0 = 0
    
    
    Backlight = 255
    Contrast = 160
    
    
    
    Cls
    
    Do
    Gosub Stale
    
    Call Lednum(99 , 3)
    Loop
    
    
    
    Stale:
       Compare3a = Backlight
       Compare3b = Contrast
    Return


    funkcje.bas
    Dim X As Word , Y As Word
    
    Declare Sub Lednum(byval Numer As Byte , Byval Kropka As Byte)
    
    
    Sub Lednum(byval Numer As Byte ,byval  Kropka As Byte)
    
    Dim Dzie As Byte
    Dim Jedn As Byte
    
    Dzie = Numer \ 10
    Jedn = Numer Mod 10
    
    If Numer = 255 Then
       Porta = 64
       Portc = 64
    Else
    Select Case Dzie
        Case 1 : Dzie = 6
        Case 2 : Dzie = 91
        Case 3 : Dzie = 79
        Case 4 : Dzie = 102
        Case 5 : Dzie = 109
        Case 6 : Dzie = 125
        Case 7 : Dzie = 7
        Case 8 : Dzie = 127
        Case 9 : Dzie = 111
        Case 0 : Dzie = 63
    End Select
    Select Case Jedn
        Case 1 : Jedn = 6
        Case 2 : Jedn = 91
        Case 3 : Jedn = 79
        Case 4 : Jedn = 102
        Case 5 : Jedn = 109
        Case 6 : Jedn = 125
        Case 7 : Jedn = 7
        Case 8 : Jedn = 127
        Case 9 : Jedn = 111
        Case 0 : Jedn = 63
    End Select
    End If
    
    If Kropka = 0 Then
       Jedn.7 = 0
       Dzie.7 = 0
    Elseif Kropka = 1 Then
       Jedn.7 = 1
       Dzie.7 = 0
    Elseif Kropka = 2 Then
       Jedn.7 = 0
       Dzie.7 = 1
    Elseif Kropka = 3 Then
       Jedn.7 = 1
       Dzie.7 = 1
    End If
    
    Porta = Dzie
    Portc = Jedn
    End Sub
    
    Touchscreen:
    
    Config Pinf.0 = Output
    Config Pinf.2 = Output
    Set Portf.2
    Reset Portf.0
    Ddrf.1 = 0
    Ddrf.3 = 0
    Waitms 10
    Y = Getadc(3)
    Y = 1024 - Y
    Config Pinf.1 = Output
    Config Pinf.3 = Output
    Reset Portf.3
    Set Portf.1
    Ddrf.0 = 0
    Ddrf.2 = 0
    Waitms 10
    X = Getadc(2)
    X = 1024 - X
    
    If X > 100 And Y > 210 Then
    
    X = X - 100
    Y = Y - 210
    Else
    X = 0
    Y = 0
    End If
    
    Return
    


    PS. Powinniście się pokusić na elce o dodanie modułu GESHI - kolorowanie składni kodu - chyba najwyższa pora...
  • #4 8708594
    aleexander
    Poziom 15  
    Moim zdaniem, to kiedy dajesz $include to Bascom w danym miejscy po prostu wkleja zawartość pliku "funkcje.bas".
    Spróbuj przenieść linijkę z $include na koniec programu, bo tak to procesor wchodzi do zawartości pliku "funkcje.bas" bez wywołania.
    Używam wielokrotnie polecenia $include i wiem, że program sypał się kiedy funkcje (suby czy zwykłe etykiety zakończone return) dawałem przed funkcję główną. W sumie to to sensowne. Normalnie te funkcje też powinny znajdować się na końcu.
REKLAMA