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).
> 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
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?
> 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