Guten Tag, Ich hoffe ich bin im richtigen Forum. Bin jetzt komplett neu in die Microcontrollerwelt eingestiegen und egal was man in dem Zusammenhang bei google sucht, diese Seite ist fast immer mit dabei. Hab mich deswegen jetzt mal angemeldet und hoffe, dass ihr mir bei meinen warscheinlich nicht allzu schweren Fragen beisteht. Ich habe den Microcontroller ADuC814 an den an einem Pin 2 Schieberegister in Reihe angeschlossen sind. Mein einziges Problem ist es bis jetzt in C ein Bit rauszuschieben, es gibt ja nur char, int etc. Wenn ich also zB ein Integer mit 16bit auf die Schieberegister ausgeben will. Wie mach ich das, bzw wie gebe ich überhaupt allgemein ein Bit aus? Wäre echt nett, wenn mir da schnell jemand helfen könnte.
dasdsdas dasdasdas schrieb: > will. Wie mach ich das, bzw wie gebe ich überhaupt allgemein ein Bit > aus? Bitmanipulation In aller Kürze: Du identifizierst, ob in deinem zu untersuchenden Byte das betreffende Bit gesetzt ist und wenn ja, schaltest du das Bit am Ausgabeport auf 1 (bzw auf 0, wenn das Bit nicht gesetzt ist). D.h. du 'gibst nicht das Bit aus', sondern du stellst das Bit am Ausgabeport auf denselben Wert wie das Bit, das du ausgeben willst. Und für 16 Bit: Eines nach dem anderen.
Kannst du mir dafür einen Beispielcode geben ?
Hast du mal auf den Link von Karl Heinz geklickt?
dasdsdas dasdasdas schrieb: > Kannst du mir dafür einen Beispielcode geben ?
1 | |
2 | |
3 | |
4 | |
Sorry. Aber das ist so dermassen Grundlage in der µC-Progammierung, das musst du selber (auch mithilfe des Links) hinkriegen. Ein Bit setzen, ein Bit löschen, ein Bit abfragen; das alles sind Grundfertigkeiten. Und ausserdem weiß ich nicht, wie am ADuC814 die Zugriffssyntax für Ports aussieht.
Gast
#2557604
Als kleine Hilfe kannst du auch mal ein Software-SPI ansehen. Dort wird die selbe Funktionalität abgebildet. Aber wie es Karl Heinz schon sagte: es ist absolute Grundlage, da wird dir keiner einen Beispielcode dafür geben.
Gast
#2557616
dasdsdas dasdasdas schrieb: > Wie gebe ich ein Bit aus? Du bestellst eins und gibst es mir aus!
Gast
#2557626
Kann mir bitte jemand helfen, wie man einen Euro ausgibt? Danke.
heisst ich kann einfach zuweisen, also z.B. P1 = 0; ?
dasdsdas dasdasdas schrieb: > heisst ich kann einfach zuweisen, also z.B. P1 = 0; ? Ja, das kannst du. Wenn für deinen Compiler P1 definiert ist, und diesem P1 eine 0 zugewiesen werden darf. Ein einzelnes Bit eines Ports wird beim 8051 aber gern mit sowas wie z.B. P1.2 angesprochen.
super, danke vielmals
Gast
#2557816
Wer kriegt denn nun das Bit ausgegeben?
Gast
#2557830
guest schrieb: > Wer kriegt denn nun das Bit ausgegeben? Ohne Compiler-Intrinsics: PORTA = (1 << BITPOS);
Gast
#2557831
Was für einen Compiler / IDE verwendest du?
Gast
#2557833
random schrieb: > guest schrieb: >> Wer kriegt denn nun das Bit ausgegeben? > > Ohne Compiler-Intrinsics: > PORTA = (1 << BITPOS); OMG, es gibt einfach merkwürdige Leute. Die verstehen gar nix. Köstlich.
Grml schrieb: > random schrieb: >> guest schrieb: >>> Wer kriegt denn nun das Bit ausgegeben? >> Ohne Compiler-Intrinsics: >> PORTA = (1 << BITPOS); > OMG, es gibt einfach merkwürdige Leute. Die verstehen gar nix. Köstlich. Richtig, denn der 8051 hat keinen Port A! ;-)
Gast
#2557855
Lothar Miller schrieb: > Grml schrieb: >> random schrieb: >>> guest schrieb: >>>> Wer kriegt denn nun das Bit ausgegeben? >>> Ohne Compiler-Intrinsics: >>> PORTA = (1 << BITPOS); >> OMG, es gibt einfach merkwürdige Leute. Die verstehen gar nix. Köstlich. > Richtig, denn der 8051 hat keinen Port A! ;-) Genau, sowas sollte nicht passieren, wie peinlich ;-)
Grml schrieb: > Lothar Miller schrieb: >> Grml schrieb: >>> random schrieb: >>>> guest schrieb: >>>>> Wer kriegt denn nun das Bit ausgegeben? >>>> Ohne Compiler-Intrinsics: >>>> PORTA = (1 << BITPOS); >>> OMG, es gibt einfach merkwürdige Leute. Die verstehen gar nix. Köstlich. >> Richtig, denn der 8051 hat keinen Port A! ;-) > > Genau, sowas sollte nicht passieren, wie peinlich ;-) Darum gings aber gar nicht :-) Lies noch mal genau! Das steht nicht 'Wie'. Da steht 'Wer'.
Karl Heinz Buchegger schrieb: > Grml schrieb: >> Lothar Miller schrieb: >>> Grml schrieb: >>>> random schrieb: >>>>> guest schrieb: >>>>>> Wer kriegt denn nun das Bit ausgegeben? >>>>> Ohne Compiler-Intrinsics: >>>>> PORTA = (1 << BITPOS); >>>> OMG, es gibt einfach merkwürdige Leute. Die verstehen gar nix. Köstlich. >>> Richtig, denn der 8051 hat keinen Port A! ;-) >> Genau, sowas sollte nicht passieren, wie peinlich ;-) > Darum gings aber gar nicht :-) > Lies noch mal genau! > Das steht nicht 'Wie'. Da steht 'Wer'. Spielverderber, jetzt weiß ja jeder worums geht ^^ :D
Gast
#2557925
>>>>>>> Wer kriegt denn nun das Bit ausgegeben?
Kann mir das bitte jemand beantworten ?
Michael Köhler schrieb: > Karl Heinz Buchegger schrieb: >> Grml schrieb: >>> Lothar Miller schrieb: >>>> Grml schrieb: >>>>> random schrieb: >>>>>> guest schrieb: >>>>>>> Wer kriegt denn nun das Bit ausgegeben? >>>>>> Ohne Compiler-Intrinsics: >>>>>> PORTA = (1 << BITPOS); >>>>> OMG, es gibt einfach merkwürdige Leute. Die verstehen gar nix. Köstlich. >>>> Richtig, denn der 8051 hat keinen Port A! ;-) >>> Genau, sowas sollte nicht passieren, wie peinlich ;-) >> Darum gings aber gar nicht :-) >> Lies noch mal genau! >> Das steht nicht 'Wie'. Da steht 'Wer'. > > Spielverderber, jetzt weiß ja jeder worums geht ^^ :D Argh :-) War ja nur ein Beispiel **g** >> Das steht nicht 'Wie'. Da steht 'Wer'. Neee, 'wann' :-) >>>>>>> Wer kriegt denn nun das Bit ausgegeben? Na im Zweifelsfalle ich :-))
> Richtig, denn der 8051 hat keinen Port A! ;-)
Hehe ...
Gabs bei dem Dingen nicht so was wie sbit & co?
so nun doch nochmal ne frage, ich hab ein kleines programm geschrieben,
bei dem ich nur testen wollte ob es funktioniert
#include <reg517.h>
sbit LED1 = P1^0;
iint main(){
unsigned int test;
unsigned int temp;
test=3;
temp=1;
while(1){
LED1 = 0;
if (test&temp==1){
LED1 = 1;
}
else{
LED1 = 0;
}
temp = temp << 1;
}
}
normal sollte ja bei dem 2ten durchlauf die if bedinung auch erfüllt
sein,
jedoch springt er bei mir dort immer in den else fall.
ich benutze keil microvision 3 als compiler.
dasdsdas dasdasdas schrieb: > jedoch springt er bei mir dort immer in den else fall. Wer sagt dass? Dein gefühl, wenn die Leds aufblinken oder ein Emulator?
mein microvision sagt mir das ^^
Prost! schrieb: > dasdsdas dasdasdas schrieb: >> Wie gebe ich ein Bit aus? > > Du bestellst eins und gibst es mir aus! :-) Auch haben will.
dasdsdas dasdasdas schrieb: > mein microvision sagt mir das ^^ aber nicht mit "iint main" im Code...
Gast
#2558132
Schau mal hier: http://www.amazon.de/s/?ie=UTF8&keywords=dextro+energen&tag=googhydr08-21&index=aps&hvadid=7884512965&ref=pd_sl_hwk9b0g1i_e
dasdsdas dasdasdas schrieb: > jedoch springt er bei mir dort immer in den else fall. Dir ist der Unterschied zwischen & und && bei C bekannt? Was passiert, wenn du das hier schreibst:
1 | |
if (!ichkannprogrammieren) {return(2);}
Gast
#2558145
Mein Bier ist alle - NACHSCHUB!
selbes problem
Lothar Miller schrieb: > dasdsdas dasdasdas schrieb: >> jedoch springt er bei mir dort immer in den else fall. > Dir ist der Unterschied zwischen & und && bei C bekannt? > Was passiert, wenn du das hier schreibst: >
1 | |
2 | |
genau das gleiche
dasdsdas dasdasdas schrieb: > selbes problem War mir klar... ;-) Welchen Wert haben denn deine beiden Variablen in der Zeile vor der if-Abfrage?
if ( idiot ? (test && temp == 1) : (test & temp == 1) {
...
Gast
#2558168
Nana nana "Kan asta" ... ... ohne mein Bier sag ich nix
return Bit;
Gast
#2558186
>>> Wer bekommt jetzt das Bit ausgegeben ?
Na der Gast natürlich!
bekomme ich dafür ein BIT ?1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
Gast
#2558188
FAXE !
Gast
#2558194
@ der Gast 2 FAXE !
blöder Gast, macht alles kaputt.
Gast
#2558200
Welcher, Du Dösi ?
naja, bist du Gast oder guest?
Gast
#2558207
ich will Bit!! Wer trikt schon gerne FAXE.
Gast
#2558210
bi!
Gast
#2558213
Bit macht doof (trikt).
Gast
#2558218
>>>Bit macht doof (trikt).
is doch Rosenmontag! Hicks....
ach ihr seid doch alle Nibbles.
Gast
#2558220
Ich habs: Das Bit ist kaputt!
Gast
#2558221
>>> ach ihr seid doch alle Nibbles.
dat sacht ausjerechnet der Kan asta Basta kanasta!
Gast
#2558225
Es heißt Nippel!
Bisher hab ich hier noch kein Byte gesehen.
Gast
#2558230
Sehr guter Kommentar!
Gast
#2558231
guest schrieb: > Es heißt Nippel! http://www.youtube.com/watch?v=zscxVRvc-yo
Gast
#2558232
Das ist nicht lustig!
Gast
#2558235
Danke Leute, isch hab' misch köstlisch amüsiert! Kölle ALAAF und Prosit
Gast
#2558239
XCH & bye
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
