Also das ist das Programm:
wie ihr sieht das ganze will ich mit Tastensteuerung machen.Code:#define F_CPU 8000000 #include <avr/io.h> #include <stdio.h> #include <stdbool.h> #include<util/delay.h> #define T1 0x04 #define T2 0x08 #define T3 0x10 uint8_t direction; uint8_t step[8] = {0xEE, 0xBC, 0xE8, 0xBA, 0xEE, 0xBC, 0xE8, 0xBA};//Halbschritt Steuerung uint8_t rev_step[8] = {0xBE, 0xEA, 0xB8, 0xEC, 0xBE, 0xEA, 0xB8, 0xBC};//Halbschritt Steuerung //*********************************************** void rotate(direction) { int i; if(direction) { PORTD &=~(0x20); PORTD &=~(0x40); PORTD |= 0x80 ; for(i=0;i<8;i++) { _delay_ms(80); PORTA = step[i]; }; } else { PORTD &=~(0x80); PORTD &=~(0x40); PORTD |= 0x20; for(i=0;i<8;i++) { _delay_ms(80); PORTA = rev_step[i]; }; } } //************************************************ int main() { uint8_t start; uint8_t release1; uint8_t release2; uint8_t release3; release1 = 0x01; release2 = 0x01; release3 = 0x01; direction = true; start = false; DDRA |= 0xFE;//Port A pin 1-7 als Ausgang setzen PORTA = 0x00;//pull up's auf low setzen DDRD &= ~(0x1c);//Port D; PIN 2, 3 und 4 als Eingang setzen //PORTD &= ~(0x1c);//pull up's auf low setzen DDRD |= 0xE0; while(1) { if((PIND & T1)&&(release1 == 0x01)) //Taster1 gedrückt { release1 = 0x00; direction = true; start= true; } else { if (!(PIND & T1)) { release1 = 0x01; } } if((PIND & T2)&&(release2 == 0x01)) //Taster2 gedrückt { release2 = 0x00; direction = false; start = true; } else { if (!(PIND & T2)) { release2 = 0x01; } } if((PIND & T3)&&(release3 == 0x01))//Taster3 gedückt { PORTD |= 0x40; PORTD &=~(0x80) ; PORTD &=~(0x20); release3 = 0x00; PORTA &=~(0x80); start = false; } else { if (!(PIND & T3)) { release3 = 0x01; } } if(start == true) { rotate(direction); } } return 0; }







Zitieren

Lesezeichen