Gast
#501105
Hallo,
ich habe bisher nur in assembler programmiert und wollte mich mal an gcc
versuchen. Jetzt habe ich folgendes Problem:
Wird der Eingang PINA6 geschalten, so soll in einer variable
festgehalten werden ob die Taste gedrückt wurde und der Wert solange
gespeichert bleiben, bis PINA0 bei nichtgedrücktem Zustand die Variable
löscht.
Habe zum Test einfach mal Ausgang PC3 und PC4 geschaltet um zu erfahren
ob überhaupt etwas passiert. Stimmt meine Variablendeklaration nicht?
Ich habe mal den Code angefügt und bitte um verbesserungsvorschläge.
int main(void)
{
DDRC = 0xff; // Ausgänge setzten PORT A
DDRA = 0x00; // Engänge setzten PORT C
PORTA = 0xff; // Pull-Up aktivieren PORT C
PORTC = 0xff; // Alle Ausgänge LOW --> aus
uint8_t hand;
uint8_t tuer;
for(;;)
{
if ( PINA & (1<<PINA0) ) { // Tür zu?
PORTC |= (1<<PC0);
tuer = 1;
}
else {
hand = 0;
tuer = 0;
PORTC &= ~(1<<PC0);
}
if ( PINA & (1<<PINA1) ) { // Regen?
PORTC |= (1<<PC1);
}
else {
PORTC &= ~(1<<PC1);
}
if ( PINA & (1<<PINA3) ) { // Fenster?
PORTC |= (1<<PC2);
}
else {
PORTC &= ~(1<<PC2);
}
if ( PINA & (1<<PINA4) ) { // Fenster?
PORTC |= (1<<PC3);
}
else {
PORTC &= ~(1<<PC3);
}
if ( PINA & (1<<PINA5) ) { // Fenster?
PORTC |= (1<<PC4);
}
else {
PORTC &= ~(1<<PC4);
}
if ( PINA & (1<<PINA6) ) { // Handbetrieb?
hand = 1;
}
if (hand == 1) PORTC |= (1<<PC3);
if (hand == 0) PORTC |= (1<<PC4);
}
return 0;
}