PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Alias in Bascom



Furtion
31.12.2007, 17:11
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?

PicNick
31.12.2007, 17:31
Was es gibt:



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 ?

Furtion
31.12.2007, 17:44
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.

PicNick
31.12.2007, 17:50
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

Furtion
31.12.2007, 18:01
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

PicNick
31.12.2007, 18:19
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:



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

TobiasBlome
25.01.2008, 19:17
warum soll das nicht gehen?

Config Pinb.0 = Output
Led Alias Portb.0


oder hab ich etwas missverstanden?

Jaecko
25.01.2008, 20:32
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.

Furtion
25.01.2008, 21:57
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.