PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Alias funktioniert nicht?!



TobiasBlome
26.02.2008, 21:37
Hallo,
ich möchte in meinem Programm Alias benutzen. Ohne Alias funktioniert das Programm(Pin´s direkt angegeben)!

Hab ich beim Alias einen Schreibfehler oder so etwas?

Bei Case "0" werden diese beiden Zeilen rot markiert!
>Segment_a = 1
>Segment_b = 1

Tobias


'Konfiguration µC:

$regfile = "m8def.dat" 'AT-Mega8
$crystal = 8000000 '18432000

$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 8 ' default use 10 for the SW stack
$baud = 38400 '38400 wenn langsamer flimmert die Anzeige!!!!

'_________________________________________________ ______________________________
'0=Eingang / 1=Ausgang
Ddrb = &B11000000 'PortB = PB7+6=Ausgang 7Seg)Rest als Eingänge, damit Programmable in System
Ddrc = &B000000 'PortC = Eingang
Ddrd = &B11111110 'PortD = PD0=RS232 Input, PD1=RS232 output,PD2-PD7=Ausgang 7Seg)

'_________________________________________________ ______________________________
Dim Anzeige_akt As Word 'Aktuelle Zeitmessung
Dim Anzeige_str As String * 5 'Zeit als String
Dim Anzeige_str_len As Byte 'String-Länge
Dim Anzeige_ziffer As String * 1 'Aktuelle Ziffer
Dim Anzeige_pos As Byte 'Aktuelle Ziffer im String
Dim I As Byte 'Allgem. Laufzahl

Dim A As Integer 'für RS232
Dim Rs232 As Integer 'für RS232


'_________________________________________________ ______________________________
'Alias vergeben:
Segment_a = Alias Portd.2 'rote Ader
Segment_b = Alias Portd.3
Segment_c = Alias Portd.4
Segment_d = Alias Portb.6
Segment_e = Alias Portb.7
Segment_f = Alias Portd.5
Segment_g = Alias Portd.6
Segment_dp = Alias Portd.7

'_________________________________________________ ______________________________


Rs232 = 0


Do
Anzeige_str = Str(anzeige_akt) ' Wert in String umwandeln
Anzeige_str_len = Len(anzeige_str) ' Stringlänge messen

Anzeige_pos = Anzeige_str_len - I
Anzeige_pos = Anzeige_pos + 1

Anzeige_ziffer = Mid(anzeige_str , Anzeige_pos , 1)

Portc = 0 'Ghosting vermeiden (damit nich auf allen Anzeigen die selbe Zahl steht!!!)

'Auswahl der Ziffer und festlegung der einzelnen segmente
Select Case Anzeige_ziffer

Case "0" : 'Ziffer NULL
Segment_a = 1
Segment_b = 1
Segment_c = 1
Segment_d = 1
Segment_e = 1
Segment_f = 0
Segment_g = 0

Case "1" : 'Ziffer EINS
Segment_a = 0
Segment_b = 1
Segment_c = 1
Segment_d = 0
Segment_e = 0
Segment_f = 0
Segment_g = 0


Case "2" : 'Ziffer ZWEI
Segment_a = 1
Segment_b = 1
Segment_c = 0
Segment_d = 1
Segment_e = 1
Segment_f = 0
Segment_g = 1


Case "3" : 'Ziffer DREI
Segment_a = 1
Segment_b = 1
Segment_c = 1
Segment_d = 1
Segment_e = 0
Segment_f = 0
Segment_g = 1


Case "4" : 'Ziffer VIER
Segment_a = 0
Segment_b = 1
Segment_c = 1
Segment_d = 0
Segment_e = 0
Segment_f = 1
Segment_g = 1


Case "5" : 'Ziffer FÜNF
Segment_a = 1
Segment_b = 0
Segment_c = 1
Segment_d = 1
Segment_e = 0
Segment_f = 1
Segment_g = 1


