здравствуйте ! хочу написать програмку для мк,который будеть управлять регистрами сдвига 74нс595
задача такая есть 6регистров соединенных последовательно. бегущая дочка должна выводиться так : из одного конца в другой и наоборот
вот так 00000001 00000010 00000100 00001000............10000000 и наоборот 100000000 01000000 00100000 ............00000001
немогу придумать код,вот в чем проблема
подскажите пожалуйсто!
vovik15, У вс задача вполне проста и понятна. Сам алгоритм своей программы вы описали в первом посте.
vovik15 писал(а):ну я умею ей управлять,а вот код не рождаеться
Отлично! Раз вы уже умете управлять этой группой регистров осталось дело за малым.
vovik15 писал(а):
вот так 00000001 00000010 00000100 00001000............10000000 и наоборот 100000000 01000000 00100000 ............00000001
Берёте, пишите массив ваших значений, для каждого момента времени свой и загоняете их в регистры, добавив задержку между отправкой. Собственно задержка и определит скорость движения вашего огонька.
Вот и получается, кривой, косой, но работающий код. То что нужно. Но вы всегда можете его оптимизировать! Дерзайте!
боюсь что массив это не слишком оптимальный вариант для выбранного мной типа контроллера
представьте себе 48светодиодов. написание массива для них,это извращение
Вообще управлять световыми эффектами можно двумя путями:
1) Вывод кадров (массив)
2) Вычисление функции
Раз вам массив не подходит, делайте через функцию. В вашем случае это будут сдвиги влево-вправо. Задали начальное значение и начинаем двигать, додвигали до края - двигаем в другую сторону.
vovik15 писал(а):ПРАВДА?????
а то думал что в 595 можно только числа записывать
наверное еще и можно и складывать,и вчитать тоже...
Кто сказал что операции сдвига нужно делать на регистре? В него только конечный результат нужно выдать. Хотя на нем тоже можно делать сдвиг, но только сверху-вниз (если смотреть на УГО). Или вы действительно издеваетесь или идите читать даташит на 595 регистр...
ура! получилось сдвинуть еденичку в самый низ
я установил на линии DS 1 потом сделал строб
потом на DS 0 потом еще 48раз строб и ,и защелку передернул, в результе еденичка ушла в самый низ
а как ее на верх передвигать?