Hallo und DANKE an meine Tutoren,
für meine Kollegen Anfänger poste ich das Programm, wie es meine Helfer vorgeschlagen haben. Es wird dem einen oder anderen eine Hilfestellung sein, um sich in C langsam vorzutasten.
Kann mir vorstellen, dass es nicht unbedingt geschickter Code ist, aber er funktioniert.
Noch eine Frage an die Fachleute:
Wird der Variablen x ein Wert zugewiesen?
Code:
x = test1(); // dann muss Bit 0 in i gesetzt sein -> Funktion
Bin mir nicht sicher, weil im Klammerausdruck von test() kein Parameter drin steht. Stimmt das?
Bitte habt Nachsehen, ich blicke noch nicht so durch!
Also hier der Code, der funktioniert
Code:
// Port einlesen mit Prüfung des Zustandes von Portbits IF-ANWEISUNG
// Januar 2009 o.k.
// Tastenkombinationen
// << links unten, { ALT-GR und 7, } ALT-GR und 0, [ ALT-GR und 8, ] ALT-GR und 9,
// ~ ALT-GR und *, | ALT-GR und Pfeil unten links,
#include <avr\io.h>
uint8_t i, x, akku, c_akku,b;
int test1()
{
c_akku +=1;
PORTC = c_akku;
return 0 ;
}
int main( void )
{
DDRA = 0xff; // R24 Ausgang
DDRB = 0xff; // R24 Ausgang
DDRC = 0xff; // R24 Ausgang
while(1)
{
// Funkion test1 aufrufen, wenn Bit 0 in Register PINA gesetzt (1) ist
i = PINA; // R18 Inhalt in Arbeitsvariable
// PORTA0 wird nur gelesen, wenn DDRA als Ausgang definiert ist; wird der PORTA0 auf
//HIGH gesetzt, dann wird automatisch das Bit PINA0 gesetzt
i = i & 0x01; // alle Bits bis auf Bit 0 ausblenden (logisches und)
// falls das Bit gesetzt war, hat i den Inhalt 1
if ( i != 0 ) // Ergebnis ungleich 0 (wahr)?
{
x = test1(); // dann muss Bit 0 in i gesetzt sein -> Funktion aufrufen
}
akku+=2;
PORTB =akku;
} // Ende while-Schleife
}
Lesezeichen