Case "6" : 'Ziffer SECHS
Segment_a = 1
Segment_b = 0
Segment_c = 1
Segment_d = 1
Segment_e = 1
Segment_f = 1
Segment_g = 1


Case "7" : 'Ziffer SIEBEN
Segment_a = 1
Segment_b = 1
Segment_c = 1
Segment_d = 0
Segment_e = 0
Segment_f = 0
Segment_g = 0


Case "8" : 'Ziffer NEUN ACHT
Segment_a = 1
Segment_b = 1
Segment_c = 1
Segment_d = 1
Segment_e = 1
Segment_f = 1
Segment_g = 1


Case "9" : 'Ziffer NEUN
Segment_a = 1
Segment_b = 1
Segment_c = 1
Segment_d = 1
Segment_e = 0
Segment_f = 1
Segment_g = 1


Case Else :
Segment_a = 0
Segment_b = 0
Segment_c = 0
Segment_d = 0
Segment_e = 0
Segment_f = 0
Segment_g = 1


End Select

'Segment wählen
If I = 1 Then Portc.1 = 1 'EINER
'If I = 2 Then Portc.2 = 1 'ZEHNER
If I = 2 Then
Portc.2 = 1 'ZEHNER
Portd.7 = 1 'EINE Kommastelle (Punkt einschalten)
End If
If I = 3 Then Portc.3 = 1 'HUNDERTER
If I = 4 Then Portc.4 = 1 'TAUSENDER

I = I + 1 'Nächste Ziffer
If I >= 5 Then I = 1 'max Anzeigen angeben! damit Anzeige möglichst hell ist(bei 5Anzeigen muss bei der 6. wieder bei 1 Angefangen werden)


'ENDE ANZEIGE


If Usr.rxc = 1 Then 'Wenn Byte empfangen...
A = Udr 'Byte aus UART auslesen
Input Rs232 'Noecho 'über RS232 empfangen
'Print "out " ; RS232 'ÜBERLASTET den µC!!!
End If


'Wert von serieller Schnittstelle auf Anzeige Übernehmen
Anzeige_akt = Rs232


Loop



'-------------------------------------------------------------------------------
'Anschlussbelegung am AT-MEGA8
'-------------------------------------------------------------------------------

'Segment A = PD2 (rote Ader)
'Segment B = PD3
'Segment C = PD4
'Segment D = PB6
'Segment E = PB7
'Segment F = PD5
'Segment G = PD6
'Segment DP = PD7

'Zahl 1 = PC1 ganz rechts EINER (rote Ader)
'Zahl 2 = PC2 2.Stelle von Rechts ZEHNER
'Zahl 3 = PC3 3.Stelle von Rechts Hunderter
'Zahl 4 = PC4 4.Stelle von Rechts Tausender

' a
' -
'f|g|b
' -
'e| |c
' -
' d

BlaueLed
26.02.2008, 22:05
Hi Tobias,

ich würde mal sagen, das das = Zeichen da weg muss. also so:

Segment_a alias Portd.2

dann gehts auch mit den Aliassen :-)

mfg Kay

TobiasBlome
26.02.2008, 22:11
JuHuu

Danke! Das war´s - hab wohl den Wald vor lauter Bäumen nicht gesehen ;-)

Danke - Tobias

chr-mt
26.02.2008, 22:16
Und die Doppelpunkte hinter den Case brauchst du auch nicht ;)

Ist ja echt ein gemeiner Fehler mit den = Zeichen.
Ich hab' eben 10 Minuten rumprobiert und habe auch den Wald vor lauter Bäumen auch nicht gesehen... irgendwann habe ich die Alias Zeile einfach neu geschrieben und erst da ist mir das zusätzliche "=" aufgefallen.

Aber Kay war sowieso schneller :)

Gruß
Christopher

BlaueLed
26.02.2008, 22:30
Juhu, ich war schneller :-)

mfg Kay