[elektro] AVR GCC kezdő kérdés

Stolmár Tamás knight at borsodi.qualitis.hu
Mon Jan 31 09:36:08 CET 2011


2011.01.31. 8:27 keltezéssel, Norbert Berberovics írta:

A "rol"-ról:
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=65038

A teljes algoritmusod sejtésem szerint valami soros kommunikáció.
Én ezt írtam SPI-hez:
Lehet hogy még szebben / hatékonyabban meg lehetne írni, de ez stabilan 
működik.
A dout_0, dout_1, clk_up, clk_down makrók csak a megfelelő portlábat 
tologatják.

void spi_write_byte(uint8_t *input)
{
     register uint8_t data = *input;
     register uint8_t i;

     for (i=0; i<8; i++)
     {
         if (data & 0x80)
         {
             dout_1();
         }
         else
         {
             dout_0();
         }
         delayUS(SPI_DELAY_US);
         clk_up();
         delayUS(SPI_DELAY_US);
         clk_down();
         data <<= 1;        //bit shift
     }
}

void spi_read_byte(uint8_t *input)
{
     register uint8_t data = 0;
     register uint8_t i;

     for (i=0; i<8; i++)
     {
         delayUS(SPI_DELAY_US);
         clk_up();
         delayUS(SPI_DELAY_US);

         data <<= 1;
         if (read_din())
         {
             data |= 0x01;
         }
         clk_down();
     }
     *input = data;
}

> Sziasztok,
>
> AVR GCC vel ismerkedek egy pár hete, sehol nem találom, hogy hogyan lehet
> legegyszerűbben megoldani ezt C-ben, amivel asm-ben semmi gondom nem volt:
>
> belep:
>               rol r18
>               brcs beir_1
>               rjmp beir_0
>
> Előre is nagyon köszi.
> -----------------------------------------
>            elektro[-flame|-etc]
>



More information about the Elektro mailing list