Moin,
da kann ich hoffentlich auch mal helfen :
erstens sollte die Routine in der While(1) -Schleife stehen, sonst wird's nur einmal ausgeführt und danach nie wieder.
Also quasi
Code:
int main(void){
while (1){
// das hier die ganze zeit wiederholen
}
}
außerdem ist
uint8_t portd; //Per int wird portd hoffentlich als Variable deklariert
portd = PIND; //portd soll immer den Zustand der Pins annehmen
irgendwie seltsam, da würde ich doch direkt PIND nehmen, um den Zustand der Eingangspins auszulesen.
Also z.B. so:
Code:
#include <avr/io.h>
#include <stdint.h>
int main (void) {
//einmalig die Ports festlegen
DDRA = 0xff; //Das bedeutet das Port B komplett als Ausgang deklariert ist, denk ich
DDRD = 0x00; //Das bedeutet das Port D komplett als Eingang deklariert ist, denk ich
while (1) {
// die folgende Abfrage funktioniert nur, wenn nur an PD0 high anliegt und an allen anderen low!! ich würd's so machen
// if ((PIND&(1<<0) !=0) ,damit ist der Zustand der anderen Pins egal
if (PIND==1) //Wenn PortD 1 ist, also PD0 ein Signal "+5V" bekommt soll der komplette Porta
{
PORTA = 0x00; //auf 0V steuern
}
else
PORTA = 0xff; //wenn PortD nicht 1 ist sollen die pins des PortA 5V haben
} //ende der While-schleife
return 0;
}
Lesezeichen