-
Thread
Bit setzen in C Gesperrt
ich verwende den Keil C-Compiler für 8051. In Assembler kann man mit SETB und CLR auf einzelne Bits zugreifen. Gibt es in C dafür eine Entsprechung? Ich habe folgendes versucht: PortC|=1<<5; //Bit 5 setzen leider übersetzt der Compiler den Befehl nicht mit SETB, sondern über mehrere Befehle
"PortC|=1<<5; //Bit 5 setzen" is nun mal eine shift anweisung. und hier *zufaellig* halt 1 bit shl und das kann der assembler quasi direkt uebernehmen. abhilfe: inline assembler!
-
Thread
variables Bit setzen
Michael Skropski schrieb im Beitrag #1832500: > bit testio @ PORTB.0; gewöhn dich daran, von solchen Spezialitäten Abschied zu nehmen PORTB |= ( 1 << Bit ); setzt das Bit mit der Nummer Bit am Port PORTB &= ~( 1 << Bit ); löscht das Bit mit der Nummer in Bit am Port
-
Thread
Bits setzen und löschen
Studio. EEprom, Register, I/O, Programm und Data... Kann man in diesen Bereichen kein Bit setzen?
Wenn der Taster gedrückt ist, dann sollte er eine Schleife einmal durchlaufen. Am ende der schleife setze ich dann ein Bit. Wenn das Bit gesetzt und der Taster gedrückt ist, dann sollte das Programm nicht mehr in diese Schleife springen. Und damit das Programm dann auch nichtmehr dorthin springt, setze
-
Thread
einzelne Bits setzen
Guten Abend miteinander, ich möchte einzelne Bits in Registern setzen. Wie kann ich das unter C realisieren? Danke.
Weil hier gerade über das Setzen einzelner Bits in Registern gesprochen wird. Wie kann ich z.B. das Universalregister R3 der Registerbank 2 im Mikrocontroller 80C537 setzen? Das R3 besitzt ja die Adresse 13h. R3|=0x87;
-
Thread
Einzelne Bits setzen
Da ich mich gerade in C einarbeite habe ich einmal ein paar Fragen zum setzen von Bits in einer uint8_t Variable. Aus Tutorial: >#include <avr/io.h> >... >#define MEINBIT 2 >... >PORTA |= (1 << MEINBIT); /* setzt Bit 2 an PortA auf 1 */ >PORTA &= ~(1 << MEINBIT); /* loescht Bit 2 an PortA */ Wieso löscht gerade dieser Ausdruck (|=) die Bits und der (&= ~) löscht sie? Ist das eine Festlegung oder haben diese Zeichen irgend einen Zusammenhang mit dem Löschen und setzen von
-
Thread
fuse bits setzen
Habe einen ATmega128. Als software zum Programmieren hab ich AVRStudio4. Wie kann ich meine fuse bits verändern. Da muss es doch irgendeine Möglichkeit geben, das einfach zu machen. Danke.
-
Thread
Mit was kann ich bei mir Fuse-Bits setzen
Hallo, Habe ein kleines Problem bei mir, und zwar habe ich mir einen Adapter bei Ebay ersteigert um meine µC zu programmieren, und das funktioniert auch super unter AVR Studio 4 und dort mit dem "AVR Prog". Nun meine erste Frage, was genau habe ich hier eigentlich, nennt sich das AVRISP ? oder ist das wieder was anderes. Um mal ein wenig zu beschreiben: Es sitzt ein Quarz und ein Tiny2313 und eine hand voll bauteile drauf und wird über Seriellenanschluß angesprochen und hat dann den standart 10pol ISP anschluß. Ich nutze es in Verbindung mit meinen USB-Seriell Konverter.
-
Thread
Bit setzen ohne Takt
Hallo, ich habe ein Schaltung mit einem CoolrunnerII-CPLD XC2C64A, ein Paar Tastern und einer LED und möchte, dass die LED beim Betätigen der einen oder anderen Taste leuchtet und nach einem Reset-Signal wieder ausgeht. Leider habe ich keinen Takt in der Schaltung und ungefähr so versuche ich es zu machen: [vhdl] LED_O: out std_logic; SW1: in std_logic; SW2: in std_logic; ... signal LED_REG: std_logic; signal SW_EVENT: std_logic; ... SW_EVENT <= SW1 or SW2; LED_O <= LED_REG; process(RST, SW_EVENT, LED_REG) begin if RST = '1' then LED_REG <= '0'; elsif SW_EVENT = '1' then
-
Thread
Fuse Bits setzen
Hallo, ich bin leider etwas durcheinander geraten, mit invertierter logik usw.. Ich möchte einen ATMega8 mit einem Standartquarz 3,6848 MHz betreiben: genau wie es auf dieser seite beschrieben ist, ganz unten: http://s-huehn.de/elektronik/avr-prog/avr-prog.htm leider habe ich nur linux und avrdude ;-) das ist der aktuelle Zustand: avrdude: safemode: lfuse reads as E1 avrdude: safemode: hfuse reads as 99 avrdude: safemode: Fuses OK Wenn ich also meinen Möchtegern Zustand auf diesen Rechner: http://palmavr.sourceforge.net/cgi-bin/fc.cgi übertrage werden diese Werte
-
Thread
Bit setzen in einem Vektor
einer Zählvariable i und mit einem Vektor. Je nach Wert der Zählvariable muss dich das entsprechende Bit in dem Vektor setzen. Hat bsp. i den Wert 2, so muss das Bit 2 des Vektors auf 1 oder 0 gesetzt werden. Weiss jemand wie ich das programmieren könnte? Danke im Voraus
-
Thread
MSPGCC Bit setzen mit einem Befehl
Hallo, ist es möglich, mit dem mspgcc ein einzelnes Bit zu setzen? Z.B. möchte ich definieren, dass OUT auf Port 2.1 liegt, sodass ich den Portpin mit OUT=1 setzen und OUT=0 löschen kann. M.E. nach geht das im avrgcc.
AND bzs. OR Befehl braucht doch auch nur einen Takt, wo liegt also das Problem? Um ein bestimmtes Bit zu setzen oder rückzusetzen tun´s doch ganz prima Präprozessor-Makros.
-
Thread
Mit #defne zwei Bits setzen
Hallo, ich habe eine kleine Frage zum #define. Man kann ja mit #define den Pins "neue" Namen geben, damit man nicht den Überblick verliert. Z.B. bei 3 LEDs #define LED1 PD3 #define LED2 PD4 #define LED3 PD5 Nun würde ich gerne zwei Pins zusammen nehmen Z.B. #define LED12 PD3 PD4 Somit bräuchte ich um beide LEDs auf High zu setzen nur PORTD |= (1 << LED12) zu schreiben anstatt PORTD |= (1 << LED1) PORTD |= (1 << LED2) Nun meine Frage: Ist das überhaupt möglich? Und wenn ja, wie lautet der korrekte Befehl dafür? #define LED12 PD3 PD4 funktioniert natürlch
-
Thread
Problem: Fuse Bits setzen
Hallo an das Forum, Ich beschäftige mich zur Zeit mit einem mühsamen Problem, hier ein paar Daten: uController ATmega 32 Crystal Oscillator 12MHz Da der Mega internal Clock anbietet, nutze ich zur Zeit diesen. Nun möchte ich aber den Oscillator verwenden, kann mir einer dazu sagen, wie die Fuse Bits gesetzt werden? Aus dem Datenblatt wurde ich nicht so recht schlau :( Bestan dank und Gruss
-
Thread
ARM Assembler: ein Bit setzen
gesteuert. Also, in meinem Fall, will ich den USB Port ansteuern. Dafuer muss ich in einer Speicherzelle Bits setzen oder zuruecksetzen. Bis jetzt habe ich nur auf folgendes zum Setzen des Bits 1 gekommen: Die Zelle in R1 einlesen OR R2, R1,0x1 R2 zurueck in die Zelle schreiben. Das Problem, das
" Bit beschreibt? nichts?
-
Thread
BIT setzen bzw. löschen
Hi, kann mir jemand erklären, was eigentlich genau in folgenden Ausdrücken gemacht wird? PORTB |= (1 << PB1); PORTB &| ~(1 << PB2); Also nicht das der Pin gesetzt oder gelöscht wird, sondern was wirklich im Controller passiert. Linksschieben usw.
-
Thread
Bits setzen (alle komplett?)
Guten Tag! Ich habe eine Frage zu einzelnen Bits setzen. Ja, ich habe die Foreneinträge schon gelesen, und den Artikel [[Bitmanipulation]] auch ;-) Auch das ist mir bekannt: [c] PORTB |= (1 << PB6); // Setzen PORTB &= ~(1 << PB6); // Rücksetzen
Klar geht das. Nimm eine uint8-Variable und setze dort die Bits "Offline". An der geeigneten Stelle schreibst das dan in z.B. PORTB.
-
Thread
uC und Fuse-Bits setzen
laden -> Schritt abgeschlossen. 2. Fuse Bits wie angegeben in einem anderen Schritt im uC setzen. Fusebits für beide Versionen: lfuse 0b11110001 = 0xF1 hfuse 0b01011101 = 0x5D efuse 0b11111111 = 0xFF 3. Glücklich sein, das alles funktioniert
Datenblatt. Man sollte dem DB mehr glauben schenken als irgend einer Webseite :D Ich werde die Bits definitiv einzeln im Microchip Studio setzen!!!
-
Thread
Schreibweise beim bit-setzen vom Timer
Hallo, ich habe eine Unwissenheit und auch eine antwort darauf. Jedoch weiss ich nciht ob meine Vermutung richtig ist und wollte deswegeh hier noch einmal nachfragen. Ich möchte den Timer1 aus der dsPIC30F-Familie initialisieren. Dazu habe ich https://batchloaf.wordpress.com/2012/04/12/simple-timer-1-interrupt-example-for-the-dspic30f4011/ als vorlage benutzt, da ich nichts besseres gefunden habe. Ab zeile 25 initialisiert er ja den timer. Mein problem sind Zeile 28, 29 und 30. Dort wurde _T1IP=1 geschrieben. jetzt meine Vermutung: Ist _T1IP das selbe wie IPC0bits.T1IP? wenn Ja, gibt es einen
-
Thread
AT89: EA-Bit setzen?
einem AT89x52er: Ich hatte einen ASM-Quelltext, der mir an einer Stelle Probleme machte (nicht-setzen eines Wertes), diese Stelle war eingerahmt von einem set EA und clr EA Nun hat laut Datenblatt EA je nach Wunsch entweder auf Masse zu liegen (wenn externer Code erlaubt sein soll, wie bei
dient er als Eingang beim Programmieren des internen Flash. EA ist in deiner Software jedoch das Bit 7 des IE (Interrupt Enable Register) und kann gleichzeitig alle Interrupts sperren oder die mit EX0 bis ET2 freigegebenen gleichzeitig freischalten.
-
Thread
Atmega32 SMB360 Bits setzen
wieso klappt dann das setzen eines Bits nicht? Die Funktion rufe ich folgendermaßen auf: smb360_write_bit(0x25,(1<<7)); Laut Datenblatt muss ich 1 Read/Write Bit und 7Adressbits +8Datenbits senden.Das R/W Bit muss zum schreiben
beschreiben oder nur ein Bit setzen in ner Maske. Das mit der Maske habe ich natürlich auch schon getestet aber leider ohne Erfolg. Ganz schön komisch diese Angelegenheit.
-
Thread
C: Ein Bit setzen und eins löschen in einem Schritt?
nie erzählt haben, ist etwa folgendes (vorausgesetzt, die beiden Ausgänge liegen in benachbarten Bits, z.B. Bit 3 und 4): [c] typedef struct { unsigned int bit0:1; unsigned int bit1:1; unsigned int bit2:1; unsigned int ausgaenge_L298:2; unsigned int bit5:1; unsigned int bit6:1; unsigned int bit7:1; } meineigenes_port_d_layout_t; #define ddrb (*(volatile meineigenes_port_d_layout_t*)(&DDRB)) #define portb (*(volatile meineigenes_port_d_layout_t*)(&PORTB))
-
Thread
effizientes Bit-Setzen beim ARM7
Hallo Ich möchte beim ARM7, LPC2148 je nach Softwarekonfiguration einen digitalen Ausgang active low bzw. active high betreiben. Aus Geschwindigkeitsgründen möchte ich jedoch nicht laufend die aktuelle Konfiguration, welche im Programverlauf geändert werde kann, abfragen Als z.B. ein Konstrukt wie if (EnabelPinActiveHigh != 0) { if (EnableOn) FIO1SET = pfENABLE_MASK; else FIOCLR = pfENABLE_MASK; } else { if (EnableOn) FIO1CLR = pfENABLE_MASK; else FIOSET = pfENABLE_MASK; } gibt es da vielleicht etwas effizienteres? Vielen Dank Frank
-
Thread
ARM7 Bit setzen mit Konstante oder Variable
Hallo zusammen Werden die zwei Varianten auf einem LPC2148 / ARM7 eigentlich gleich schnell ausgeführt (gcc)? [CODE] // Variante 1 #define MODULE_LED 0x00000010 FIO0SET = MODULE_LED; // Variante 2 uint32_t MODULE_LD = 0x000000010 FIO0SET = MODULE_LED; [/CODE] Variante 2 dünkt mich halt schon flexibler, wenn man mal einen Pin ändert Beste Grüsse und Danke für eure Infos Geri
-
Thread
STM32 Discovery UG Bit setzen.
Bereich der Mikrocontroller. Im reference manual vom stm32 discovery steht oft... "Setting the UG bit in the TIMx_EGR register (by software or by using the slave mode controller) also generates an update event." ... Ich möchte gern wissen wie die C-Code Zeile aussieht damit ich per software das UG Bit im TIM2_EGR Register setze. Danke!
-
Thread
M32C/83 bits setzen
hallo, ich würde gerne bei meinem M30833 µC von RENESAS die einzelnen bits der I/O-Register in folgender art ansprechen: p3_0 = 1; // bit 0 port 3 = HIGH weiss jemand ob oder wie das geht? ich habe nur die möglichkeit die bits über das gesamte register anzusprechen: p3 = 0x00; // alle bits LOW das finde ich aber etwas umständlich. in meinem startup-file sind keine namen für die einzelnen bits vergeben. kann man das file ggf. umändern, sodass die einzelnen bits konkrete namen bekommen? im anhang ist mein startup-file. viele grüsse olaf
-
Thread
TigerSHARC DSP: SWRST-Bit setzen
kurze frage zum TigerSHARC TS201S von Analog Devices. Hat jemand eine Idee wie ich dort das SWRST-Bit im EMUCTL-Register setze um einen Software Reset auszulösen? Ich habe bisher erfolglos folgenden Code verwendet: (Art Inline-Assembler) asm("xr0 = EMUCTL;;"); asm("xr1 = 0x30;;"); // bitmask
-
Thread
Wie kann man bei attiny24a WGM bit setzen ?
Clear Timer on Compare) OCR1A Immediate MAX die oben genannte Zeile müsste ich doch mit einem WGM bit setzen können? doch wie setze ich das richtige bit für zeile 4? mit dieser tabelle komme ich einfach nicht klar. Könnte mir das mal bitte jemand erklären? Mfg Huber
Video sind zum lernen auch nicht Sinnvoll. Wie setzt du denn sonst ein bit in einem Byte? Genauso macht du es dort. Erst suchst du das Register woher das bit soll. Dann das bit aus der Tabelle ablesen und eintragen. REGISTER =| (1<<WGM1); Ich habe jetzt nicht ins
-
Thread
Einsteigerfrage zu C #define _BV() und Bit setzen -AVR-
Hallo wahrscheinlich Grundlagenwissen aber ich brauche trotzdem eine Bestätigung oder Berichtigung und Beantwortung bei zwei Detailfragen. Hier ein Codeauschnitt eines C-Programmes (für einen 8 Bit AVR) #define RC_NOK_OUT PA0 #define BLINK0_OUT PA1 #define BLINK1_OUT PA2 #define BLINK2_OUT PA3 #define BLINK3_OUT PA4 #define BLINK4_OUT PA5 #define BLINK5_OUT PA6 #define BLINK6_OUT PA7 #define BLINKX_OUT (_BV(BLINK0_OUT) | _BV(BLINK1_OUT) | \ _BV(BLINK2_OUT) | _BV(BLINK3_OUT) | \ _BV(BLINK4_OUT) | _BV(BLINK5_OUT) | \ _BV(BLINK6
-
Thread
Frage: Fuse Bits setzen vor oder nach Einsetzen des externen Oszillators?
aufgebaut, bzw. also auch den Quarzoszillator eingesetzt. Frage ist jetzt: Sollte ich zuerst die fuse bits setzen (für den Quarzoszillator) bevor ich den Quarzoszillator einsetze oder kann ich das jetzt bereits schon machen (mit eingesetztem Quarzoszillator)? Einige sagen, man solle zuerst die fuse bits
mehr ansprechbar. Richtig ist also, erst den Quarz anzuschliessen und dann in Ruhe die Fusebits zu setzen, da sonst die Verifizierung fehlschlägt.
-
Thread
Bits setzen PICC (nur das letzte bleibt "high")
Hallo zusammen, ich möchte einzelne Bits eines Ports setzen. Dafür ich folgendes Makro definiert: [c] #define BITNUM(adr, bit) ((unsigned)(&adr)*8+(bit)) [/c] Die Bits habe ich wie folgt definiert [c] static bit MODE @ BITNUM(PORTA,1); static bit T_MODE @ BITNUM(TRISA,1); static bit RTB @ BITNUM(PORTA,2); static bit T_RTB @ BITNUM(TRISA,2); static bit CK @ BITNUM(PORTA,3); static bit T_CK @ BITNUM(TRISA,3); [/c] dann setze
-
Thread
xc9536xl - Security-Bits setzen
Wie kann man ein xc9536xl vor dem Auslesen schützen? Ich benutzte ISE 11.1 und xc3sprog um den CPLD zu programmieren. Egal ob in ISE oder xc3sprog, ich finde einfach keinen Hinweis wie man das macht?!?! Müssen die Security-Bits irgendwie ins Jedec-File oder ist das eine Sache des Programmierers (xc3sprog)?
-
Thread
fuse-bit setzen =>unterschied atmega8 und atmega16
hallo, habe nen kleines problem: habe bisher das myAVR quickprog benutz um das fusbit zu setzen um meinen 3.6864 mhz quarz zu aktevieren. jetzt benutze ich aber statt des atmega8 nen atmega16. wenn ich jetzt ne verbindung zum mega16 herstellen will sagt der das der angeschlossene controller nicht unterstütz wird. programmiert hab ich den schon, das ist kein problem. hat da jemand ne idee?
-
Thread
ATmega328P; Bit setzen/löschen eines Integers klappt nicht.
Beitrag #5256615: > Nachteil einer Maske statt der Bitnummer bleibt aber, daß man auch > mehrere Bits setzen kann. Welches soll es dann sein? Das > Erste/Letzte/Mittlere? ??? Die Maske kann (und bei einzelnen Bits "besteht") nur aus einem gesetzten Bit bestehen. Carl D. schrieb im Beitrag #5256615
builtin_clz(mask)) >> >> Nachteil einer Maske statt der Bitnummer bleibt aber, daß man auch >> mehrere Bits setzen kann. > > Alte C Regel: Schrott rein, Schrott raus. Wer BBitOfMask mit mehreren > Bits füttert, kriegt in dieser Version das oberste davon. Und ganz ohne > gesetzte Bits gibts -1 oder
-
Thread
MySmartUSB MK3 - Fuse bits setzen
Hallo Habe den MySmartUSB MK3 in Betrieb genommen und möchte nun die Fuse bits eines ATTiny85 setzen. Ich habe das myAVR Prog Tool offen und konnte auch schon den Inhalt des Flashspeichers auslesen. Als nächstes möchte ich den Reset deaktivieren, damit ich diesen Pin als
mehr möglich ist, oder? Dass heisst dann aber auch, dass ich das Reset-Fusebit zuerst wieder setzen muss bevor ich eine neue Programmversion schreiben kann? Danke für die Hilfe. Martin
-
Thread
ARM-USB-OCD, OpenOCD, ATF1502AS: Läßt sich das "security bit" setzen?
Kann man mit dem "ARM-USB-OCD" unter OpenOCD das "security bit" eines ATF1502AS setzen?
-
Thread
Bits richtig setzen
befinde mich also innerhalb bestimmter Grenzen), dann setze ich das entsprechende Bit im Bit-Array. Anschließend läuft der Rest der If-Konstrukte durch, welche (im Idealfall) feststellen, daß deren Bereiche nicht tangiert werden. Deshalb schreiben sie
jetzt das erste If-Konstrukt NICHT MEHR erfüllt ist, sondern das zweite, dann muß ich eben erst das Bit der ersten Bereichsüberwachung zurücksetzen bevor ich das Bit für das zweite Konstrukt wieder setze. Irgendwie fällt mir nichts gutes ein, wie ich das "schön" machen könnte.
-
Thread
Bit auf Variable setzen?
Hi, gibt es etwas, womit man Folgendes vereinfachen kann. Gerne auch was in ASM. [c]bool temp; //... PORTA = (PORTA & ~(1<<PA0)) | (temp<<PA0); //Pin soll je nach Variableninhalt gesetzt werden[/c] Gruß Ovu
-
Thread
Bit auf '1' setzen
Hallo wenn ich einen Vector habe, wie kann ich nur ein bestimmtes Bit auf '1' setzen? data_o <= "000000001000"; data_o = (others => '0'); Wie kann ich hier das vierte Bit auf '1' setzen? Danke! MfG
solltest sowiso alle Werte von den Ausgängen (und am besten auch von den Signalen) im Reset Teil auf 0 setzen. LG Cyrex
-
Thread
Alle BITS auf 0 setzen
timm schrieb im Beitrag #4031762: > DDRB = 255; sind alle Bits im Port B auf Ausgang gestellt, richtig ? > > Wie setze ich alle bits auf 0? DDRB = 0;
MEINBIT7));[/c] und ist damit von der Schreibweise viel näher an dem obigen Versuch des TOs. Bits setzen: PORTX |= MASKE; Bits löschen: PORTX &= ~MASKE;
-
Thread
Wie setze ich ein Bit korrekt in einem "bitfield" ?
kleinen Platz für > Code aber zum anderen nette Maschinenbefehle, mit denen man ein > einzelnes Bit setzen und testen kann. Nein, die hat er auch in Asm-Code nicht wirklich, auf Portbits bezogen. Befehle wie BSF manipulieren kein einzelnes Portbit, sondern lesen den ganzen Port, ändern ein Bit,
den PIC10F202 > zu debuggen (ich bitte um Applaus :-) > > Dabei ist mir aufgefallen, dass das Setzen von einzelnen Bits in einem > bitfield nicht so funktioniert, wie ich mir das dachte. Tja, das Setzen des einzelnen Bits hat wohl funktioniert, allein es hatte nicht die erwünschte Wirkung auf
-
Thread
Variablen setzen sich auf 0 Gesperrt
Frank M. schrieb im Beitrag #5185607: > Den USART_RXC-Interrupt aktivierst Du mit dem Setzen des RXCIE0-Bits im > USART Control-and-Status Register B – UCSRB. Suche mal danach in Deinem > Code! :-) > > Aber dafür hast Du ja eine ISR. Irgendwo hast Du noch einen weiteren > Interrupt versehentlich
Interrupts aktivierst Du versehentlich. Ich tippe mal auf USART_TXC. Diesen aktivierst Du durch Setzen vom TXCIE-bit in UCSRB. Suche mal danach und kommentiere diese Stelle aus. Ebenso natürlich die Definition von BADISR_vect(). Wenn das Programm dann nicht mehr fortlaufend neustartet, hast Du die
-
Thread
Bit auf bestimmten Wert setzen
PORTB &= ~(1<<PB4); else PORTB |= (1<<PB4); } [/c] Ich möchte ein bestimmtest Bit (PB4) auf den Wert setzen, der per state übergeben wird (also 1 oder 0) Aktuell mache ich das so wie oben angegeben... Macht man das so? Oder Gibts da eine sauberere Lösung? Gruß Basti
Man könnte das Register auch in eine variable schreiben, das entsprechende Bit 0 setzen und state in dieses Bit schreiben. So umgehst du zumindest mal die abfrage. Ob das sinnvoll(er) ist weiß ich nicht. Aber vllt erbarmt sich ja ein Profi :)
-
Thread
Bits im SRAM setzen
Hallo, im avr-assembler möchte ich im SRAM ein Flag setzen. Im Keil assembler (8051)kann man Folgendes definieren; BSEG AT 00H; 20H im bitadressierbaren Bereich MERKER: DBIT 1 Das gleiche möchte ich in avr machen. Kann mit sbr folgendes Bit setzen sbr r20,$01 Es wird im Simulator angezeigt Aber der Befehl sbrs (skip if bit is set) wird nicht ausgeführt. Obwohl das Bit gesetzt ist, wird der nachfolgende Befehl nicht übersprungen.
-
Thread
Einzelne Bits in C setzen
damit jemand "C" lernt. Besser wären Vorschläge wie ... PORTB = PORTB | 0x01 ; // setze Bit 0 des Port B oder PORTB = PORTB & ~0x01 ; // lösche Bit 0 des Port B
bitweise Logikoperationen kenne ich gut. Mich hat es nur > gewundert, dass man beim 8051 z.b. einfach bit=1 schreiben kann. Mal Hand aufs Herz. Was bringt einem das? Deswegen wird programmieren auch nicht einfacher, wenn man durch eine Zuweisung ein einzelnes Bit setzen kann. Wenns denn unbedingt
-
Thread
Register in C setzen
warum dann das|= anstelle des = zum setzen des Bits?
Tombo schrieb im Beitrag #4144126: > warum dann das|= anstelle des = zum setzen des Bits? Mit dem = schreibst du im Beispiel von PORTB3 0b0000'1000 in den Port und setzt damit alle bit bis auf das dritte auf null. Mit dem |= machst du das inklusive Oder* mit 0b0000'1000, lässt
-
Thread
einzelne Bits in C setzen
Ich würde das folgendermaßen machen: ADMUX |= 1<<bit; // bit setzen ADMUX &= ~(1<<bit); // bit löschen Im ersten Fall wird das Register ODER-verknüpft mit dem maskierten Bit, im zweiten Fall UND-verknüpft mit der invertierten Maske, was das Bit
Das ist soweit richtig. Vielleicht für beides ein Beispiel: Registerinhalt ADMUX: 0b11001001 Bit 4 setzen: - Bit wählen/maskieren (1<<4): 0b00010000 - ODER-Verknüpfung (ADMUX |= ...); Ergebnis: 0b11011001 1er-Bits der Maske werden im Register gesetzt. Bereits gesetzte Bits bleiben gesetzt.
-
Thread
Registerbit setzen
mit dem Doppelpunkt? eigentlich was das jetzt genau bedeutet bzw. wie ich davon ableite welches bit ich in der Tabelle setzen muß. ich kann nur mutmaßen das das die Bits vom Register CH0CTRL 0-2 gemeint sind (ich sehe es ja im Register oben 0-2 für DIGIFILT), aber letzten Endes habe ich ja 7
Vorstellungen hervorruft. An keiner Stelle tritt hier ein physikalisches Merkmal auf, das man als "Bit" bezeichnet und das Du "setzen" kannst. Wie willst Du also in einer Tabelle ein Bit setzen? 2. Der Text "2:0" bedeutet einen Vektor, eine Folge von Bits mit den Nummern 2, 1 und 0. Es handelt sich
-
Thread
GNU-Compiler: BLB-Bits zur Laufzeit setzen setzen
avr/signal.h> #include <avr/pgmspace.h> #include <avr/boot.h> #include <avr/eeprom.h> char bits; bits =....; boot_lock_bits_set(bits); resultiert in wüsten Beschimpfungen des Compilers an meine Code: 'BLB01' undeclared (first use in this function) 'BLB02' undeclared (first use
#include <avr/boot.h> #include <avr/eeprom.h> char bits; bits =....; boot_lock_bits_set(bits); results in some error code: 'BLB01' undeclared (first use in this function) 'BLB02' undeclared (first use in this function) 'BLB11' undeclared
-
Thread
setzen von bits im Register
Hallo, in einer RTC sollen bit7, bit0 und bit1 eingestellt werden. TFS umfasst bit0 und bit1 im register. bei minutes==true soll -der Wert 3, also bit0 =1 und bit1 =1 gesetzt werden. bei minutes==false soll -der Wert 2, also bit0 =0 und bit1 =1 gesetzt werden. Stimmt dieser Code so, da noch irgendetwas anderes im Register verändert wird in der Realität? [c] bool minutes=true; // bool minutes=false; uint8_t tfs = (minutes ? 0x03 : 0x02); write_rtc_register(TIMER_CONTROL_REGISTER, 0x80 | tfs); [/c]
-
Thread
Port setzen in Binärschreibweise
(BITS_ALL_EVEN | BITS_ALL_ODD) static const segment_bits sbits[] PROGMEM = { BITS(BITS_NONE), BITS(BITS_ALL), BITS(BITS_ALL_EVEN), BITS(BITS_ALL_ODD), BIT(37), BIT(16), BIT(36), BIT( 0), BIT(35), BIT( 1), BIT(34), BIT( 2), BIT(33), BIT( 3), BIT(32), BIT( 4), BIT(31), BIT( 5), BIT(30), BIT( 6), BIT(29), BIT( 7), BIT(28), BIT( 8), BIT(27), BIT( 9), BIT(26), BIT(