Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Ассемблерный сдвиг

Непрочитано 22.08.2012, 21:54  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Ассемблерный сдвиг

Сообщение от serj_neo Посмотреть сообщение
12 модулей 16х16 светодиодов.
И будет бегущая единица или ноль через все 3072 LED'a ???
Реклама:
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 22.08.2012, 22:02  
serj_neo
Временная регистрация
 
Аватар для serj_neo
 
Регистрация: 16.01.2007
Адрес: Казахстан
Сообщений: 73
Сказал спасибо: 18
Сказали Спасибо 61 раз(а) в 18 сообщении(ях)
serj_neo на пути к лучшему
По умолчанию Re: Ассемблерный сдвиг

Сообщение от dosikus Посмотреть сообщение
И будет бегущая единица или ноль через все 3072 LED'a ???
Неа. Из массива выборка идёт по 24 байта на строку последовательно.
То есть если взять обычный рисунок с разрешением 192х16 и конвертнуть в Си массив, то всё чётко выводится. применяю операцию сдвига и изображение становится бегущей строкой. Если интересно то это китайские модули 2 цветные если кто видел.
serj_neo вне форума  
Непрочитано 22.08.2012, 22:26  
nonamedov
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Ассемблерный сдвиг

Сообщение от serj_neo Посмотреть сообщение
Чтобы сделать бегущюю строку я просто сдвигаю буфер в нужную сторону.
Если там для вывода используются сдвиговые регистры, а иначе никак, то зачем выводить смещенный массив, если можно при выводе из МК сделать с нужным смещением. Смещать целиком матрицу имело бы смысл, если бы Вы выводили информацию параллельно.
nonamedov вне форума  
Непрочитано 22.08.2012, 22:38  
serj_neo
Временная регистрация
 
Аватар для serj_neo
 
Регистрация: 16.01.2007
Адрес: Казахстан
Сообщений: 73
Сказал спасибо: 18
Сказали Спасибо 61 раз(а) в 18 сообщении(ях)
serj_neo на пути к лучшему
По умолчанию Re: Ассемблерный сдвиг

Сообщение от nonamedov Посмотреть сообщение
Если там для вывода используются сдвиговые регистры, а иначе никак, то зачем выводить смещенный массив, если можно при выводе из МК сделать с нужным смещением. Смещать целиком матрицу имело бы смысл, если бы Вы выводили информацию параллельно.
Идея хорошая но, но...Китайцы так намудрили
1 матрица 16х16 пикселя по 2 светодиода.
8 драйверов (по 4 на каждый цвет)по типу 74hc595 но только 16 разрядные.
Получается 4 разряда по 128 бит х на 2 канала(зелёный,красный).
То есть каналы загружаются одновременно.
В общем так не получится как Вы предложили.
serj_neo вне форума  
Непрочитано 22.08.2012, 22:43  
serj_neo
Временная регистрация
 
Аватар для serj_neo
 
Регистрация: 16.01.2007
Адрес: Казахстан
Сообщений: 73
Сказал спасибо: 18
Сказали Спасибо 61 раз(а) в 18 сообщении(ях)
serj_neo на пути к лучшему
По умолчанию 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 благополучно теряет результат предыдущего сдвига!
А как же цикл считать...всё таки я думаю зря я эту затею задумал с ассемблером.
serj_neo вне форума  
Непрочитано 22.08.2012, 23:17  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Ассемблерный сдвиг

Сообщение от serj_neo Посмотреть сообщение
Вот не как непойму.
Делаю сдвиг
прибавляю к регистровой паре Z + 1 и флаг переноса CARRY благополучно теряет результат предыдущего сдвига!
А вы как думали. Конечно теряется.
Но зачем вам делать Z=Z+1?
Можно сохранять так:
Код:
ST Z+, Rr
Сообщение от 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.
_Артём_ вне форума  
Сказали "Спасибо" _Артём_
serj_neo (22.08.2012)
Непрочитано 22.08.2012, 23:26  
serj_neo
Временная регистрация
 
Аватар для serj_neo
 
Регистрация: 16.01.2007
Адрес: Казахстан
Сообщений: 73
Сказал спасибо: 18
Сказали Спасибо 61 раз(а) в 18 сообщении(ях)
serj_neo на пути к лучшему
По умолчанию 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"
);
serj_neo вне форума  
Непрочитано 22.08.2012, 23:28  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Ассемблерный сдвиг

Сообщение от serj_neo Посмотреть сообщение
Всем спасибо!! Оказалось всё очень просто!
Ну а теперь , после осознания истины , то же самое да на С ...
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 22.08.2012, 23:41  
nonamedov
Почётный гражданин KAZUS.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: Ассемблерный сдвиг

Сообщение от serj_neo Посмотреть сообщение
Оказалось всё очень просто!
Ну, и где же тут:
Код:
if (Buf[i+1] & 0x80)Buf[i] |= 1;
nonamedov вне форума  
 

Метки
асм си
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.