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

Wsad do kitu, błąd przy kompilacji, bascom, Stop złodzieju

owoc_lesny 25 Lis 2007 18:32 1550 3
REKLAMA
  • #1 4519872
    owoc_lesny
    Poziom 11  
    Posty: 74
    Ocena: 2
    Hej. Postanowiłem poskładać kit z Nowego Elektronika "Stop złodzieju" 238-k
    Kiedy przyszedł czas na programowanie µprocka okazało się że nie ma wsadu na stonce gazety. Przystąpiłem do przepisywania wszystkiego co było umieszczone w gazecie do Bascoma. Podczas próby kompilacji wywaliło taki błąd:
    Error : 31   Line 47 Invalid datatype ,in File ...........


    Wydaje mi się że wywali jeszcze inne błędy więc wrzucam cały program.

    $regfile = "attiny2313.dat"
    $crystal = 11059200
    
    $hwstack = 32
    $swstack = 10
    $framesize = 20
    
    'DEKLARACJA ZMIENNYCH I PROCEDUR
    Dim Flaga As Bit , Flaga1 As Bit
    Dim Wylacz As Byte , Znak As Byte , Adres As Byte , Licznik As Byte
    Dim Znak1 As Byte , Znak2 As Byte , Adres1 As Byte , Adres2 As Byte
    
    Declare Sub Znajdz_numer(byval Adres As Byte)
    Declare Sub Kasuj_eeprome(byval Adres As Byte)
    Declare Sub Czytaj()
    Declare Sub Czysc_bufor()
    Declare Sub Porownaj()
    Declare Sub Dzwon()
    
    'STAWIENIE BUFORA RS323
    Config Serialin = Buffered , Size = 48
    Enable Interrupts
    
    'KONFIGURACJA WEJSCIA
    Config Pinb.0 = Input
    Portb.0 = 1
    Config Pinb.1 = Input
    Portb.1 = 1
    Config Pinb.2 = Input
    Portb.2 = 1
    Config Pinb.3 = Input
    Portb.3 = 1
    Config Pind.0 = Input
    Portd.0 = 1
    
    'KONFIGURACJA WYJSCIA
    Config Pinb.4 = Output
    Config Pinb.5 = Output
    Config Pinb.6 = Output
    Config Pinb.7 = Output
    
    'USTAWIENIE TRANSMISJI RS323
    If Sw_1 = 0 Then
       $baud = 115200
    Elseif Sw_2 = 0 Then
       $baud = 57600
    Elseif Sw_3 = 0 Then
       $baud = 19200
    End If
    
    
    'USTAWIENIA STARTOWE
    Pk_1 = 0
    Pk_2 = 0
    Pk_3 = 0
    Pk_4 = 0
    
    Led = 0
    Flaga1 = 0
    
    If Sw_4 = 0 Then
      Call Kasuj_eeprome(&H7f)
      Wait 1
      Do
        Led = 1
      Loop
    End If
    
    Readeeprom Wylacz , &H50
    
    If Wylacz = &H01 Then
      Do
       Pk_1 = 1
       Pk_2 = 1
       Pk_3 = 1
       Pk_4 = 1
    
       Led = 0
       Waitims 50
       Led = 1
       Waitms 50
      Loop
    End If
    
    Print "ATZ"
    Wait 3
    Call Czysc_bufor()
    Print "ATE0"
    Call Czysc_bufor()
    Wait 3
    
    '---------------------------------
    'POBIERANIE  NUMERU TELEFONU
    '---------------------------------
    Adres = &H70
    Readeeprom Znak , Adres
    
    If Znak = &H00 Then
       Print "AT+CPBS=" ; Chr(34) ; "M" ; Chr(34)
       Wait 3
       Call Czysc_bufor()
    
       Print "AT+CPBR=1,1"
    'zmienic na 1,1
       Wait 3
       Call Kasuj_eeprome(&H7f)
       Call Czytaj()
       Call Znajdz_numer(&H70)
       Call Kasur_eeprome(&H6f)
       Call Czysc_bufor()
    
       Do
        Led = 1
        Wait 1
       Loop
    End If
    
    '---------------------------------
    'GLOWNA PETLA PROGRAMU
    '---------------------------------
    Do
      If Ischarwaiting() = &H01 Then
        Wait 3
        Call Czysc_bufor()
    
        Print "AT+CLCC"
        Wait 3
        Print "ATH"
        Wait 3
    
        Call Czytaj()
        Call Znajdz_numer()
        Call Kasuj_eeprome()
        Call Porownaj()
      End If
    
      If Alarm = 0 Then
       Led = 0
       Call Dzwon
      End If
    
      If Wylacz = &H01 Then
        Pk_1 = 1
        Pk_2 = 1
        Pk_3 = 1
        Pk_4 = 1
    
        Do
         Led = 1
         Waitms 50
         Led = 0
        Loop
      End If
    
      Led = 1
      Waitms 500
      Led = 0
      Waitms 500
    Loop
    
    '---------------------------------
    'PROCEDURA DZWON
    '---------------------------------
    Sub Dzwon()
      Adres = &H00
    
      Print "ATZ"
      Wait 3
      Call Czysc_bufor()
      Print "ATE0"
      Call Czysc_bufor()
      Wait 3
    
      Print "ATD"
    
      For Adres = &H70 To &H7F
        Readeeprome Znak , Adres
          If Znak <> &H00 Then
           Print Chr(znak)
          End If
    
          Next Adres
          Print ";"
    
          Flaga1 = 1
          Wait 30
          Print "ATH"
          Wait 3
          Call Czysc_bufor()
    End Sub
    
    '---------------------------------
    'PROCEDURA POROWNAJ
    '---------------------------------
    Sub Porownaj()
      Adres1 = &H60
      Adres2 = &H70
    
      Do
        Readeeprome Znak1 , Adres1
        Readeeprome Znak2 , Adres2
    
        If Znak1 = Znak2 Then
         Wylacz = &H01
         Exit Do
        End If
    
        Incr Adres1
        Incr Adres2
      Loop Until Adres2 = &H7F
    
      Writeeprom Wylacz , &H50
    End Sub
    
    '---------------------------------
    'PROCEDURA ZNAJDZ_NUMER
    '---------------------------------
    Sub Znajdz_numer(byval Adres As Byte)
     Flaga = 0
     Licznik = &H00
     Do
      Readeeprome Znak , Licznik
      Incr Licznik
    
    
        If Znak = 34 Then
         Flaga = Not Flaga
         If Flaga = 0 Then Exit Do
        End If
    
        If Flaga = 1 And Znak <> 34 Then
          Writeeeprom Znak , Adres
          Incr Adres
        End If
      Loop Until Licznik = &H2F
    End Sub
    
    '---------------------------------
    'PROCEDURA KASUJ_EEPROM
    '---------------------------------
    Eeprom
    Sub Kasuj_eeprom(byval Adres As Byte)
      Licznik = &H00
      Znak = &H00
      For Licznik = 0 To Adres
        Writeeeprom Znak , Licznik
      Next Licznik
    End Sub
    
    '---------------------------------
    'PROCEDURA CZYTAJ
    '---------------------------------
    Sub Czytaj()
      Licznik = &H00
      Do
       If Ischarwaiting() = &H01 Then
         Znak = Inkey()
         Writeeeprome Znak , Licznik
         Incr Licznik
       Else
        Exit Do
       End If
      Loop
    End Sub
    
    '---------------------------------
    'PROCEDURA CZYSC_BUFOR
    '---------------------------------
    Sub Czysc_bufor()
     Licznik = &H00
     Do
      If Ischarwaiting() = &H01 Then
      Incr Licznik
     Else
       Exit Do
     End If
    Loop
    End Sub
  • REKLAMA
  • #2 4520329
    unitral
    Użytkownik obserwowany
    Posty: 1296
    Pomógł: 85
    Ocena: 175
    no pewnie że błąd - a gdzie masz procedurę kasowania eepromu?
    oni pewnie mają ją w pliku i używają zewnętrznie.

    sprawdz czy istniejąinne procedury w programie.

    Powodzenia
  • REKLAMA
  • Pomocny post
    #3 4521215
    Gienek
    Poziom 37  
    Posty: 2776
    Pomógł: 393
    Ocena: 353
    Poopuszczałeś trochę, a do tego literówki i dlatego wyrzucało błędy. Ten program kompiluje sie poprawnie.
    
    $regfile = "attiny2313.dat"
    $crystal = 11059200
    
    $hwstack = 32
    $swstack = 10
    $framesize = 20
    
    'DEKLARACJA ZMIENNYCH I PROCEDUR
    Dim Flaga As Bit , Flaga1 As Bit
    Dim Wylacz As Byte , Znak As Byte , Adres As Byte , Licznik As Byte
    Dim Znak1 As Byte , Znak2 As Byte , Adres1 As Byte , Adres2 As Byte
    
    Declare Sub Znajdz_numer(byval Adres As Byte)
    Declare Sub Kasuj_eeprom(byval Adres As Byte)
    Declare Sub Czytaj()
    Declare Sub Czysc_bufor()
    Declare Sub Porownaj()
    Declare Sub Dzwon()
    
    'USTAWIENIE BUFORA RS232
    Config Serialin = Buffered , Size = 48
    Enable Interrupts
    
    'KONFIGURACJA WEJSCIA
    Config Pinb.0 = Input
    Portb.0 = 1
    Config Pinb.1 = Input
    Portb.1 = 1
    Config Pinb.2 = Input
    Portb.2 = 1
    Config Pinb.3 = Input
    Portb.3 = 1
    Config Pind.0 = Input
    Portd.2 = 1
    
    'KONFIGURACJA WYJSCIA
    Config Pinb.4 = Output
    Config Pinb.5 = Output
    Config Pinb.6 = Output
    Config Pinb.7 = Output
    Config Pind.6 = Output
    
    'PRZYPISANIE NAZW DO PORTOW
    Sw_4 Alias Pinb.0
    Sw_3 Alias Pinb.1
    Sw_2 Alias Pinb.2
    Sw_1 Alias Pinb.3
    Alarm Alias Pind.2
    
    Led Alias Portd.6
    Pk_1 Alias Portb.4
    Pk_2 Alias Portb.5
    Pk_3 Alias Portb.6
    Pk_4 Alias Portb.7
    
    'USTAWIENIE TRANSMISJI RS232
    If Sw_1 = 0 Then
       $baud = 115200
    Elseif Sw_2 = 0 Then
       $baud = 57600
    Elseif Sw_3 = 0 Then
       $baud = 19200
    End If
    
    
    'USTAWIENIA STARTOWE
    Pk_1 = 0
    Pk_2 = 0
    Pk_3 = 0
    Pk_4 = 0
    
    Led = 0
    Flaga1 = 0
    
    If Sw_4 = 0 Then
      Call Kasuj_eeprom(&H7f)
      Wait 1
      Do
        Led = 1
      Loop
    End If
    
    Readeeprom Wylacz , &H50
    
    If Wylacz = &H01 Then
      Do
       Pk_1 = 1
       Pk_2 = 1
       Pk_3 = 1
       Pk_4 = 1
    
       Led = 0
       Waitms 50
       Led = 1
       Waitms 50
      Loop
    End If
    
    Print "ATZ"
    Wait 3
    Call Czysc_bufor()
    Print "ATE0"
    Call Czysc_bufor()
    Wait 3
    
    '---------------------------------
    'POBIERANIE  NUMERU TELEFONU
    '---------------------------------
    Adres = &H70
    Readeeprom Znak , Adres
    
    If Znak = &H00 Then
       Print "AT+CPBS=" ; Chr(34) ; "SM" ; Chr(34)
       Wait 3
       Call Czysc_bufor()
    
       Print "AT+CPBR=1,1"
    'zmienic na 1,1
       Wait 3
       Call Kasuj_eeprom(&H7f)
       Call Czytaj()
       Call Znajdz_numer(&H70)
       Call Kasuj_eeprom(&H6f)
       Call Czysc_bufor()
    
       Do
        Led = 1
        Wait 1
       Loop
    End If
    
    '---------------------------------
    'GLOWNA PETLA PROGRAMU
    '---------------------------------
    Do
      If Ischarwaiting() = &H01 Then
        Wait 3
        Call Czysc_bufor()
    
        Print "AT+CLCC"
        Wait 3
        Print "ATH"
        Wait 3
    
        Call Czytaj()
        Call Znajdz_numer(&H60)
        Call Kasuj_eeprom(&H4f)
        Call Porownaj()
      End If
    
      If Alarm = 0 Then
       Led = 0
       Call Dzwon
      End If
    
      If Wylacz = &H01 Then
        Pk_1 = 1
        Pk_2 = 1
        Pk_3 = 1
        Pk_4 = 1
    
        Do
         Led = 1
         Waitms 50
         Led = 0
        Loop
      End If
    
      Led = 1
      Waitms 500
      Led = 0
      Waitms 500
    Loop
    
    '---------------------------------
    'PROCEDURA DZWON
    '---------------------------------
    Sub Dzwon()
      Adres = &H00
    
      Print "ATZ"
      Wait 3
      Call Czysc_bufor()
      Print "ATE0"
      Call Czysc_bufor()
      Wait 3
    
      Print "ATD"
    
      For Adres = &H70 To &H7F
        Readeeprom Znak , Adres
          If Znak <> &H00 Then
           Print Chr(znak)
          End If
    
          Next Adres
          Print ";"
    
          Flaga1 = 1
          Wait 30
          Print "ATH"
          Wait 3
          Call Czysc_bufor()
    End Sub
    
    '---------------------------------
    'PROCEDURA POROWNAJ
    '---------------------------------
    Sub Porownaj()
      Adres1 = &H60
      Adres2 = &H70
    
      Do
        Readeeprom Znak1 , Adres1
        Readeeprom Znak2 , Adres2
    
        If Znak1 = Znak2 Then
         Wylacz = &H01
         Else
          Wylacz = &H00
         Exit Do
        End If
    
        Incr Adres1
        Incr Adres2
      Loop Until Adres2 = &H7F
    
      Writeeeprom Wylacz , &H50
    End Sub
    
    '---------------------------------
    'PROCEDURA ZNAJDZ_NUMER
    '---------------------------------
    Sub Znajdz_numer(byval Adres As Byte)
     Flaga = 0
     Licznik = &H00
     Do
      Readeeprom Znak , Licznik
      Incr Licznik
    
    
        If Znak = 34 Then
         Flaga = Not Flaga
         If Flaga = 0 Then Exit Do
        End If
    
        If Flaga = 1 And Znak <> 34 Then
          Writeeeprom Znak , Adres
          Incr Adres
        End If
      Loop Until Licznik = &H2F
    End Sub
    
    '---------------------------------
    'PROCEDURA KASUJ_EEPROM
    '---------------------------------
    'Adres - adres do ktorego ma byc kasowana pamiec EEPROM
    Sub Kasuj_eeprom(byval Adres As Byte)
      Licznik = &H00
      Znak = &H00
      For Licznik = 0 To Adres
        Writeeeprom Znak , Licznik
      Next Licznik
    End Sub
    
    '---------------------------------
    'PROCEDURA CZYTAJ
    '---------------------------------
    Sub Czytaj()
      Licznik = &H00
      Do
       If Ischarwaiting() = &H01 Then
         Znak = Inkey()
         Writeeeprom Znak , Licznik
         Incr Licznik
       Else
        Exit Do
       End If
      Loop
    End Sub
    
    '---------------------------------
    'PROCEDURA CZYSC_BUFOR
    '---------------------------------
    Sub Czysc_bufor()
     Licznik = &H00
     Do
      If Ischarwaiting() = &H01 Then
          Znak = Inkey()
      Incr Licznik
     Else
       Exit Do
     End If
    Loop
    End Sub
    
  • #4 4522398
    owoc_lesny
    Poziom 11  
    Posty: 74
    Ocena: 2
    Wielkie dzięki.
REKLAMA