-
Alias in Bascom
Hi,
ich suche eine Möglichkeit in Bascom, bei der man erst wie beim Alias
einem Port einen namen gitb, zb.
Led1 = portb.1
Led2 = portb.2
man das ganze dann ungefähr so abfragen kann
Dim I as byte
Do
Led(I) = 1
waitms 100
Led(I) = 0
waitms 100
I = I + 1
Loop
Das funktionirt mit alias nicht.
Gibt es da andere Möglcihkeiten?
-
Was es gibt:
Code:
Dim I as byte
Do
for i = 0 to 7
portb.i = 1
waitms 100
portb.i = 0
waitms 100
next
Loop
Meinst du sowas ?
-
Hi,
ja das meine ich aber nicht ganz, denn ich habe fast alle Ports eines At16
27 je 3 Pins für eine Led R G B. Dann möchte ich die
R1 = Rot LED1
...usw. nennen
und später dann in ner for next schleife das Rot(1) austauchen.
Ich hoffe man kans verstehen.
-
Zwischentabelle ?
Eine Tabelle: index---> welches Port & Pin
0 ... portb . 1
1 ... portc . 3
2 ... portd . 7
.....etc. ...
PS: wie das technisch geht, reden wir, wenn es überhaupt was für dich ist
-
Hi,
ja das kann funktioniern, die hauptsache ist, dass die Ports andere Namen
bekommen, mitdenen man das machen kann wie ich mir das vorstelle.
Siehe oben
-
Ich hatte mal eine Tabelle, immer paarweise
PORT-ADDRESSE , PIN
da konnte ich mit (z.B) "lookup" über einen durchgängigen Index beliebige Port-Pins ansprechen
Die tabelle war damit auch im Flash und hat dadurch keinen SRAM verbraten,
z.B die Pins von PORTB hiessen da so:
Code:
Port_Tab:
DATA &H38 , 1
DATA &H38 , 2
DATA &H38 , 4
DATA &H38 , 8
DATA &H38 , 16
DATA &H38 , 32
DATA &H38 , 64
DATA &H38 , 128
Den Zugriff hab' ich allerdings dann gleich im Inline-Assembler gemacht, weil es einfacher war. Is keine Sache, könnt ich dir zeigen
-
Alias?
warum soll das nicht gehen?
Config Pinb.0 = Output
Led Alias Portb.0
oder hab ich etwas missverstanden?
-
Noch ein Hinweis: Namen wie "R1" sollten nicht verwendet werden, da dadurch direkt Register angesprochen werden. (Den Fehler hatte ich auch mal). Lieber Rot1 etc.
-
Hi,
es ging darum, den Port und welches I/O gemeint ist, mit Variablen zu
bestimmen. Dann braucht man keine Riesen Do-Loops, sondern kann
das ganze in ner kleinen For-next abhandeln. Ich glaube man kann
das auch irgendwie mit Porta.COL = 1 machen, habe ich aber noch
noicht probiert.