Hallo, ich habe aktuell einen Code, wo ich direkt aus einem Array ein komplettes Register beschreibe. d.h. z.B. wird aktuell mit PORTB = 0b10000000; gesetzt... Das Array stellt mir entsprechend bit 0-7 bereit, bit1 darf aber nicht mit verändert werden. Deshalb die Frage: wie bekomme ich es hin, das ich nur 0,2-7 in einem Zug übergeben kann ? Gelöst habe ich es jetzt erst einmal so... PORTB &= ~((1<<PB0) | (1<<PB2) | (1<<PB3) | (1<<PB4) | (1<<PB5) | (1<<PB6) | (1<<PB7)); bin über jeden Link, oder Tip froh :) Gruß Xorand
XORAND schrieb: > wie bekomme ich es hin, das ich nur 0,2-7 in einem > Zug übergeben kann ? geht nicht, die Hardware gibt es einfach nicht her. Das schlimme daran ist, das es ein read-modify-write ist. Es muss als erst gelesen, dann Oder und dann wieder geschrieben werden. Man könnte jetzt versuchen mit der Toggle Funktion zu arbeiten, dafür musst du aber auch den alten zustand wisssen.
Nee quatsch, sorry. Bitte beide Beiträge löschen!
1 | PortB = (PortB & 1) | Array[Index] & 0xfe; |
ok, wenn ich nun nicht in "einem Zug" übergeben will (muss), sondern nur bit1 auslassen will... wäre da dann eine Lösung ?.. mir geht es in erster Linie darum, dass ich ein Array mit dem "kompletten" Byte habe und dies auch gerne direkt übergeben möchte...
PORTx ^= WERT_AUS_ARRAY & 0xfd; D.h., Bit 1 wird immer aus dem Array ausmaskiert und somit der alte Wert des Portbits1 nicht geändert.
XORAND schrieb: [...] > Deshalb die Frage: wie bekomme ich es hin, das ich nur 0,2-7 in einem > Zug übergeben kann ? [...] > Gruß Xorand Was genau meinst Du mit "in einem Zug"? Sehr wahrscheinlich hilft Dir der Artikel: https://www.mikrocontroller.net/articles/Bitmanipulation weiter. In Kürze: Wenn ein oder mehr Bits nicht verändert werden sollen, musst Du es bzw. sie zuerst einmal lesen. Das hängt damit zusammen, dass Du bei der überwiegenden Mehrheit der Prozessoren bzw. Mikrocontroller für Schreibzugriffe keine Maske angeben kannst. Und das ist eben das Stichwort: "Maskierung". Denn Du musst das Bit bwz. die Bits, die gleich bleiben sollen, aus dem zukünftigen Port-Wert ausnehmen und so setzen wie es bzw. sie gerade stehen - und wie sie stehen bleiben sollen. In Prosa hört sich das ein wenig kompliziert an. In dem verlinkten Artikel stehen dazu auch Codebeispiele (und, wenn ich mich recht erinnere auch Werte-Tabellen). Viel Erfolg.
Schon wieder falsch. LESEN!
1 | PortB = (PortB & (1<<1)) | (Array[Index] & ~(1<<1)); |
So ist es auch einfacher lesbar, siehe Bitmanipulation.
Danke erst einmal für die schnellen Antworten :) werde mich da jetzt erst noch einmal einlesen ;) Bei Fragen würde ich mich noch einmal melden ! Gruß und schönen Abend :)
Entspann dich Falk. Bit1 sitzt ja an Position 2, ja. Typisches Informatiker Null Problem ;)
Wenn schon gut lesbar, dann das auszulassende PortBit Define nutzen, also "PB1" statt der "1" :-P
Falk B. schrieb: > Schon wieder falsch. LESEN! > PortB = (PortB & (1<<1)) | (Array[Index] & ~(1<<1)); PORTB = (PORTB & (1<<PB1)) | (Array[Index] & ~(1<<PB1));
Hallo, leider musste ich dann doch noch etwas "zurückrudern"... D.h. die ursprüngliche Fragestellung, ein Bit auszulassen, ist aktuell nicht mehr ausschlaggebend... trotzdem Danke für´s Feedback ! :) Nichts desto trotz, hänge ich hier noch im Code fest... Anbei habe ich meinen aktuellen Code einmal angehangen. Was ich erreichen möchte: Es soll das Array "segments" byte für byte ausgelsen und direkt an PORTB geschrieben werden. Dazu habe ich 2 For-Loops, der eine soll dafür sorgen, das Variable "ip", immer von 0 bis max 3200 läuft, um dementsprechend im 2ten Loop den PORTB zu schreiben und auch hier "ip" hochzuzählen. der zweite Loop sorgt dafür, das immer Päckchen von 22 übergeben werden, bevor ein kurzer delay kommt. Frage: ist das so zulässig und "richtig" ? Da mein "erwartetes" Ergebnis an der Hardware anders aussehen würde... oder beißt sich da die "ip" oder das Array ?... würde mich in jedem Fall über ein Feedback von euch freuen... ;) Danke schon vorab !
1 | #ifndef F_CPU
|
2 | #define F_CPU 16000000UL // 16 MHz clock speed
|
3 | #endif
|
4 | |
5 | #include <avr/io.h> |
6 | #include <util/delay.h> |
7 | |
8 | #define Latch_Clk_Pin 5
|
9 | #define Shift_Clk_Pin 1
|
10 | |
11 | |
12 | void shift_in(void); // function toggles the Shift Clock |
13 | void latch_in(void); // function toggles the Latch Clock |
14 | |
15 | |
16 | #define delay(a) _delay_ms(a)
|
17 | |
18 | typedef struct |
19 | {
|
20 | unsigned int bit0:1; |
21 | unsigned int bit1:1; |
22 | unsigned int bit2:1; |
23 | unsigned int bit3:1; |
24 | unsigned int bit4:1; |
25 | unsigned int bit5:1; |
26 | unsigned int bit6:1; |
27 | unsigned int bit7:1; |
28 | } _io_reg; |
29 | |
30 | #define REGISTER_BIT(rg,bt) ((volatile _io_reg*)&rg)->bit##bt
|
31 | |
32 | |
33 | /*----------------------------------------------------------------
|
34 | ---------------------------MAIN FUNCTION--------------------------
|
35 | ------------------------------------------------------------------*/
|
36 | int main(void) |
37 | {
|
38 | DDRB = DDRB | 0b11111111; // this is safer as it sets pins pb0- pb7 outputs |
39 | PORTB = 0b00000000; // sets all LOW |
40 | |
41 | |
42 | int output[23] = {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; |
43 | int i; // initialize for loop variables |
44 | uint8_t segments[3200] = {0b00000000,0b00000000,0b00000000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00000000,0b00000000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00000000,0b00000000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00010000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00000000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00000000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00000000,0b00000000,0b00010000,0b00010000,0b00100000,0b00100000,0b00000000,0b00010000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00000000,0b00000000,0b00010000,0b00010000,0b00100000,0b00100000,0b00000000,0b00010000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00000000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00010000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00100000,0b00100000,0b00000000,0b00010000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00000000,0b00000000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00000000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00010000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00000000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00000000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00010000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00000000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00100000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00100000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00110000,0b00100000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00100000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00110000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00100000,0b00100000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00110000,0b00100000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00110000,0b00100000,0b00000000,0b00000000,0b00100000,0b00110000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00110000,0b00100000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00110000,0b00100000,0b00000000,0b00000000,0b00100000,0b00110000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00110000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00100000,0b00110000,0b00100000,0b00000000,0b00000000,0b00000000,0b00110000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00110000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00110000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00110000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00110000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00110000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00110000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00110000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00110000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00110000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00110000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00110000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00110000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00110000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00110000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00110000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00110000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00110000,0b00000000,0b00000000,0b00000000,0b00000000,0b00110000,0b00110000,0b00010000,0b00000000,0b00000000,0b00000000,0b00000000,0b00010000,0b00110000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00110000,0b00000000,0b00000000,0b00000000,0b00000000,0b00110000,0b00110000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00010000,0b00110000,0b00010000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00110000,0b00100000,0b00100000,0b00000000,0b00000000,0b00110000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00110000,0b00100000,0b00100000,0b00000000,0b00000000,0b00110000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00110000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00110000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00010000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00100000,0b00100000,0b00100000,0b00100000,0b00100000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000}; |
45 | |
46 | while(1) // infinite loop |
47 | {
|
48 | for (uint16_t ip=0;ip<3200;) // for1 |
49 | {
|
50 | |
51 | |
52 | |
53 | for (i=0; i<23; i++) /// for2 |
54 | {
|
55 | |
56 | |
57 | ////////////////begin code
|
58 | REGISTER_BIT(PORTD,6) = output[i]; |
59 | shift_in(); |
60 | latch_in(); |
61 | PORTB = segments[ip]; |
62 | ip++; /// |
63 | |
64 | |
65 | |
66 | //////////////// END LVcode
|
67 | |
68 | } // end for 2 |
69 | |
70 | _delay_ms(2.0); |
71 | |
72 | } // end for 1 |
73 | |
74 | _delay_ms(50); |
75 | |
76 | } // end while |
77 | } // end main |
78 | |
79 | |
80 | |
81 | void shift_in(void) |
82 | {
|
83 | PORTB |= (1<<PB1); |
84 | asm volatile ("nop"); /// 62,5ns delay |
85 | PORTB &= ~(1<<PB1); |
86 | asm volatile ("nop"); /// 62,5ns delay |
87 | |
88 | }
|
89 | |
90 | |
91 | void latch_in(void) |
92 | {
|
93 | PORTG |= (1<<PG5); |
94 | asm volatile ("nop"); /// 62,5ns delay |
95 | PORTG &= ~( (1<<PG5)); |
96 | asm volatile ("nop"); /// 62,5ns delay |
97 | |
98 | }
|
Nur eine Anfrage am Rande: Du weißt, wie viel SRam dein Prozessor hat? Auch,wenn es ausreichen sollte, wäre es sinnvoll, das große Array ins Flash zu legen. Oliver
ok, in´s Flash legen kann man ja machen, SRAM dürfte reichen ATMEGA128RFA1... Aber... noch eine Idee wg. meiner Frage oben ? ;)
XORAND schrieb: > for (uint16_t ip=0;ip<3200;) // for1 > { > for (i=0; i<23; i++) /// for2 > { > [...] > PORTB = segments[ip]; > ip++; > } // end for 2 > [...] > } // end for 1 Sowas ist ganz gefährlich. Wie stellst du sicher, dass ip niemals grösser als 3199 wird, wenn auf segments zugegriffen wird? Tipp: for-Schleifen ausschliesslich dazu verwenden, den Schleifenkörper n-Mal durchlaufen zu lassen:
1 | for(int i = 0; i < n; i++) {} |
Auf i und n innerhalb der Schleife nur lesend zugreifen. Für alles, das von diesem Schema abweicht, eine while-Schleife verwenden.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.