------------------------------ Aufgabe 1 ------------------------------
Code:
unsigned char array[] =
{
0b11100111, //0
0b10000100, //1
0b11010011, //2
0b11010110, //3
0b10110100, //4
0b01110110, //5
0b01110111, //6
0b11000100, //7
0b11110111, //8
0b11110110; //9
}
Fertig! =)
Die Anschlüsse sind wie folgt:
PC0 = 1
PC1 = 2
PC2 = 3
PC3 = 4
PC4 = 5
PC5 = 6
PC6 = 7
PC7 = 8
So ist die gemessene Belegung der 7-Segment-Anzeige. So passt es auch. Hier nach habe ich die Tabelle gemacht.
Der Controller weiß doch, für welchen Port das gilt, weil man es ihm hier "PORTA=array[3]; " sagt, richtig? Also muss man später PORTC statt PORTA schreiben.
------------------------------ Aufgabe 1 - done! ------------------------------
------------------------------ Aufgabe 2 ------------------------------
Dafür brauch ich noch 3-4 Stunden. Das mache ich heute Abend nicht mehr. xD
------------------------------ Aufgabe 3 ------------------------------
Code:
int main(void)
{
/*
Variablen Definieren.
z.b. auch das Array
*/
unsigned char letzteTastenposition1,letzteTastenposition2;
int Zaehlwert=0;
while(1)
{
/*
hier villeicht eine Funktion aufrufen, die sicherstellt
dass die Schleifendurchläufe nicht zu kurz werden.
Die Transistoren sollen nicht zu oft schalten.
*/
/*
Taster Abfragen.
*/
if( ! (PINA & (1<<PA4) ) )
{
//der Taster ist gedrückt
if(!letzteTastenposition1)
{
/*
Der Taster wurde gerade gedrückt.
Selbst wenn er weiterhin gedrückt
werden würde, würde das Programm
nicht mehr hier her Springen
*/
Zaehlwert++;
}
letzteTastenposition1=1;
}
else
{
//Der Taster ist nicht gedrückt
letzteTastenposition1=0;
}
while(1)
{
/*
hier villeicht eine Funktion aufrufen, die sicherstellt
dass die Schleifendurchläufe nicht zu kurz werden.
Die Transistoren sollen nicht zu oft schalten.
*/
/*
Taster Abfragen.
*/
if( ! (PINA & (1<<PA3) ) )
{
//der Taster ist gedrückt
if(!letzteTastenposition2)
{
/*
Der Taster wurde gerade gedrückt.
Selbst wenn er weiterhin gedrückt
werden würde, würde das Programm
nicht mehr hier her Springen
*/
Zaehlwert--;
}
letzteTastenposition2=1;
}
else
{
//Der Taster ist nicht gedrückt
letzteTastenposition2=0;
}
/*
Zeit sich um die 7Seg-Anzeige zu kümmern
*/
/*
Zählwert für DMX ausgeben
*/
}
return 0;
}
Ich bin mir hier nicht ganz sicher, ich glaube, man kann das auch alles in eine while-Schleife schreiben.
------------------------------ Aufgabe 3 - done! ------------------------------
------------------------------ Aufgabe 4 ------------------------------
Öhm. Die komplette Programmschleife anhalten?
Wie wäres es mit "delay_ms(1);". Aber eine Millisekunde ist doch "nichts". Ich glaube aber, für den Mikrocontroller ist das schon eine "Menge"!
------------------------------ Aufgabe 4 - done! ------------------------------
Und? Wie war ich? xD