Hallo Zusammen,
ich schreibe / entwickle gerade ein Programm um 7 Segment Anzeigen über PCF 8574 direkt anzusteuern.
Nachdem ich nun das Rumpfgerüst soweit fertig geschrieben habe mache ich einen ersten Syntax Check; einige kleine Fehler
die schnell gefunden wurden.
Es bleibt aber ein Fehler den sich nicht zuordnen kann. Wenn man in der Fehlerleiste unten doppelt clickt wird die letzte Befehlszeile des
gesamten Programms angegeben.
Die Fehlermeldung lautet : Error: 46 Line 172 Assignment Error, unknown Variable (DIM) [Compare1A:0 24999 :112] in file --> Programmname
Zeile 172 ist die letzte Programmzeile.
Wenn ich jetzt noch ein paar mal Einter drücke, kommt die gleiche Fehlerbeschreibung mit der entsprechenden höheren Zeilennummer.
Was ist das ? Ich find es nicht, und suche schon mehrere Tage
Kann sich das bitte mal jemand anschauen Vielen Dank vorab!
Gruss
Theo
Hier mein Programm:
Alles anzeigen
ich schreibe / entwickle gerade ein Programm um 7 Segment Anzeigen über PCF 8574 direkt anzusteuern.
Nachdem ich nun das Rumpfgerüst soweit fertig geschrieben habe mache ich einen ersten Syntax Check; einige kleine Fehler
die schnell gefunden wurden.
Es bleibt aber ein Fehler den sich nicht zuordnen kann. Wenn man in der Fehlerleiste unten doppelt clickt wird die letzte Befehlszeile des
gesamten Programms angegeben.
Die Fehlermeldung lautet : Error: 46 Line 172 Assignment Error, unknown Variable (DIM) [Compare1A:0 24999 :112] in file --> Programmname
Zeile 172 ist die letzte Programmzeile.
Wenn ich jetzt noch ein paar mal Einter drücke, kommt die gleiche Fehlerbeschreibung mit der entsprechenden höheren Zeilennummer.
Was ist das ? Ich find es nicht, und suche schon mehrere Tage
Kann sich das bitte mal jemand anschauen Vielen Dank vorab!
Gruss
Theo
Hier mein Programm:
Quellcode
- $regfile = "Attiny85.dat"
- $crystal = 8000000 'interner Takt ohne Quartz
- $swstack = 40
- $hwstack = 20
- $framesize = 8
- '######### Eingänge definieren
- Declare Sub Sekunde_stellen()
- Declare Sub Minute_stellen()
- Declare Sub Std_stellen()
- 'Array für Segmente einreichten
- Dim Array_D(12) as Byte
- Array_D(1)= &B00010100 'ist 0
- Array_D(2)= &B11110101 'ist 1
- Array_D(3)= &B01010010 'ist 2
- Array_D(4)= &B01110000 'ist 3
- Array_D(5)= &B00110101 'ist 4
- Array_D(6)= &B00111000 'ist 5
- Array_D(7)= &B10011000 'ist 6
- Array_D(8)= &B01110101 'ist 7
- Array_D(9)= &B00010000 'ist 8
- Array_D(10)= &B00110011 'ist 9
- Array_D(11)= &B11111111 'alle Segmente aus incl. DP
- Array_D(12)= &B00000000 'alle Segmente an incl DP
- 'I2C einrichten
- Config SCL=Portb.2
- Config SDA=Portb.0
- Const AdrSec_E= &B01000000'Adresse Sekunden Einer
- Const AdrSec_Z= &B01000010 'Adresse Sekunden Zehner
- Config Dcf77 = PinB.3 , Inverted = 1 , Timer = 1 , Update = 0 , Debug = 0 , Check = 1 , Gosub = Sectic
- Config Date = Dmy , Separator = .
- Enable Interrupts
- Dim Sync_Uhr as Byte
- Dim Neue_sekunde As Byte
- Dim Sek_alt as Byte
- Sek_alt =0
- Dim Sek as Byte
- Dim Sek_E as Byte
- Dim Sek_Z as Byte
- Sek_E=0
- Sek_Z=0
- Dim Min_alt as Byte
- Min_alt=0
- Dim Minu as Byte
- Dim Min_E as Byte
- Dim Min_Z as Byte
- Min_E=0
- Min_Z=0
- Dim Std_alt as Byte
- Std_alt=0
- Dim Stund as Byte
- Dim Std_E as Byte
- Dim Std_Z as Byte
- Std_E=0
- Std_Z=0
- Do
- Sync_Uhr=Dcf_status.7 '=0 wenn nicht synchronisiert; =1 wenn synchronisiert
- If Neue_sekunde = 1 Then
- Neue_sekunde = 0
- End If
- Sek= _sec
- Minu= _min
- Stund= _hour
- if sek <> Sek_alt then
- Sekunde_stellen
- End if
- if Minu<> Min_alt then
- Minute_stellen
- End if
- if Stund<> Std_alt then
- Std_stellen
- End if
- Loop
- End
- Sectic:
- Neue_sekunde = 1
- Return
- Sub Sekunde_stellen()
- if sek<10 then
- Sek_Z=0
- Sek_E=Sek
- Elseif sek > 9 then
- Sek_Z=Sek/10
- Sek_E=Sek Mod 10
- End if
- Sek_alt =sek
- 'hier Daten per I2C senden
- 'Sekunden Einer senden
- I2Cstart
- I2Cwbyte AdrSec_E
- I2Cwbyte Array_D(Sek_E+1)
- I2CStop
- 'Sekunden Zehner senden
- I2Cstart
- I2cwbyte AdrSec_Z
- I2Cwbyte Array_D(Sek_Z+1)
- I2CStop
- End Sub
- Sub Minute_stellen()
- if Minu<10 then
- Min_Z=0
- Min_E=Minu
- Elseif Minu>9 then
- Min_Z=Minu/10
- Min_E=Minu Mod 10
- End if
- Min_alt=Minu
- 'hier Daten per I2C senden
- End Sub
- Sub Std_stellen()
- if Stund<10 then
- Std_Z=0
- Std_E=Stund
- Elseif Stund >9 then
- Std_Z=Stund/10
- Std_E=Stund Mod 10
- End if
- Std_alt=Stund
- 'hier Daten per I2C sende
- End Sub