C Anfänger: binäre und dezimale Zahlen in C Programmen

Gast #3556
Lesenswert?

Versteh nicht ganz wie du das meinst...Also HEX Zahlrn ist wie du 
geschrieben hast klar. Z.B:

int i = 0xff;

Dezimalzahlen ist soweit auch klar:

int i = 255;

Binärzahlen werden meines Wissens nach "normalerweise" d.h. laut Ansi C 
gar nicht unterstützt aber sehr viele Compiler bieten eine Erweiterung 
an (z.B. tigcc mit 0b11111111).


Ich weiss nichts wies mit dem avrgcc ist, probiers einfach mal mit 
0b10101101 oder so aus!

Falls nicht, hilf nur ein umständliches Makro (oder Funktion) wo sichs 
aber schon aus Performance gründen nicht auszahlt so eins zu machen, 
ausserdem wäre es schlecht zu bedienen: BIN(1,0,0,0,1,1,1,0) zb.

Ich würde dir den Tip geben einfach Start, Ausführen, calc zu machen und 
einfach schnell umzurechnen,  für konstante Werte. Aber bei I/O Ports 
kannst sonst sowieso auch sbi() und sbi() verwenden

Niki
Gast #3558
Lesenswert?

sbi(portd, 1) setzt z.B. bit eins in portd.

ansonsten kannste aber auch recht schnell im kopf von binär nach hex 
umrechnen. hierbei ist ein binäres byte in 2 mal 4 bit zu zerlegen. 
diese kann man dann einzeln nach hex umrechnen. geht echt ganz gut, 
probier's mal.

Jonas
Gast #3560
Lesenswert?

Hi
vielen lieben Dank für eure Tipps!!!!!
Das mit "sbi(portd, 1)" hab' in der Theorie bereits gewusst, allerdings 
funktioniert es bei mir nicht  mit meinem Code Vision AVR Compiler - ich 
hab' in den Examples nach sowas gesucht, aber nix gefunden - ist für 
mich  eh  alles russich.......

Vielleicht kennt sich jemand mit dem Code Vison einbisschen aus...

mfg
Christian
Gast #3561
Lesenswert?

HI schau auf die Beitragszeit :-}

Bin auch gerade schwer am C umsteigen.

Also wenn man man sich mal über die ersten Russischhürden 
hinweggeschafft hat ist das einfach 
schweinsgeil/megasimpel/biszumnächstenproblem...

In code vision geht folgendes:

Die Ports sind alle komplett im zB 4433.h file hinterlegt
einbinden mit
#include <4433.h>

Die Portbezeichnungen sind 1:1 mit den Registernamen komp.

Setze bit #5 PORTB
PORTB.5=1 ;
Lösche
POSTB.5=0;


oder komplett
PORTB=0b11001100; binär
PORTB=0xFF;  hex
PORTB=127;   dezimal
POSTB=0125; octal

Oder nobel
#define PORTB.5 = Enable
Enable=1;  bit gesetzt

Übergebe Daten von PortB an variabele
WASS_LOS_AN_PORTB?=PINB

Und versa:
PORTB=Sosollssein

Bsp warte auf BF flag beim LCD

#define PINB.1 = BF

while ( BF==1 ) {};

Fertig ( klasse was ? )

Zahlen mit komma ( punkt ) verlangen ein float

uswusf......
Gast #3562
Lesenswert?

Hi
vielen lieben Dank für deine hilfreiche Antwort!!!! Woher weißt du das 
(url??) - ist ja nicht so, dass ich mir die Hilfe nicht angeschaut 
hätte, aber darauf binich nicht gekommen und in den examples werden 
immer immer geheimnissvolle headerdateien eingebunden, die ich nicht so 
richtig durchschaue (vgl Displayansteuerung mit 5 Befehlen.... - so 
richtig lernen kann manda nix?????)

mfg
Christian
Gast #3563
Lesenswert?

Hallo ihr lieben Leute da draußen
kann mir vielleicht jemand sagen, warum nix passiert, wenn ich folgendes 
in meinen AVR compiliert reinbrenne???

#include <90s2313.h>

void main(void)

{

PORTD.2=1;
PORTD.3=0;


}

Dank euch ganz herzlich!!!

mfg

PS:  mein experiemtier board ist OK und mit 15 Leds an jedem port 
ausgestattet.....
Gast #3566
Lesenswert?

Jo prima.

Binn gerade mit meinem Projekt an der 2k Grenze der free Version 
angelangt
(Ich glaub ich muss die 90 $ investieren.)

Hab das schon mal in Assembler geschrieben bin dann allerdings an
recht komplexen Mathematik gescheitert.
log exp tan und x^5 ( grusel )

Naja da hat C doch einiges zu bieten
Einfach so reinklappern wies auf dem papier steht fertig
( das war wirklich ne 2 min Aktion wenn ich denke ich hätte das in 
Assembler machen müssen )


Zur Frage Quellen:

Das AVR C-buch von Burkhard Mann
( die Beispiele sind eine Frechheit aber als Referenz echt gut )
Insbesonders gibt das einen guten Einblick welche
Programmiertechnik resourcen sparend ist

Gut zum nachschlagen wenn man merkwürdige Programmzeilen
verstehen möchte

Viel geklaut hab ich bei allen C AVR programmen die ich im Forum 
gefunden
habe

Und die Examples des Compilers  sind gar nicht so schlecht.

Und die Hilfe latürnich


Ich muss Dir zustimmen beim LCD demo lernt man gar nichts
5 befehle das wars

Tipp :
wie ein prinf o. sprinf  funktioniert ist allerdings der schlüssel zum 
verstehen
der Ausgabe ob auf LCD oder UART
und da gehts dann auch schon mit arrays und pointern los
Da brauchts ein Buch.


Da die lcd.lib  nur funktioniert wenn man 7 ports in reihe
übrig hat ( der 4433 kommt maximal auf 6 ) hab ich als erste
Aufgabe mal ne neue library geschrieben

Auf deinem 2313 dürftest du da auch probleme bekommen

Aber immerhin 1 Woche später (xxx) Stunden
LCD läuft mit allem schnickschnak
Der ADC liefert brav seine Daten ab
Die kommunikation zwischen PC und Gerät klappt auch schon in beide 
Richtungen
Und die formel ist auch schon drin

Phagsae
Admin Persönliche Seite #3567
Lesenswert?

Hi Phagsae,

vielleicht wäre es an der Zeit auf AVR-GCC umzusteigen :-)
Da hast du keinerlei Beschränkungen, und alles ist kostenlos! Auf so 
Sachen wie eingebaute LCD-Library musst du dann zwar verzichten, aber 
wenn man sie selbergeschrieben hat, dann weiß man wenigstens was sie 
tut, wie sie es tut und warum sie etwas vielleicht nicht tut.

MfG
Andreas
Gast #3569
Lesenswert?

Hallo, Spezialisten!
Ich bin ein echter Mikrocontroller Laie, muß aber für meine Schule 
(Berufsbegleitende HTL für Nachrichtentechnik) ein Programm für einen 
Frequenzzähler in C schreiben.
Der Controller mit dem ich arbeiten muss ist der SC12 (80186er)
http://www.bbs-winsen.de/GoBlack/ETechnik/sc12chip/
Kann mir vielleicht irgendjemand helfen?????
Ich kenne mich echt gar nicht aus!!!!!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren