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

 
 
> Поменять местами биты в байте.
ps1x
сообщение May 9 2007, 09:43
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Допустим есть

0bXY000000.

Как сделать

0bYX000000?

Надо использовать битовые маски и логические операции, только вот с масками никак не разберусь...

И еще, есть ли в CVAVR функция, возвращающая № буквы, т.е. типа chr("a")=35 ?

С уважением.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
singlskv
сообщение May 12 2007, 12:05
Сообщение #2


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Видимо самый быстрый вариант на С будет таким:
Код
volatile unsigned char x=0xAA;
volatile unsigned char y;

int main( void )
{
  char tmp=x;
  char tmp1=(tmp>>1)&0x40;
  tmp<<=1;
  tmp=((tmp>>1)&0xBF)|tmp1;
  y=tmp;

  while(1);
  return 0;
}

компилируется в:
Код
7:          char tmp=x;
+00000016:   EAE0        LDI     R30,0xA0         Load immediate
+00000017:   E0F0        LDI     R31,0x00         Load immediate
+00000018:   8110        LDD     R17,Z+0          Load indirect with displacement
11:         y=tmp;
+00000019:   2F01        MOV     R16,R17          Copy register
+0000001A:   0F00        LSL     R16              Logical Shift Left
+0000001B:   9505        ASR     R16              Arithmetic shift right
+0000001C:   7B0F        ANDI    R16,0xBF         Logical AND with immediate
+0000001D:   9515        ASR     R17              Arithmetic shift right
+0000001E:   7410        ANDI    R17,0x40         Logical AND with immediate
+0000001F:   2B10        OR      R17,R16          Logical OR

+00000020:   8311        STD     Z+1,R17          Store indirect with displacement

итого 7 команд/тактов
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ps1x   Поменять местами биты в байте.   May 9 2007, 09:43
- - zltigo   Цитата(ps1x @ May 9 2007, 12:43) Допустим...   May 9 2007, 10:22
|- - ps1x   Цитата(zltigo @ May 9 2007, 13:22) xxx = ...   May 9 2007, 10:36
||- - zltigo   Цитата(ps1x @ May 9 2007, 13:36) да нет, ...   May 9 2007, 10:46
||- - haker_fox   Цитата(ps1x @ May 9 2007, 18:36) да нет, ...   May 9 2007, 11:47
||- - ps1x   Цитата(haker_fox @ May 9 2007, 14:47) А к...   May 9 2007, 12:16
||- - haker_fox   Цитата(ps1x @ May 9 2007, 21:16) У меня е...   May 11 2007, 02:41
|- - Serg76   Цитата(zltigo @ May 9 2007, 13:22) xxx = ...   May 9 2007, 12:23
|- - ps1x   Цитата(Serg76 @ May 9 2007, 15:23) Как мн...   May 9 2007, 13:24
|- - Serg76   Цитата(ps1x @ May 9 2007, 16:24) Я это сд...   May 9 2007, 14:44
|- - zltigo   Цитата(Serg76 @ May 9 2007, 17:44) ....то...   May 9 2007, 15:16
|- - Edmundo   Цитата(Serg76 @ May 9 2007, 18:44) 1. Сдв...   May 9 2007, 15:30
|- - IgorKossak   Цитата(Serg76 @ May 9 2007, 17:44) Прошу ...   May 10 2007, 20:36
- - Laksus   Цитата(Serg76 @ May 9 2007, 14:23) Как мн...   May 9 2007, 15:00
- - xemul   Тупое решение в лоб Кодt = x; x &= 0x3f; if...   May 9 2007, 15:27
- - Visor   Есть такой флаг "Т", вот через него можн...   May 10 2007, 13:07
|- - kv_addr   Цитата(Visor @ May 10 2007, 16:07) Есть т...   May 11 2007, 00:34
|- - singlskv   Цитата(kv_addr @ May 11 2007, 04:34) На а...   May 11 2007, 15:27
|- - kv_addr   Цитата(singlskv @ May 11 2007, 18:27) Дли...   May 11 2007, 15:50
|- - singlskv   Цитата(kv_addr @ May 11 2007, 19:50) Пыта...   May 11 2007, 16:39
|- - kv_addr   Цитата(singlskv @ May 11 2007, 19:39) Дык...   May 11 2007, 20:13
|- - singlskv   Цитата(kv_addr @ May 12 2007, 00:13) IAR-...   May 11 2007, 21:05
|- - kv_addr   Цитата(singlskv @ May 11 2007, 23:20) А у...   May 11 2007, 21:07
|- - singlskv   Цитата(kv_addr @ May 12 2007, 01:07) Пров...   May 11 2007, 21:22
|- - kv_addr   Цитата(singlskv @ May 12 2007, 00:22) А в...   May 11 2007, 22:35
|- - Александр Куличок   Цитата(singlskv @ May 12 2007, 00:22) А в...   May 12 2007, 15:33
|- - singlskv   Цитата(Александр Куличок @ May 12 2007, 19...   May 12 2007, 21:12
- - Punk   Цитата(ps1x @ May 9 2007, 12:43) Допустим...   May 10 2007, 14:06
|- - Dog Pawlowa   Два порта контроллера закольцевать еще не предлага...   May 10 2007, 14:20
- - ae_   Цитата(ps1x @ May 9 2007, 18:43) Допустим...   May 11 2007, 02:04
|- - kv_addr   Цитата(ae_ @ May 11 2007, 05:04) асм, три...   May 11 2007, 14:47
- - defunct   ЦитатаВедь и переносимость программ, написанных на...   May 12 2007, 00:15
|- - kv_addr   Цитата(defunct @ May 12 2007, 03:15) Позв...   May 12 2007, 02:01
|- - defunct   Цитата(kv_addr @ May 12 2007, 04:01) Но 1...   May 12 2007, 02:42
|- - kv_addr   Цитата(defunct @ May 12 2007, 05:42) Прот...   May 12 2007, 04:01
|- - defunct   Цитата(kv_addr @ May 12 2007, 06:01) IMHO...   May 12 2007, 12:16
- - sensor_ua   Цитатапрограммная реализация encoder'a/decoder...   May 12 2007, 15:09
|- - kv_addr   Цитата(sensor_ua @ May 12 2007, 18:09) Ду...   May 12 2007, 23:08
- - Александр Куличок   ЦитатаВсе правильно, в варианте с битом 7, компиля...   May 13 2007, 07:05


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

 


RSS Текстовая версия Сейчас: 26th June 2025 - 02:08
Рейтинг@Mail.ru


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