Gast
#210193
Hallo. Ich möchte eigentlich etwas recht simples schreiben nur brauche ich da so eine Art threads (glaube ich zumindest^^). Und zwar habe ich folgendes: Ich habe zwei Ports. B und C. An C sind LEDS. Jetzt möchte ich wenn Pin 2 an B auf 1 gesetzt wird, das C auf 0xF0 gesetzt wird. Also das praktisch die obere hälfte aufleuchtet. Wenn Pin 1 an B auf gesetzt wird sol dagegen 0x0F aufleuchten. Mein Problem dabei ist, das man die möglichkeit haben soll, wenn Pin 1 oder 2 an B auf 1 gesetzt wird, dass man noch 250 ms sekunden zeit hat die andere seite ebenfalls auf 1 zu setzen. also das innerhalb der 250 ms es möglich ist, Port C auf 0xFF zu setzen. Wenn ich jetzt delay_ms nehmen würde, dann wäre das ja im grunde eine pause in der gar nix mehr geht. ich will aber das er im hintergrund zählt (also eben wie so eine art zusätzlicher thread) damit man innerhalb der zeit noch auf 1 setzen kann. ich hoffe es ist ein wenig rübergekommen was ich meine :) programmiere mit CodeVision in C und habe das AT90S8535. bisher habe ich folgdenden code (also ohne die 250ms geschichte...): ------------------------------ void main(void) { PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0xFF; while (1) { if(PINB.1) { PORTC=0x0F; delay_ms(2500); PORTC=0x00; } if(PINB.2) { PORTC=0xF0; delay_ms(2500); PORTC=0x00; } }; } ------------------------------ also bis jetzt kann man also auf der einen seite 1 setzen und die ein ehälfte wird für 2,5 sekunden eingeschaltet... viele dank für eure hilfe!! gruß christian