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
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