Gast
#5336421
Hallöchen,
ich bin ein bisschen überfragt und weiss nicht mehr so ganz weter. Ich
habe unten gennantes Programm geschrieben. Die Aufgabenstellungg lautet,
wir bekommen ein Analoges Signal von einem Microcontroller und sollen
dies auf zwei 7 Segment-Anzeigen anzeigen lassen.
Ich habe einen Atmega88a, konnte für die erste 7-Segment-Anzeige also
von PORTC Segment A = PD0, B = PD1 ... H = PD8 [segment_1]
Jetzt will ich das ganze mit meiner zweiten Anzeige machen, komme jedoch
nicht weiter, da ich nicht genug PINS zur verfügung habe. Ich konnte mit
PORTC alle Segmente belegen, jedoch das letzte musste ich auf PB2
legen(auf das letzte Segment also der Punkt kann ich verzichten)
[segment_2]
Nun mein Problem: Sobald ich ein char schreibe und das dann definiere
auf PORTC, fällt natürlich PORTB raus und ich kann es nicht in mein char
einpflegen.
Wie schaffe ich es also, den PB2 in mein char bzw meine Bitkombi zu
bekommen? Ich kann ja auch nicht ein eizelnes char für den PIN
schreiben, denn ich kann die beiden ja auch nicht gleichzeitig
ausführen. [segment_3]
Danke schonmal für die Antworten!
Gruß
Jonny
---------------------------------------------------------------------
#include <avr/io.h>
#define F_CPU 8000000UL
#include <util/delay.h>
#define AA (1<<PC0)
#define BB (1<<PC1)
#define CC (1<<PC2)
#define DD (1<<PC3)
#define EE (1<<PC4)
#define FF (1<<PC5)
#define GG (1<<PB2)
#define HH (1<<PB1) //auf den kann ich verzichten
int main(){
DDRD=0xFF;
DDRC=0xFF;
DDRB = 0x6;
//char
segment_1[]={0x84,0xd3,0xd6,0xb1,0x76,0x77,0xc4,0xf7,0xf6,0xe7};
//das ist der für die erste Anzeige, der funktioniert auch klasse
char segment_2[]={ 0x3f,0x06,0x1b,0x0f,0x32,0x2d,0x3d,0x07,0x3f,0x2f};
//hier habe ich das Segment G nicht mit dabei
//char
segment_3[]={0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x00,0x40,0x40};
/*das ist die Bitkombi für das einzelne Segment, dass ich aber leider
nicht gleichzeitig mit dem anderen ausführen kann*/
while (1){
for(int f=0;f<10;f++){
PORTC = segment_2[f]; //7Segment Anzeige die durchzählt
_delay_ms(64);
/*PORTD = segment_1[f];
_delay_ms(64);*/ //char, der funktioniert
}
}
return 0;
}