PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR Port Status Berechnen



AVRboy
20.11.2006, 18:42
hi,

ich wollte mal wissen ob und wie man einen Port Status berechnen kann.

wenn ich das richtig interpretiere da sieht das so aus: Z.B.

Porta 255 da 8 Bit

Pina0 = 1
Pina1 = 2
Pina2 = 4
Pina3 = 8
Pina4 =16
Pina5 =32
Pina6 = 64
Pina7 =128 ist alles zusammen 255 stimmts.

Jetzt muss ich doch irgend wie den Pin berechnen können der gedürckt ist.
Z.B.

Pina2 ist gedrückt also ist der 255(8Bit)- Wert=...

255 - 251 = 4

Nun weis ich welcher Taster gedückt ist stimmts.

Wie finde ich das aber dann in Bascom heraus ich habe es mal auf verschidene weissen probiert ging aber alles nicht.

Also z.b. so

While Portx = 255
Lampe AUS

???????????????????????

Mir geht es erst mal nur darum den wert (251 ,....) dem port zu entlocken.

Naja vieleicht ein bisschen umständlich aber man macht sich gedanken.

mfg

P.S:Vieleicht was für C prog.............................................. ............

franzl
20.11.2006, 18:56
hallo,
also erstens musst du eingänge mit pin abfragen und nicht mit port.
auserdem wenn porta.2 gedrückt ist 255-4=251.
mfg franzl

AVRboy
20.11.2006, 19:05
SCHON aber der normal wert ist 255 und wenn ich PINA2 drücke geht der auf 251 und 255-251 ist 4 also weiss ich jetzt das pina2 gedrückt wurde.

nun würde ich gerne wissen wie ich z.b. die 251 dem port entlocke umd das zu berechnen.

franzl
20.11.2006, 19:10
hallo,
also entweder schreibst du if pina.2 = 1 then oder if pina = 251 then
soweit ich weiß allerdings ist das zweite eher unüblich und eigentlich auch schwachsinnig, denn was ist nun wenn noch irgendein eingang an pina anliegt dann stimmt deine aussage nicht mehr.
mfg franzl

Raimond
27.11.2006, 20:50
Hallo AVRBoy

falls ich Deine Frage richtig verstanden habe, möchtest Du den Gesamtwert (8bit) je nach aktivierten Port haben.

hier mal eine Idee, ist aber nicht getestet müsste aber funktionieren



Dim Temp As Byte
Dim Portstatus As Byte
Dim N As Byte

Do
Temp = 0
For N = 7 To 0 Step -1
Shift Temp , Left , 1
Temp = Pind.n
Next N

Portstatus = Temp
Loop


Gruß, Raimond

AVRboy
13.12.2006, 20:09
hi,
in einem projekt von mir ist die port "berechnung" jetzt drin habe es selbst heraus bekommen aber danke.
mfg