C to ASM

Milan MCM magixe@volny.cz
Sobota Srpen 13 10:32:47 CEST 2005

Dobrý den , chtěl jsem poprosit nějakou dobrou duši co umí a dělá v C a 
má na to nějaký SW
zda by mě přeložil tento kousek kodu C do ASM podoby - pro X51 ( 89C51ED2 ).

Kod >>

//Sine wave table used for 4-bit microstepping.
//The absolute values are left-shifted by one bit, and bit 0 is the sign 
bit (phase direction bit).
//Bit 5 is the mixed decay bit. It is set when the absolute value is 
  UCHAR sinus_tab[64]={0x00, 0x02, 0x06, 0x08, 0x0c, 0x0e, 0x10, 0x14,
                       0x16, 0x18, 0x18, 0x1a, 0x1c, 0x1c, 0x1e, 0x1e,
                       0x3e, 0x3e, 0x3e, 0x3c, 0x3c, 0x3a, 0x38, 0x38,
                       0x36, 0x34, 0x30, 0x2e, 0x2c, 0x28, 0x26, 0x22,
                       0x01, 0x03, 0x07, 0x09, 0x0d, 0x0f, 0x11, 0x15,
                       0x17, 0x19, 0x19, 0x1b, 0x1d, 0x1d, 0x1f, 0x1f,
                       0x3f, 0x3f, 0x3f, 0x3d, 0x3d, 0x3b, 0x39, 0x39,
                       0x37, 0x35, 0x31, 0x2f, 0x2d, 0x29, 0x27, 0x23};

volatile UCHAR PhaseCount=0;

  This function generates the
  microsteps. The values are read from the
  table and output to the TMC236 or TMC239
  via the SPI interface.
  Call this function with the "ccw" parameter set to 1
  to step in negative direction,
  or with "ccw" set to 0 to step in positive direction.
  Callthis function for example in a timer interrupt.
void step(char ccw)
    UINT MixedDecayXOR=0, io;

    {     //The "Mixed Decay" bits must be reversed when running in CCW 

     io=((sinus_tab[PhaseCount & 63]<<6 | sinus_tab[(PhaseCount+16) & 
63]) ^ MixedDecayXOR);

  //Now, set the CS line of the TMC236/239 low and send out the value of 
"io" by SPI
  //(MSB first).
  //After that, set the CS line high again.

Další informace o konferenci Hw-list