Forum: Mikrocontroller und Digitale Elektronik c: bit,sbit, sfr


von bull8051 (Gast)


Lesenswert?

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

von Marcel (Gast)


Lesenswert?

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

von hans (Gast)


Lesenswert?

Kauf ein vernünftiges Buch (oder leihe es dir)

z.B. Der Keil C51-Compiler von Michael Baldischweiler

von Ralf (Gast)


Lesenswert?

> 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

von Peter (Gast)


Lesenswert?

@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.

von Marcel (Gast)


Lesenswert?

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

von bull8051 (Gast)


Lesenswert?

ä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 ;)

von Rufus (Gast)



Lesenswert?

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

von Rufus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo bull51,
entschuldigung, habe die falsche Datei erwischt und angehangen.
Hier die richtige C-Beschreibungs-Datei.

Rufus

von Bernd (Gast)


Lesenswert?


von bull8051 (Gast)


Lesenswert?

mh danke aber da steht auch nicht der unterschied von sbit und bit drin.

von Ralf (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von bull8051 (Gast)


Lesenswert?

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?

von bull8051 (Gast)


Lesenswert?

gibts keinen?

von eProfi (Gast)


Lesenswert?

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.

von daniel (Gast)


Lesenswert?

warum Atmel?
einfach Xilinx FPGA nehmen und den einfachen pico benutzen :)

von Ralf (Gast)


Lesenswert?

> 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

von bull8051 (Gast)


Lesenswert?

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.

von Ralf (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.