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
außerdem istCode:int main(void){ while (1){ // das hier die ganze zeit wiederholen } }
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; }







Zitieren

Lesezeichen