Hallo, ich bin gerade dabei etwas c zu lernen um dann so einen 8051 controller zu programmieren. ich verstehe nicht wo der unterschied zwischen bit und sbit liegt. Und in welchen Fällen man Sfr benutzt. Habe da leider nichts brauchbares ergooglen können. Könnt ihr mir da eine kleine hilfe geben? Grüße
hi also du weißt hoffe ich was nen SFR ist?! In einem SFR können bestimmte Bits einzeln adressiert und entsprechend ohne bitmaske gesetzt werden (sehr praktisch), die adresse für ein solches bit kann mit sbit name = sfr_bit_adresse gesetzt werden. aber bevor ich das jetzt groß erkläre guckst du hier sind sogar bsp dabei.... http://www.keil.com/support/man/docs/c51/c51_le_sbit.htm In der regel macht das deine IDE für dich....bei 8051 kann man keil uVision nehmen! Gruß Marcel Ps.: nen 8051 is ganz schön alt und nicht wirklich zeitgemäß oder bastler freundlich, lieber nen msp430 (eZ430 oder nen headerboard von olimex).
Kauf ein vernünftiges Buch (oder leihe es dir) z.B. Der Keil C51-Compiler von Michael Baldischweiler
> nen 8051 is ganz schön alt und nicht wirklich zeitgemäß oder > bastler freundlich Das erklär mir mal bitte genauer. Diese ewigen Diskussionen um "den gibts schon seit 20 Jahren, also ist er out" sind doch merkwürdig. Wozu einen AVR nehmen, bei dem es umständlich ist, die Dinger ans Laufen zu kriegen, EEPROMs verlieren den Inhalt, wenn's dumm läuft, einmal verfust und der Oszillator tut nicht mehr, und ein C-Programm frisst auch viel Platz. Warum soll er nicht bastlerfreundlich sein? Den gibts im gleichen Gehäuse wie die AVRs auch, und wenn ich mir angucke, was man zum Teil für Klimmzüge machen muss, bloß damit man mal das AVR-Studio eingerichtet bekommt bzw. wie man dort Projekte "verwalten" kann, muss ich sagen, dass die 8051 wesentlich geschickter und etablierter sind, was IDEs, Tools, usw. angeht. Und wenn Atmel so weitermacht wie bisher, gehen sie evtl. sowieso baden, und dann ist Ende mit AVRs. Bei nem 8051 wechsel ich halt auf einen anderen Hersteller, n.m. unter Beachtung der Pin-Kompatiblität und onboard-Peripherie, und das wars (abgesehen von evtl. notwendigen Software-Anpassungen und evtl. geändertem Programmier-Equipment). Sicher, es werden vielleicht nicht mehr viele neue 8051-Derivate entwickelt werden, aber es hat schon seinen Grund, warum es sie immer noch gibt. Ralf
@Ralf (Gast) ich hoffe der Text ist nicht erst gemeint. die Atmel kann man mit C programmieren, aber auch mit ASM. Dafür braucht man nur AVR-Studio installieren und gut ist. Gibt es wirklich probleme mit dem eeprom die nicht auf falsche Hardware zurückzuführen sind? Wenn man auf einen 8051 100V gibt geht auch auch nicht mehr. Das mit Fuse mag vielleicht sein, aber ein wenig wissen mas man macht ist schon nicht schlecht.
Hi also ich sags erstmal so: wer LESEN kann ist ganz klar im Vorteil!!!! ich hab nix von AVR oder Atmel geschrieben....MSP430!!!!! So die Vorteile liegen ganz klar auf der Hand für 30€ bekommst du nen fertiges Devkit (ez430 oder nen LPT degugger mit headerboard)! IDE bei TI saugen zusammen mit beispielen und loslegen instalation dauert ca. 5min und die erste LED blinkt! Vorteil sehr preiswertes kit, zeitgemäße technik, einfache handhabe, easy debugging via jtag, uC können bei ti ohne probleme gesampeled werden! zudem bietet ti eine leistungsstarke ide mit 16k code frei (keil hat gleube ich 4k in der demo). ok die bauform im qfp/lqfp ist nur was für richtige leiterplatten, aber dafür kann man auch sehr einfach ne schicke ziel lsg implementieren. und zum basteln ist nen headerboard optimal! der msp ist nen super cpu den es mit sau viel drum herum gibt--> für jede anwendung gibts den richtigen! gruß marcel
ähm könntet ihr vll unterlassen meinen thread für sowas unnötiges zu missbrauchen? danke. ne ich möchte mir für diese Frage kein Buch kaufen. Wollte einfach nur den Unterschied zwischen sbit und bit wissen. SFR ist mir wieder klar geworden ;)
Hallo bull8051, ich habe sehr schnell C für den 8051er mit der Beschreibung im Anhang gelernt. Ist zwar für µC/51 aber funktioniert auch für den Keil Compiler sehr gut. Rufus
Hallo bull51, entschuldigung, habe die falsche Datei erwischt und angehangen. Hier die richtige C-Beschreibungs-Datei. Rufus
nen bischen was zum Lesen. http://sdccokr.dl9sec.de/resources.htm http://sdcc.sourceforge.net/ http://www.8052.com/tut8051 http://www.pjrc.com/tech/8051/board5/blink_sdcc.html http://www.opcube.com/home.html
SBIT deklariert ein Bit in einem SFR oder ein Bit in einer normalen Byte-Variablen, wenn diese im Bit-adressierbaren Speicher liegt, der 8051 hat 16 Bytes, deren Bits direkt angesprochen werden können, ergibt also bis zu 128 Bit-Variablen. BIT verwendet eben eines dieser Bits und legt somit eine Bit-Variable an. Ralf
bull8051 wrote: > ich verstehe nicht wo der unterschied zwischen bit und sbit liegt. Und > in welchen Fällen man Sfr benutzt. sbit, sfr, sfr16 müssen an ganz bestimmten Adressen liegen, damit sie die gewünschte Peripheriefunktion ausführen. Sie sind deshalb in der reg***.h vordefiniert. bit, char, int, float sind Variablentypen, sie erhalten erst vom Linker ihre Adresse zugewiesen. Peter
ah verstehe vielen dank! kleine frage noch, hab ne kleine zeitschleife gemacht, aber iwie läuft die nur einmal durch: for (i=100; i!=0; i--) {;} wo ist da der Fehler?
Vielleicht ist sie der Optimierung des Compilers zum Opfer gefallen. Oder der Simulator / Debugger führt Zeile für Zeile aus, nicht Befehl für Befehl.
> kleine frage noch, hab ne kleine zeitschleife gemacht, aber iwie läuft > die nur einmal durch: for (i=100; i!=0; i--) {;} Wie lange soll die Schleife laufen und wie prüfst du, ob sie nur einmal durchläuft? Simulator? Ralf
ich benutze ride und mache step by step betrieb. dort wird dir zeile nur einmal durchlaufen. könnte natürlich sein das sie trotzdem dann auf der platine richtig funktionieren würde.
Dann kannst du dir entweder den entsprechenden Assembler-Output angucken, ob es da richtig implementiert ist, oder du benutzt einen Simulator, der dir die vergangene Zeit anzeigt (so wie bei Keil C51), sofern RIDE das hat (einen externen würd ich nicht empfehlen, weil die meistens den C-Code nicht simulieren können). Oder eben direkt in der Schaltung, z.B. während der Schleife einen freien Portpin invertieren. Ralf
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.