Tag, Leute! Bin mal wieder kurz vorm verzweifeln... Habe ein 7segment (gem. Anode) an einem 2313 laufen. Kathoden a...f mit Rv an D0...D6 und Anode über PNP an B0. Sich eine Ziffer anzeigen lassen funktioniert wunderbar. Wenn ich allerdings eine Ziffernfolge mit Pausen dazwischen (siehe src) sehen will, geraten die Zeichen plötzlich "durcheinander". Nochmal anders: Wenn ich ein Programm flashe, dass mir nur ein Zeichen ausgeben soll und dann while(1)t, funktionert das wunderbar. Sobald aber ein zweites Zeichen folgen soll, ist das 2te nicht richtig dargestellt. Für Anregungen bin ich immer dankbar : ) Henk
1 | #include <avr/io.h> |
2 | #include <avr/iotn2313.h> |
3 | #include <util/delay.h> |
4 | |
5 | #define F_CPU 4000000UL //int. osc.
|
6 | |
7 | //a - f an Port D0...D6
|
8 | //Gemeinsame Anode an B.0
|
9 | //defines fuer die 7-segment bitmuster
|
10 | |
11 | #define null 0b1000000
|
12 | #define eins 0b1111001
|
13 | #define zwei 0b0100100
|
14 | #define drei 0b0110000
|
15 | #define vier 0b0011001
|
16 | #define fuen 0b0010010
|
17 | #define sech 0b0000010
|
18 | #define sieb 0b1111000
|
19 | #define acht 0b0000000
|
20 | #define neun 0b0010000
|
21 | |
22 | |
23 | |
24 | |
25 | int main (void){ |
26 | DDRD=0xFF; // D output |
27 | DDRB=0xFF; // B output |
28 | PORTB=0x01; // schaltet ANODE über PNP high |
29 | while(1){ |
30 | PIND=zwei; // bitmuster für Ziffer 2 -> OKAY |
31 | _delay_ms(80); |
32 | PIND=sieb; // bitmuster für ziffer 7 -> XXX |
33 | _delay_ms(80); |
34 | }
|
35 | }
|