Hallo, ich habe folgendes Problem, ich habe folgenden Code für eine gewisse Aufgabe: sbit KEY=P1^1; sbit RST=P3^2; sbit CS=P3^3; sbit SCL=P3^4; sbit SDA=P3^5; wo dann im eigentlichen Programm die Ausgänge damit gesteuert werden dass key = 1 oder key = 0 geschrieben wird. Das kenne ich auch von Bascom so, aber davon will ich mich eigentlich lösen und auf C umsteigen. sbit gibt es ja in für den GCC Compiler nich, hat da jemand eventuell was adequates im Ärmel mit dem man das auch irgendwie in der richtung definieren kann so dass ich nicht den ganzen Code umschreiben muss? Bzw, wie macht man das denn normalerweise in C Ein/Ausgänge anzusprechen ohne jedesmal die direkten Bits dafür anzu geben, denn wenn ich den Pin ändern möchte müsste ich ja jedesmal den Code komplett ändern. Von Bascom kenne ich das z.B. so: Config Pina.0 = Input Taster1 = Pina.0 Gibt es was adäquates auch in C? Bzw irgendeine Lib dazu? Weiß einfach nicht nach was ich da googeln soll. Wär über Hilfe sehr dankbar.
Ich kenne das Tut, und ich weiß dass ich so PORTB |= (1<<PB4) | (1<<PB5); einzelne Pins setzen kann. Dass es sbi/sbit nicht mehr gibt ist mir auch klar, die Frage war ob es equivalentes dafür gibt. Denn ich möchte ungern den kompletten Code umschreiben. Also vorsichtshalber nochmal: Ich suche eine Möglichkeit einem einzelnen Pin einen Namen zu geben über den ich diesen dann ansprechen kann, das erleichtert vor allem das portieren wenn man nur an einer Stelle die Definition der Pins ändern muss, ich werde wohl nicht der erste sein der nach sowas sucht oder?
David .. schrieb: > Dass es sbi/sbit nicht mehr gibt ist mir auch klar, die Frage war ob es > equivalentes dafür gibt. Was hindert dich daran, z.B. ein
1 | #define sbit_KEY PORTB|=(1<<PB4)
|
zu verwenden?
Erst mal vielen Dank für den Produktiven Beitrag :) Ganz einfach, wenn ich davon wüsste würde ich es tun ;) Kurzer Hintergrund, bisher habe ich immer Bascom für meine Projekte benutzt, möchte aber auf C umsteigen da wir das auch in der Uni benutzen. Wir schreiben da auch fleißig Programme am PC, und das klappt auch wirklich super, nur die Hardwarenähe beim Umgang macht mir irgendwie zu schaffen, aber darum frage ich ja hier ;) Wenn ich jetzt also dein Beispiel nehme: #define SCL PORTB|=(1<<PB4) kann ich dann im späteren Programmablauf einfach SCL = 1 schreiben um den Pin auf high zu setzen? So ganz klar ist mir das irgendwie noch nicht.
David .. schrieb: > Wir schreiben da auch fleißig Programme am PC, und das klappt auch > wirklich super, nur die Hardwarenähe ... Das Verständnis für oder die Kenntnis der Syntax hat nichts mit Hardware zu tun, statt Ports kann man genauso Bits in einem Byte ansprechen. > kann ich dann im späteren Programmablauf einfach > SCL = 1 schreiben um den Pin auf high zu setzen? Erstens hättest Du mit 'ner kurzen Suche bereits jede Menge Ergebnisse, zweitens macht ein #define nur eine Textersetzung. Setzt man also statt des SCL das Define in die Zuweisung, dann wird schnell klar, dass es so nicht geht. Dazu müsstest Du aber gelernt haben, wie ein #define arbeitet, also die Syntax beherrschen.
@Peter, auch danke dir für den Tipp, funktioniert schonmal :) Und ich meine auch Halbwegs verstanden zu haben wie das funktioniert. @MWS, hab ich behauptet ich wüsste alles? Wohl kaum. Darf man denn in diesem Forum eigentlich keine Fragen mehr stellen ohne ständig angepisst zu werden?
David .. schrieb: > Darf man denn in diesem Forum eigentlich keine Fragen mehr stellen ohne > ständig angepisst zu werden? Du fühlst Dich angegangen, wenn Dir jemand erklärt, Du sollst das Zeugs lernen, mit dem Du umgehst? Du glaubst Eigeninitiative kann durch ein Forum ersetzt werden? Dann bist Du genau der Richtige für die neue Brain 2.0 App LOL
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.