Autor |
PIC und C Amfängerfrage Suche nach: pic (2056) |
|
|
|
|
BID = 486281
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
|
Zitat :
|
Und die Bitschiebereien bei
der Abfrage sind nicht nötig |
Das sind ja Ausdrücke, die vom Präprozessor noch ordentlich umgesetzt werden in endgültige werte.
Aus nem
#define Taste, 4
1<<Taste
wird später schlicht und einfach der Wert 0x10 gebildet. Aber wer will schon mit so nichtssagenden Werten wie 0x10 oder meinetwegen 16 arbeiten? Zumal wird dann die Portierung wesentlich einfacher.
Allerdings hast du vollkommen Recht, wenn man Bitfelder nutzt, dann ist das etwas anderes. Allerdings kann ein Bitfeld auch größer als 1 Bit breit sein, da würde es teilweise schonwieder Sinn machen.
Und auf goto sollte man gänzlich verzichten, wo wir schon beim sauberen Programmieren sind. Dieses Relikt ist wirklich überflüssig.
So, zum Thema:
Klappts denn?
_________________
|
|
BID = 486302
Nukeman Schriftsteller
Beiträge: 754 Wohnort: bei Kleve
|
|
Hi
ich gebe Dir(DonComi) Recht, dass der Code oftmals lesbarer wird, wenn
man mit Bitschiebe-Operationen arbeitet und die Arbeit den Präprozessor
machen lässt.
Will hier auch keinen Zeigefinger heben. Jeder soll so programmieren
wie es ihm am besten gefällt
Beim vorliegenden Fall hat der Compiler die if-Anweisung wegoptimiert.
Sie hatte auch keinen Bezug zum Portbit T.
;if (!(i & 0<<'T'))
ist gleich mit
;if (!(i & 0 )
ist gleich mit
;if (!0)
ist gleich mit
if(1) -> den elseteil hat der Compiler also auch gleich weggelassen.
Das meint er mit "Condition is always true".
Gruß
Stefan
|
|
BID = 486315
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Moin,
Nein, nein, ich wollte ebenfalls keinen Zeigefinger heben, ich habe dich schon verstanden, du bezogst dich ja auf den konkreten Fall
Ich war zuerst leicht verwirrt über das 'T', das ja nichts anderes ist als der entsprechende ASCII-Kode für das T, das Bit wurde also iins Nirvana geschoben .
_________________
|
BID = 487359
Herrminator Gelegenheitsposter
Beiträge: 87
|
Gutes Neues Jahr wünsche ich euch allen.
Jetzt bin ich wieder fit.
Habe das Programm von Nukeman mal getestet.
Und habe an RA 5 einen Schließer angeschlossen.
Nun habe ich ja bei Taster gedrückt 4,78 V und bei nicht gedrückt 0V (über Pulldown Widerstand) Meine LED leuchtet, also bin ich im else Teil.
Auf Drücken des Tasters bleibt er im else Teil...
Gruß Tobias
|
BID = 488387
Herrminator Gelegenheitsposter
Beiträge: 87
|
Mir fällt grad ein, ich benutze einen 16F690 und hab meinen Taster am Pin RC7 momentan angeschlossen. Kann es sein das ich noch was umstellen muss das der Pin mein Pegel erkennt ?
Gruß Tobias
|
BID = 488426
Racingsascha Schreibmaschine
Beiträge: 2247 Wohnort: Gundelsheim
|
Du musst das serielle Interface (vermutlich I2C bzw SPI) und den Komparator/ADC (je nach dem was in dem PIC drin ist) ausschalten. Die Serielle ist es vermutlich schon, die Analogen Bestandteile sind beim POR aber gerne schon aktiviert. Schau aber sicherheitshalber nochmal im Datenblatt nach.
_________________
Fnord ist die Quelle aller Nullbits in deinem Computer.
Fnord ist die Angst, die Erleichterung, und ist die Angst.
Fnord schläft nie.
|