umstieg von JAVA auf C.... ein paar anfängerfragen

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 18 10 2024  22:32:48      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
umstieg von JAVA auf C.... ein paar anfängerfragen

    







BID = 158337

MinceR

Stammposter



Beiträge: 277
 

  


hallo, ich hab ein paar fragen zu denen ich komischerweise nix ordentliches finde.

also, ich möchte einen sting ausgeben und gleichzeitig zwei variablen. ausserdem möchte ich am anfang eine zahl einlesen. ich hoffe ihr könnt mir verraten wie ich das mache. ich hab irgendwie probleme damit, das schlimmste ist aber das ich aus dem kack compiler nicht schlau werde.




#include <stdio.h>
int main()
{
int b=1;
int eingabe=2;
printf ( "durch welche zahl soll ich 1-50 sauber teilen?\n" );
//eine zahl einlesen und in variable eingabe reinschreiben.

while(b<50){
if (b%eingabe== 0){
printf ( "kann man sauber teilen durch\n" );
}
b=b+1;
}
return 0;
}


MfG MinceR

BID = 158338

MinceR

Stammposter



Beiträge: 277

 

  

ach das mit der ausgabe hab ich direkt hingekriegt. dank meinem schlauen buch
printf ( "%i kann man sauber teilen durch %i\n",b,eingabe );
so klappt das proggi schon, nur ich möchte noch irgendwie eine integer zahl in eingabe reinkriegen. das das irgendwie mit scanf geht hab ich auch schon rausgekriegt. hmm :D

BID = 158340

Nukeman

Schriftsteller



Beiträge: 754
Wohnort: bei Kleve

Hi MinceR,

//eine zahl einlesen und in variable eingabe reinschreiben.

ersetzen durch:

scanf("%d",&eingabe);

-> liest an die Adresse von der Variablen eingabe (= &eingabe)
eine Zahl ein die im Format %d (=dezimal) eingegeben wird.
( oder %x für Hex-Eingabe usw. )

Ich hoffe das hilft Dir weiter.

Gruss,
Stefan


BID = 158341

MinceR

Stammposter



Beiträge: 277

jou danke danke. das & hat ich vergessen. muss wohl doch mein "C für dummies" suchen :D

BID = 158395

MinceR

Stammposter



Beiträge: 277

ich hab noch ne frage, ich suche eine möglichkeit in einer 1 byte variablen z.b. bit0 , bit1, bit2 usw einzeln zu stetzen, nicht über 1,2,4,8... dazuzuaddieren. sondern auch so für den fall das bit2 schon gesetzt ist. das ganze natürlich auch in umgekehrter reienfolge.

da sollt es doch eigentlich was schön einfaches für geben. ich hab mir da was überlegt wie ich das machen könnte aber das wird aaaaarg kompliziert. so z.b. das ich mir boolean variablen von bit0 bis 7 definiere alle erst mal auf 0 sowie das ausgangsbyte. dann wenn ich einer funktion z.b. bit0, 1 übergebe wird dieses gesetzt und auch zum byte 1 dazugezählt, vorausgesetzt das es nicht schon 1 ist. also ziemlich umständlich
im umgegehrten fall wollt ich mir zuerst eine funktion schreiben der ich ein byte übergebe und die mir dann die boolschen variablen bit0 bis bit7 so setzt wie es in der byte variablen ist.
also wenn das byte >=128 dann setze variable bit7.
byte minus 128
wenn byte >=64 dann setze variable bit6 usw usw.
am ende hab ich dann 2 seiten quelltext nur für die bits in einem byte zu lesen oder zu schreiben.

ich muss nämlich an einer memory mapped io karte einzelne bits an einem port ausgeben (z.b. led an/aus) am nächsten port was einlesen usw. und ich kann der aber nur den zustand von einem port also 1 byte übergeben.

p.s. Hiiilfe

BID = 158597

Nukeman

Schriftsteller



Beiträge: 754
Wohnort: bei Kleve

Hi nochmal,

das müsste in etwa so gehen:



Code :


