реклама на сайте
подробности

 
 
> STM8S - правда, что UART в режиме SPI выплёвывает данные только LSB-ом вперёд?
InsolentS
сообщение Nov 15 2012, 07:13
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897



Собственно сабж. Какой же тогда толк от такого SPI??


--------------------
Курильщик даташитов со стажем
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение Nov 15 2012, 13:49
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Ещё возможен такой вариант:
Код
uint8_t bitrev(uint8_t byte)
{
        asm("RLC A"); asm("RRCW X");
        asm("RLC A"); asm("RRCW X");
        asm("RLC A"); asm("RRCW X");
        asm("RLC A"); asm("RRCW X");
        asm("RLC A"); asm("RRCW X");
        asm("RLC A"); asm("RRCW X");
        asm("RLC A"); asm("RRCW X");
        asm("RLC A"); asm("RRCW X");
        asm("RLWA X, A");
        return byte;
}

33 такта вместе с вызовом функции и возвратом.
Update
А вот такой код на 6 тактов быстрее:
Код
uint8_t bitrev(uint8_t byte)
{
        asm("LD 0, A");
        asm("SRL A");
        asm("AND A, #0x55");
        asm("LD 1, A");
        asm("LD A, 0");
        asm("AND A, #0x55");
        asm("SLA A");
        asm("OR A, 1");
        asm("LD 0, A");
        asm("SRL A");
        asm("SRL A");
        asm("AND A, #0x33");
        asm("LD 1, A");
        asm("LD A, 0");
        asm("AND A, #0x33");
        asm("SLA A");
        asm("SLA A");
        asm("OR A, 1");
        asm("SWAP A");
        return byte;
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 01:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01375 секунд с 7
ELECTRONIX ©2004-2016