So, nun sieht es so aus und funktioniert auch, wei geplant Dafür klkappts noch nicht mit der Bluetooth+Bresenham Variante, ich zeig die gleich nochmal.

Code:
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include "uart.h"
#include <avr/interrupt.h>
#include <stdint.h> 

//#include <avr/pgmspace.h>

#define UART_BAUD_RATE      250000
#define m_delay 1500
volatile  uint16_t motor1=0;
volatile  uint16_t motor2=0;
//absolute direction in degree (-180 to 180, -90 to 90)
volatile int16_t xpos = 0;
volatile int16_t ypos = 0;
#define speed 50
#define deframp 200
#define rf 2
const unsigned char halfstep[8]={5,1,9,8,10,2,6,4}; 

void init()
{
 DDRA = 0b00000011;
 DDRB = 0b11111111;
 DDRD = 0b00000000;
 uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); 
 sei();
}
void _vdelay_us(int delay)
{
 int cnt;
 for (cnt=0;cnt<delay;cnt++)
 {
  _delay_us(10);
 }
}
void _vdelay_ms(int delay)
{
 int cnt;
 for (cnt=0;cnt<delay;cnt++)
 {
  _delay_ms(1);
 }
}

void step_x(int dir)
{
 motor1 = motor1 + dir;
 PORTB = (halfstep[(motor1 & 7)])| (PORTB & (0b11110000));
 _vdelay_us(speed);
}
void step_y(int dir)
{
 motor2 = motor2 + dir;
 PORTB = (halfstep[(motor2 & 7)]) << 4| (PORTB & (0b00001111));
 _vdelay_us(speed);
}
void turn_x(int steps)
{
 int cnt; 
 int ramp = deframp;
 
 int shortramp=0;
 char m=0;
 m = motor1;
 if (abs(steps)<(ramp*2))
 {
  shortramp=ramp-(abs(steps)/2);
  ramp= abs(steps)/2;
 }
 else 
  shortramp=0;
 
 PORTA |= (1<<0);
 if (steps>0)
 {
  for (cnt=0;cnt<=steps;cnt++)
  {
   step_x(1);
   // ramp start/stop
   if (cnt<ramp) //start
   {
    _vdelay_us((ramp-cnt+shortramp)*rf);
   }
  
   if (cnt>(steps-ramp)) //stop
   {
    _vdelay_us((cnt-(steps-ramp-shortramp))*rf);
   }
  }
 }
 else
 if (steps<0)
 {
  for (cnt=0;cnt>=steps;cnt--)
  {
   step_x(-1);
   // ramp start/stop
   if (abs(cnt)<ramp) //start
   {
    _vdelay_us((ramp-abs(cnt)+shortramp)*rf);
   }
  
   if (abs(cnt)>(abs(steps)-ramp)) //stop
   {
    _vdelay_us((abs(cnt)+(steps+ramp)+shortramp )*rf);
   }
  }
 }
 motor1 += steps;
 PORTA&=~(1<<0); //motor disable
}
void turn_y(int steps)
{
 int cnt; 
 int ramp = deframp;
 
 int shortramp=0;
 char m=0;
 m = motor2;
 if (abs(steps)<(ramp*2))
 {
  shortramp=ramp-(abs(steps)/2);
  ramp= abs(steps)/2;
 }
 else 
  shortramp=0;
 
 PORTA |= (1<<1);
 if (steps>0)
 {
  for (cnt=0;cnt<=steps;cnt++)
  {
   step_y(1);
   // ramp start/stop
   if (cnt<ramp) //start
   {
    _vdelay_us((ramp-cnt+shortramp)*rf);
   }
  
   if (cnt>(steps-ramp)) //stop
   {
    _vdelay_us((cnt-(steps-ramp-shortramp))*rf);
   }
  }
 }
 else
 if (steps<0)
 {
  for (cnt=0;cnt>=steps;cnt--)
  {
   step_y(-1);
   // ramp start/stop
   if (abs(cnt)<ramp) //start
   {
    _vdelay_us((ramp-abs(cnt)+shortramp)*rf);
   }
  
   if (abs(cnt)>(abs(steps)-ramp)) //stop
   {
    _vdelay_us((abs(cnt)+(steps+ramp)+shortramp )*rf);
   }
  }
 }
 motor2 += steps;
 PORTA&=~(1<<1); //motor disable
}
void turn_deg_x(int16_t deg)
{
  turn_x(deg*67);
}
void turn_deg_y(int16_t deg)
{
  turn_y(deg*67);
}
unsigned char serialin(void)
{
 unsigned int c;
 c = uart_getc();
    while ( c & UART_NO_DATA )
  c = uart_getc();
 return c;
}
void remote_move()
{
 int16_t x,y;
 x=serialin()+(serialin()<<8);
 y=serialin()+(serialin()<<8);
 turn_deg_x(x-(xpos));
 turn_deg_y(y-(ypos));
 xpos = x;
 ypos = y;
 uart_putc(0);
}

void remote(void)
{ 
 unsigned int c;
    c = uart_getc();
    if ( c & UART_NO_DATA )
    {
        /* 
         * no data available from UART 
         */
    }
    else
    {
        /*
         * new data available from UART
         * check for Frame or Overrun error
         */
        if ( c & UART_FRAME_ERROR )
        {
            /* Framing Error detected, i.e no stop bit detected */
            //uart_puts_P("UART Frame Error: ");
        }
        if ( c & UART_OVERRUN_ERROR )
        {
            /* 
             * Overrun, a character already present in the UART UDR register was 
             * not read by the interrupt handler before the next character arrived,
             * one or more received characters have been dropped
             */
            //uart_puts_P("UART Overrun Error: ");
        }
        if ( c & UART_BUFFER_OVERFLOW )
        {
            /* 
             * We are not reading the receive buffer fast enough,
             * one or more received character have been dropped 
             */
            //uart_puts_P("Buffer overflow error: ");
        }
       //doing commands
  switch(c)
  {
   case 1:
    remote_move(); 
   break;
  } 
    }
}

int main(void)
{
 init();
 while (1)
 {
  remote();
 }
}