Also das ist das Programm:
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;
}
wie ihr sieht das ganze will ich mit Tastensteuerung machen.
Lesezeichen