Ассемблерный сдвиг
22.08.2012, 21:54
|
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
|
Re: Ассемблерный сдвиг
Сообщение от serj_neo
|
|
12 модулей 16х16 светодиодов.
|
И будет бегущая единица или ноль через все 3072 LED'a ???
__________________
Осторожно , злой кот
|
|
|
|
22.08.2012, 22:02
|
|
|
Временная регистрация
Регистрация: 16.01.2007
Адрес: Казахстан
Сообщений: 73
Сказал спасибо: 18
Сказали Спасибо 61 раз(а) в 18 сообщении(ях)
|
Re: Ассемблерный сдвиг
Сообщение от dosikus
|
И будет бегущая единица или ноль через все 3072 LED'a ???
|
Неа. Из массива выборка идёт по 24 байта на строку последовательно.
То есть если взять обычный рисунок с разрешением 192х16 и конвертнуть в Си массив, то всё чётко выводится. применяю операцию сдвига и изображение становится бегущей строкой. Если интересно то это китайские модули 2 цветные если кто видел.
|
|
|
|
22.08.2012, 22:26
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Ассемблерный сдвиг
Сообщение от serj_neo
|
|
Чтобы сделать бегущюю строку я просто сдвигаю буфер в нужную сторону.
|
Если там для вывода используются сдвиговые регистры, а иначе никак, то зачем выводить смещенный массив, если можно при выводе из МК сделать с нужным смещением. Смещать целиком матрицу имело бы смысл, если бы Вы выводили информацию параллельно.
|
|
|
|
22.08.2012, 22:38
|
|
|
Временная регистрация
Регистрация: 16.01.2007
Адрес: Казахстан
Сообщений: 73
Сказал спасибо: 18
Сказали Спасибо 61 раз(а) в 18 сообщении(ях)
|
Re: Ассемблерный сдвиг
Сообщение от nonamedov
|
|
Если там для вывода используются сдвиговые регистры, а иначе никак, то зачем выводить смещенный массив, если можно при выводе из МК сделать с нужным смещением. Смещать целиком матрицу имело бы смысл, если бы Вы выводили информацию параллельно.
|
Идея хорошая но, но...Китайцы так намудрили 
1 матрица 16х16 пикселя по 2 светодиода.
8 драйверов (по 4 на каждый цвет)по типу 74hc595 но только 16 разрядные.
Получается 4 разряда по 128 бит х на 2 канала(зелёный,красный).
То есть каналы загружаются одновременно.
В общем так не получится как Вы предложили.
|
|
|
|
22.08.2012, 22:43
|
|
|
Временная регистрация
Регистрация: 16.01.2007
Адрес: Казахстан
Сообщений: 73
Сказал спасибо: 18
Сказали Спасибо 61 раз(а) в 18 сообщении(ях)
|
Re: Ассемблерный сдвиг
Вот не как непойму.
Делаю сдвиг
|
Цитата:
|
00000A2A CLR R17 Clear Register
00000A2B LDI R18,0x01 Load immediate
00000A2E LDD R25,Z+0 Load indirect with displacement
00000A2F LSR R25 Logical shift right
00000A30 STD Z+0,R25 Store indirect with displacement
00000A31 ADD R30,R18 Add without carry
00000A32 ADC R31,R17 Add with carry
|
прибавляю к регистровой паре Z + 1 и флаг переноса CARRY благополучно теряет результат предыдущего сдвига!
А как же цикл считать...всё таки я думаю зря я эту затею задумал с ассемблером.
|
|
|
|
22.08.2012, 23:17
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Ассемблерный сдвиг
Сообщение от serj_neo
|
Вот не как непойму.
Делаю сдвиг
прибавляю к регистровой паре Z + 1 и флаг переноса CARRY благополучно теряет результат предыдущего сдвига!
|
А вы как думали. Конечно теряется.
Но зачем вам делать Z=Z+1?
Можно сохранять так:
Сообщение от serj_neo
|
Вот не как непойму.
А как же цикл считать...всё таки я думаю зря я эту затею задумал с ассемблером.
|
Может и получится быстрей чем на Си.
|
|
|
|
22.08.2012, 23:25
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Ассемблерный сдвиг
Сообщение от serj_neo
|
Вот не как непойму.
А как же цикл считать...всё таки я думаю зря я эту затею задумал с ассемблером.
|
Выход из цикла можно делать так:
|
Код:
|
shift_loop:
LD R16, Z
ROL R16 ; сдвиг
std Z+, R16 ;R16 - сдвинутое число
dec R17 ; счётчик байтов
brne shift_loop |
Последний раз редактировалось _Артём_; 22.08.2012 в 23:37.
|
|
|
|
Сказали "Спасибо" _Артём_
|
|
|
22.08.2012, 23:26
|
|
|
Временная регистрация
Регистрация: 16.01.2007
Адрес: Казахстан
Сообщений: 73
Сказал спасибо: 18
Сказали Спасибо 61 раз(а) в 18 сообщении(ях)
|
Re: Ассемблерный сдвиг
Всем спасибо!! Оказалось всё очень просто!
|
Цитата:
|
asm volatile (
"ldi R30,lo8(Buf) \n"
"ldi R31,hi8(Buf) \n"
"ldi R19,128 \n"
"ldi R20,1 \n"
"Cycle: \n"
"ld R25,Z \n"
"ror R25 \n"
"st Z+,R25 \n"
"dec r19 \n"
"brne Cycle \n"
"dec r20 \n"
"brne Cycle \n"
);
|
|
|
|
|
22.08.2012, 23:28
|
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
|
Re: Ассемблерный сдвиг
Сообщение от serj_neo
|
|
Всем спасибо!! Оказалось всё очень просто!
|
Ну а теперь , после осознания истины , то же самое да на С ...
__________________
Осторожно , злой кот
|
|
|
|
22.08.2012, 23:41
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Ассемблерный сдвиг
Сообщение от serj_neo
|
|
Оказалось всё очень просто!
|
Ну, и где же тут:
|
Код:
|
if (Buf[i+1] & 0x80)Buf[i] |= 1; |
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Сдвиг фаз при помощи ЦОС
|
lexa1000 |
Цифровые сигнальные процессоры |
11 |
05.04.2013 15:12 |
|
Сдвиг в тестбэнче
|
Aleksashka1 |
Микроконтроллеры, АЦП, память и т.д |
1 |
17.01.2011 16:26 |
|
Выбор, включение, модуляция, сдвиг и выключение
|
majorka65 |
Микроконтроллеры, АЦП, память и т.д |
1 |
26.05.2010 19:34 |
|
Сдвиг сигнала, почему?
|
Gonchar |
Микроконтроллеры, АЦП, память и т.д |
11 |
24.05.2010 23:42 |
|
Как или чем определить фазовый сдвиг
|
Online |
Измерительное оборудование |
19 |
06.11.2006 15:12 |
Часовой пояс GMT +4, время: 06:42.
|
|