thdrummer
07.04.2007, 19:53
Servus,
ich hab gerade ein Lauflicht geschrieben. Geht auch wunderbar. Aber es läuft immer nur in einer Richtung. Wenn ich nur "vorwärts" (siehe Code-Kommentar) laufen lasse, geht es. Wenn ich nur "rückwärts" laufen lasse, ebenso. Wenn ich erst vorwärts, dann rückwärts laufen lassen will, läuft es nur rückwärts. Warum?
#include <avr/io.h>
#ifndef F_CPU
#define F_CPU 16000000 /* Quarz mit 16 Mhz */
#endif
#include <util/delay.h>
void set(int PCX) {
DDRC = (1<<PCX);
PORTC ^= (1 <<PCX);
}
void wait() {
int i;
for (i=1; i<=48; i++) {
_delay_ms(62.5);
}
}
int main(void)
{
int PCX[8] = {PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7};
int i;
# Vorwärts
for (i=0; i<=7; i++) {
set(PCX[i]);
wait();
}
# Rückwärts
for (i=7; i>=0; i--) {
set(PCX[i]);
wait();
}
return 0;
}
Danke.
ich hab gerade ein Lauflicht geschrieben. Geht auch wunderbar. Aber es läuft immer nur in einer Richtung. Wenn ich nur "vorwärts" (siehe Code-Kommentar) laufen lasse, geht es. Wenn ich nur "rückwärts" laufen lasse, ebenso. Wenn ich erst vorwärts, dann rückwärts laufen lassen will, läuft es nur rückwärts. Warum?
#include <avr/io.h>
#ifndef F_CPU
#define F_CPU 16000000 /* Quarz mit 16 Mhz */
#endif
#include <util/delay.h>
void set(int PCX) {
DDRC = (1<<PCX);
PORTC ^= (1 <<PCX);
}
void wait() {
int i;
for (i=1; i<=48; i++) {
_delay_ms(62.5);
}
}
int main(void)
{
int PCX[8] = {PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7};
int i;
# Vorwärts
for (i=0; i<=7; i++) {
set(PCX[i]);
wait();
}
# Rückwärts
for (i=7; i>=0; i--) {
set(PCX[i]);
wait();
}
return 0;
}
Danke.