Gast
#3569614
Hallo habe eine Frage zu Strings bei PIC µC, gibt es da keine? Ich will zB das Bitmuster 100000001 als string darstellen, hat jemand ne Idee?
|
Anzeige
|
string bei C und PICs
Gast
#3569614
Hallo habe eine Frage zu Strings bei PIC µC, gibt es da keine? Ich will zB das Bitmuster 100000001 als string darstellen, hat jemand ne Idee? Baumberg schrieb: > gibt es da keine? Ja, gibt es:
Wahrscheinlich, werden wir dir besser helfen können, wenn du uns sagst was du eigentlich vor hast... Strings sind char arrays. Aber wenn du "100000001" platzsparend speichern und verarbeiten willst, nimmst du am besten ein uint16_t und gibst es bei bedarf bit für bit aus. Also z.B. so:
Gast
#3569632
Ja klar. Ich habe 8 LEDs und will sie folgendermaßen leuchten lassen: 000##000 00#00#00 0#0000#0 #000000# 0#0000#0 00#00#00 000##000 Das ganze will ich dann als Endlosschleife ablaufen lassen. Hoffe einigermaßen verständlich gezeigt zu haben was ich vor habe. Dann ist eine String das falsche für dich.
Gast
#3569640
> while(mask){ > if(value & mask) > putc('1'); > else > putc('0'); > mask >>= 1; > } > } Ok, das sieht irgendwie nach Bitverschiebung aus (ich kenne mich aber nur sehr schlecht aus, da Neuling). Es scheint eine professionelle Lösung zu sein, aber für mich als Anfänger müsste das doch für den Anfang auch leichter verständlich gehen oder?
Gast
#3569641
> Ja, gibt es:char bitmuster[]="100000001"; Wahrscheinlich, werden wir dir
Das ist was ich haben wollte
Das würde man ungefähr so machen (alle LEDs an PORTD z.B.):
Jetzt frage ich mich nur warum du strings brauchst? Da nummst du doch einfach ein Array mit deinem Bitmuster:
oder irgendwie so. Timmo H. schrieb: > Jetzt frage ich mich nur warum du strings brauchst? Wahrscheinlich deswegen: Baumberg schrieb: > (ich kenne mich aber > nur sehr schlecht aus, Sry, aber das ist für mich den aktuellen Informationen zu folge die logischste Erklärung. @Baumberg: Hast du schon mal über ein PIC-C-Tutorial nachgedacht? http://pic-projekte.de/wordpress/?p=133
Gast
#3569653
> @Baumberg: > Hast du schon mal über ein PIC-C-Tutorial nachgedacht? > http://pic-projekte.de/wordpress/?p=133 Ja da habe ich die ersten 3 LED Beispiele gemacht und will nun etwas eigenes probieren.
Gast
#3569657
> LED_bitpattern[] = { 0b00011000, 0b00100100, 0b01000010, 0b10000001, 0b01000010, 0b00100100, 0b00011000}; > int main(){ > ..... > while(1){ > for(i = 0; i < 8; i+){ > LATB = LED_bitpattern[i]; > delay_ms(500); > } > } > } gefällt mir gut.
Gast
#3569662
Habe es mal so probiert und es klappt auch:
Nur kurz zur Erklärung, da du vllt. noch nicht genau verstanden hast was eine String ist (korrigiere mich, wenn ich falsch liege): Eine String ist ein Array aus 8-bit Variablen (char), aber ein Array aus 8-bit Variablen muss nicht zwingend eine String sein. Im Array werden beliebige Zahlen binär gespeichert, währen in einer String Zeichen (Ziffern, Buchstaben, Sonderzeichen) mit der ASCII Codierung gespeichert werde. https://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange
Gast
#3569669
Max H. schrieb: > Nur kurz zur Erklärung, da du vllt. noch nicht genau verstanden > hast was > eine String ist (korrigiere mich, wenn ich falsch liege): > Eine String ist ein Array aus 8-bit Variablen (char), aber ein Array aus > 8-bit Variablen muss nicht zwingend eine String sein. > > Im Array werden beliebige Zahlen binär gespeichert, währen in einer > String Zeichen (Ziffern, Buchstaben, Sonderzeichen) mit der ASCII > Codierung gespeichert werde. > https://de.wikipedia.org/wiki/American_Standard_Co... Ich habe da an C++ gedacht, dort werden zB Tastatureingaben in "string-Variablen" gespeichert, das ist einfacher als ein Array von zB einem char anzulegen (da ich ja auch nicht unbedingt weiß wie lang es sein soll). Ich wollte deshalb ein Bitmuster (zB 10000001) in eine string Variable speichern. C unterstützt aber wohl keinen string? Naja aber jetzt habe ich es verstanden, man kann auch ein Array anlegen :-) Kann man mal sehen, das ich ein echter Anfänger bin.
Gast
#3569704
Timmo H. schrieb: > int main(){ > ..... > > while(1){ > for(i = 0; i < 8; i+){ > LATB = LED_bitpattern[i]; > delay_ms(500); > } > } > > } Habe das in mein Programm übernommen, das ist irgendwie am einfachsten zu verstehen, besten Dank.
Gast
#3569707
Und natürlich danke auch an alle anderen. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|