also vielen dank für die hilfe mein multiplex funtioniert jetz einfarbig
1 | int j;
|
2 | int i;
|
3 | int l=0;
|
4 | unsigned char row_data_green = 0;
|
5 | unsigned char spielfeld[6][7];
|
6 | isr_t0()interrupt 1
|
7 | {
|
8 | row_data_green=0;
|
9 | TR0=0;
|
10 | TH0=0xFE;
|
11 | TL0=0x0C;
|
12 | TR0=1;
|
13 |
|
14 |
|
15 | for (i=0; i<=6; i++)
|
16 | {
|
17 | if (spielfeld[j][i]==1){ row_data_green |=(1<<i);}
|
18 | }
|
19 |
|
20 | P0 = 0;
|
21 | P0 = (1<<j);
|
22 | P2=~row_data_green;
|
23 |
|
24 | j++;
|
25 | if (j>5)j=0;
|
26 | }
|
was ich nicht verstehe, warum funktioniert das folgende für 2 farben
nicht?
1 | int j;
|
2 | int i;
|
3 | int l=0;
|
4 | unsigned char row_data_green = 0;
|
5 | unsigned char row_data_red = 0;
|
6 | unsigned char spielfeld[6][7];
|
7 | isr_t0()interrupt 1
|
8 | {
|
9 | row_data_green=0;
|
10 | row_data_red=0;
|
11 | TR0=0;
|
12 | TH0=0xFE;
|
13 | TL0=0x0C;
|
14 | TR0=1;
|
15 |
|
16 | if(l==0){
|
17 | for (i=0; i<=6; i++)
|
18 | {
|
19 | if (spielfeld[j][i]==1){ row_data_green |=(1<<i);}
|
20 | }
|
21 |
|
22 | P0 = 0;
|
23 | P0 = (1<<j); //Spalten Grün
|
24 | P2=~row_data_green; }
|
25 |
|
26 | else if (l==1){
|
27 | for (i=0; i<=6; i++)
|
28 | {
|
29 | if (spielfeld[j][i]==2){ row_data_red |=(1<<i);}
|
30 | }
|
31 |
|
32 | P1 = 0;
|
33 | P1 = (1<<j); //Spalten Rot
|
34 | P2=~row_data_red;
|
35 | l=0; }
|
36 | |
37 | j++;
|
38 | if (j>5){
|
39 | j=0;
|
40 | l++;}
|
41 | }
|
nach meiner theorie müsste jetz doch die ausgabe funktionieren
wenn ich z.b.
1 | spielfeld[0][1]=1;
|
2 | spielfeld[0][2]=2;
|
setze müsste jetz die led 1 spalte 2te zeile grün leuchten und die led 1
spalte 3 zeile rot was aber passiert ist das [0][1] rot leuchtet und
grün gar nicht, davor habe ich andere felder gesetzt und dann leuchtet
die eine organge die andere rot also orange= grün + rot
in grün funtioniert alles, das was ich setze leuchtet auch