Witam.
Poniżej zamieściłem program w bascomie który właśnie pisze (jeszcze nie skończony) i mam taki oto problem:
po sprawdzeniu składni wywala takie oto błędy:
1.Error 7 Line: 327 IF THEN expected
2.Error 222 Line: 327 illegal character [expected (,got"]
3.Error 1 Line: 327 Unknown statement [.EQU not found for:PORT]
Program to zwykły zegar z RTC DS1307 i atmega8515. Pierwszy raz próbuje użyć tego RTC. Sprawdzałem już setki razy cały program i nic nie znalazłem, zauważyłem tylko że gdy wyrzucę część programu odpowiedzialną za odczyt i zapis DS-a to błędy znikają. Linia 327 programu to ostatnia linia w której napisane jest tylko return!
Czy mógłby ktoś bardziej doświadczony w temacie sprawdzić co jest nie tak?
Pozdrawiam.
Poniżej zamieściłem program w bascomie który właśnie pisze (jeszcze nie skończony) i mam taki oto problem:
po sprawdzeniu składni wywala takie oto błędy:
1.Error 7 Line: 327 IF THEN expected
2.Error 222 Line: 327 illegal character [expected (,got"]
3.Error 1 Line: 327 Unknown statement [.EQU not found for:PORT]
Program to zwykły zegar z RTC DS1307 i atmega8515. Pierwszy raz próbuje użyć tego RTC. Sprawdzałem już setki razy cały program i nic nie znalazłem, zauważyłem tylko że gdy wyrzucę część programu odpowiedzialną za odczyt i zapis DS-a to błędy znikają. Linia 327 programu to ostatnia linia w której napisane jest tylko return!
Czy mógłby ktoś bardziej doświadczony w temacie sprawdzić co jest nie tak?
Pozdrawiam.
'----KONFIGORACJA WYSWIETLACZA----.'
Config Lcdpin = Pin , Db4 = Pa.5 , Db5 = Pa.4 , Db6 = Pa.3 , Db7 = Pa.2 , E = Pa.6 , Rs = Pa.7
Config Lcd = 20 * 4
'----KONFIGORACJA MAGISTRALI I2C I 1WIRE----.'
Config 1wire = Pc.0
Config Sda = Pd.6
Config Scl = Pd.7
'----DEKLARACJA PROCEDURY UZYTKOWNIKA----.'
Declare Sub Odczyt
Declare Sub Zapis
'----PRZYPISANIE PRZYJAZNYCH NAZW----.'
Cha Alias Pind.2
Chb Alias Pind.0
S1 Alias Pinb.0
S2 Alias Pinb.1
S3 Alias Pinb.2
S4 Alias Pinb.3
'----KONFIGURACJA PORTÓW----.'
Portd.1 = 0
Config Cha = Input 'wej.kanał A encodera INT0 procesora
Config Chb = Input 'wej.kanał B encodera
Config Pind.4 = Output 'wyjście +
Config Pind.3 = Output 'wyjście -
Config Portb = Input
Portb = 11111111
'----KONFIGÓRACJA PRZERWAN----.'
Config Int0 = Falling
'----DEKLARACJA ZMIENNYCH----.'
Dim Sekunda As Byte
Dim Minuta As Byte
Dim Godzina As Byte
Dim Dzientygodnia As Byte
Dim Dzien As Byte
Dim Miesiac As Byte
Dim Rok As Word
Dim Minutaspr3 As Byte
Dim Inna As Byte
Dim Iles As Byte
Dim Zmienna As Byte
On Int0 Getencoder
Enable Interrupts
Enable Int0
Cls
Locate 1 , 1
Lcd "START"
Wait 2
Cls 'czysc wyswietlacz.'
I2cinit
'----GLOWNA PETLA PROGRAMU----.'
Do
Call Odczyt
Locate 1 , 1
Lcd Dzien ; "/" ; Miesiac ; "/" ; Rok 'pokaz date.'
Locate 2 , 1
Lcd Godzina ; ":" ; Minuta ; ":" ; Sekunda 'pokaz czas.'
If S1 = 0 Then
Gosub Menu
End If
If S2 = 0 Then
Gosub Fullclock
End If
Loop : End
'######################################MENU#####################################.'
'###############################################################################.'
Menu:
'######################################FULLCLOCK################################.'
'###############################################################################.'
Fullclock:
Do
If Minutaspr3 <> Minuta Then
Cls
Minutaspr3 = Minuta
End If
For Inna = 0 To 3
Select Case Inna
Case 0:
Iles = 1
Zmienna = Godzina / 10
Case 1:
Iles = 5
Zmienna = Godzina Mod 10
Case 2:
Iles = 13
Zmienna = Minuta / 10
Case 3:
Iles = 17
Zmienna = Minuta Mod 10
End Select
Select Case Zmienna
Case 0:
Locate 1 , Iles
Lcd Chr(0) ; Chr(6) ; Chr(6) ; Chr(1)
Locate 2 , Iles
Lcd Chr(5) ; " " ; Chr(5)
Locate 3 , Iles
Lcd Chr(5) ; " " ; Chr(5)
Locate 4 , Iles
Lcd Chr(2) ; Chr(4) ; Chr(4) ; Chr(3)
Case 1:
Incr Iles
Locate 1 , Iles
Lcd Chr(0) ; Chr(5)
Incr Iles
Locate 2 , Iles
Lcd Chr(5)
Locate 3 , Iles
Lcd Chr(5)
Decr Iles
Locate 4 , Iles
Lcd Chr(4) ; Chr(5) ; Chr(4)
Case 2:
Locate 1 , Iles
Lcd Chr(0) ; Chr(6) ; Chr(6) ; Chr(1)
Iles = Iles + 2
Locate 2 , Iles
Lcd Chr(0) ; Chr(3)
Decr Iles
Locate 3 , Iles
Lcd Chr(0) ; Chr(3)
Decr Iles
Locate 4 , Iles
Lcd Chr(0) ; Chr(7) ; Chr(4) ; Chr(4)
Case 3:
Locate 1 , Iles
Lcd Chr(0) ; Chr(6) ; Chr(6) ; Chr(1)
Incr Iles
Locate 2 , Iles
Lcd Chr(0) ; Chr(4) ; Chr(3)
Locate 3 , Iles
Lcd Chr(2) ; Chr(6) ; Chr(1)
Decr Iles
Locate 4 , Iles
Lcd Chr(2) ; Chr(4) ; Chr(4) ; Chr(3)
Case 4:
Locate 1 , Iles
Lcd Chr(5) ; " " ; Chr(5)
Locate 2 , Iles
Lcd Chr(5) ; " " ; Chr(5)
Locate 3 , Iles
Lcd Chr(2) ; Chr(6) ; Chr(6) ; Chr(5)
Iles = Iles + 3
Locate 4 , Iles
Lcd Chr(5)
Case 5:
Locate 1 , Iles
Lcd Chr(5) ; Chr(6) ; Chr(6) ; Chr(6)
Locate 2 , Iles
Lcd Chr(2) ; Chr(4) ; Chr(4) ; Chr(1)
Iles = Iles + 3
Locate 3 , Iles
Lcd Chr(5)
Iles = Iles - 3
Locate 4 , Iles
Lcd Chr(2) ; Chr(4) ; Chr(4) ; Chr(3)
Case 6:
Locate 1 , Iles
Lcd Chr(0) ; Chr(6) ; Chr(6)
Locate 2 , Iles
Lcd Chr(5) ; Chr(0) ; Chr(4) ; Chr(1)
Locate 3 , Iles
Lcd Chr(5) ; " " ; Chr(5)
Locate 4 , Iles
Lcd Chr(2) ; Chr(4) ; Chr(4) ; Chr(3)
Case 7:
Locate 1 , Iles
Lcd Chr(6) ; Chr(6) ; Chr(6) ; Chr(5)
Iles = Iles + 2
Locate 2 , Iles
Lcd Chr(0) ; Chr(3)
Decr Iles
Locate 3 , Iles
Lcd Chr(0) ; Chr(3)
Locate 4 , Iles
Lcd Chr(5)
Case 8:
Locate 1 , Iles
Lcd Chr(0) ; Chr(6) ; Chr(6) ; Chr(1)
Locate 2 , Iles
Lcd Chr(2) ; Chr(4) ; Chr(4) ; Chr(3)
Locate 3 , Iles
Lcd Chr(0) ; Chr(6) ; Chr(6) ; Chr(1)
Locate 4 , Iles
Lcd Chr(2) ; Chr(4) ; Chr(4) ; Chr(3)
Case 9:
Locate 1 , Iles
Lcd Chr(0) ; Chr(6) ; Chr(6) ; Chr(1)
Locate 2 , Iles
Lcd Chr(5) ; " " ; Chr(5)
Locate 3 , Iles
Lcd Chr(2) ; Chr(6) ; Chr(3) ; Chr(5)
Incr Iles
Locate 4 , Iles
Lcd Chr(4) ; Chr(4) ; Chr(3)
End Select
Next Inna
If Sekunda.0 = 0 Then
Locate 1 , 10
Lcd Chr(0) ; Chr(1)
Locate 2 , 10
Lcd Chr(2) ; Chr(3)
Locate 3 , 10
Lcd Chr(0) ; Chr(1)
Locate 4 , 10
Lcd Chr(2) ; Chr(3)
Else
Locate 1 , 10
Lcd " "
Locate 2 , 10
Lcd " "
Locate 3 , 10
Lcd " "
Locate 4 , 10
Lcd " "
End If
Cursor Off
If S3 = 0 Then
Return
End If
Loop : End
'----PROCEDURA ODCZYTU DATY I CZASU----.'
Sub Odczyt
I2cstart
I2cwbyte 208
I2cwbyte 0
I2cstop
I2cstart
I2cwbyte 209
I2crbyte Sekunda , Ack
I2crbyte Minuta , Ack
I2crbyte Godzina , Ack
I2crbyte Dzientygodnia , Ack
I2crbyte Dzien , Ack
I2crbyte Miesiac , Ack
I2crbyte Rok , Nack
I2cstop
Sekunda = Makedec(sekunda)
Minuta = Makedec(minuta)
Godzina = Makedec(godzina)
Dzientygodnia = Makedec(dzientygodnia)
Dzien = Makedec(dzien)
Miesiac = Makedec(miesiac)
Rok = Makedec(rok)
End Sub
'----PROCEDURA ZAPISU DATY I CZASU----.'
Sub Zapis
Godzina = Makebcd(godzina)
Minuta = Makebcd(minuta)
Dzientygodnia = Makebcd(dzientygodnia)
Dzien = Makebcd(dzien)
Miesiac = Makebcd(miesiac)
Rok = Makebcd(rok)
I2cstart
I2cwbyte 208
I2cwbyte 0
I2cwbyte Minuta
I2cwbyte Godzina
I2cwbyte Dzientygodnia
I2cwbyte Dzien
I2cwbyte Miesiac
I2cwbyte Rok
I2cstop
Cls
Locate 1 , 1
Lcd "ZAPIS"
Wait 2
End Sub
Getencoder:
Waitus 1
If Cha = 0 Then
If Chb = 0 Then Set Portd.4 Else Set Portd.3
End If
Waitms 1
Reset Portd.3
Reset Portd.4
Return