union
{
unsigned char by;
struct
{
unsigned char b0:1;
unsigned char b1:1;
unsigned char b2:1;
unsigned char b3:1;
unsigned char b4:1;
unsigned char b5:1;
unsigned char b6:1;
unsigned char b7:1;
} bfld;
} unByte;



Die Bitfelder b0..b7 sind dabei dem Byte "by" überlagert.
Wichtig der typ unsigned char muss dann auch ein Byte
gross sein.
Angesprochen wird das dann im Programm z.B. so:

unByte.by = 0x44; // direkt das ganze Byte ansprechen
unByte.bfld.b0 = 1; // hier wird nur das Bit b0 verändert

-> jetzt ist unByte.by = 0x45;

Bin mir momentan aber nicht sicher, ob die Bitfelder
ANSI-C - konform sind, evtl. kann das also nicht jeder
Compiler.

Gruss,
Stefan


[ Diese Nachricht wurde geändert von: Nukeman am  3 Feb 2005 21:51 ]

BID = 158682

giwer

Stammposter



Beiträge: 202

#define BIT_0 0
#define BIT_1 1
...
#define BIT_7 7

uint var;

var |= ((1<<BIT_1) | (1<<BIT_6)); // setzt Bit 1 und 6 in Variable var auf 1

var &= ~((1 << BIT_1) | (1 << BIT_5)); // setzt Bit 1 und 5 in Variable var auf 0


struct
{
unsigned int bit_0:1;
unsigned int bit_1:1;
unsigned int bit_2:1;
unsigned int bit_3:1;
unsigned int bit_4:1;
unsigned int bit_5:1;
unsigned int bit_6:1;
unsigned int bit_7:1;
} bitfeld;

bitfeld.bit_5 =1; // Bit 5 setzen
bitfeld.bit_4 =0; // Bit 4 löschen


BID = 158753

MinceR

Stammposter



Beiträge: 277

dank euch,

ich habs hingekriegt. C ist ja ne ziemlich geile sprache. besonders gut find ich das die so schön schnell ist.
ich hab mitlerweile auch raus wie ich ein byte maskiere, brauch ja nur ein & ums zu UNDen

so nun hab ich noch ne kleine frage, ich hab ja die programme fürn PC geschrieben um da mithilfe einer zusatz IO karte was auszugeben.

wie schauts denn aus wenn ich nu einen µC beschreiben will. beim alten AVR studio (version 3.5) ist meines wissens ja ein kostenloser C compiler drin(bin ich gerade am saugen, mit isdn brauchts da was ). wenn ich stack usw initialisiert hab kann ich dann so direkt mit dem C proggi loslegen?
ich hab ja schon kleine bis grosse proggis in assembler fürn at90 und atmegas gemacht. muss ich da irgendwas dolles beachten oder kann ich so in die tasten hauen?

mich interressieren das sehr weil ich mich bei assembler natürlich um alle rechnungen drücke bei denen komma usw zahlen rauskommen. das muss in C ja wunderbar gehen.


MfG MinceR

BID = 158768

giwer

Stammposter



Beiträge: 202

Hast wahrscheinlich schon gemerkt, das AVR Studio kein C-Compiler hat.
Ich verwende WinAvr, gibt’s kostenlos unter http://sourceforge.net/projects/winavr/
Das Programm unterstützt alle AVR Mikrocontroller und vieles mehr.
Deine in C geschriebene Programme kannst dann auch in AVR Studio simulieren.

PS. die aktuelle Version ist AVR Studio 4.

BID = 158848

MinceR

Stammposter



Beiträge: 277

ja ich habs nu auch gelesen. in meiner ausbildung war avr studio mit C erweitert. aber das muss man selbst erst einstellen.
werd mir das mal nacher angucken wenn ich von meiner mopped tour zurück bin. die erste fahrt nach winterpause ist immer die geilste. da kommt einem alles über 100 so schnell vor :D


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 22 Beiträge im Durchschnitt pro Tag       heute wurden bisher 18 Beiträge verfasst
© x sparkkelsputz        Besucher : 182197969   Heute : 4377    Gestern : 4612    Online : 499        18.10.2024    22:32
2 Besucher in den letzten 60 Sekunden        alle 30.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0292739868164