Без описания |
Поиск в теме | Версия для печати |
lamakazzz |
Отправлено: 08 Февраля, 2011 - 18:46:30
|
Главнокомандующий
Сообщений всего: 328
Дата рег-ции: Янв. 2010
|
Вам это дали как пример.
Смотрите - у Вас есть матрица размером 4*4 - это получается 16 элементов (или светодиодов).
Один байт - это восемь битов (не путаем байт с битом!). То есть один байт может обслужить половину Вашей матрицы, а два байта покроют всю матрицу.
Поскольку один байт содержит 8 бит, то для Вашей матрицы удобно разбить байт на младшую часть и старшую часть(т.е. по 4 бита в каждой) - это получатся как раз две строки матрицы
в двочиной системе число 240 будет выглядеть как 11110000
пусть это будет наш один байт.
теперь мы можем разбить его на старшую (1111) и младшую часть (0000)
теперь пусть младшая часть этого байта - будет нулевая строка матрицы, а старшая часть - первая строка. Тогда получим матрицу такого вида:
0000
1111
Теперь пусть задан еще один байт вида 11000011
Точно также поступим и со вторым байтом. Тогда младшая часть второго байта будет второй строкой матрицы, а старшая часть второго байта - третьей строкой.
Получим матрицу вида:
0000
1111
0011
1100
С байтами разобрались. Теперь читайте о побитовых сдвигах. Как прочитаете, то возьмите нарисуйте результат каждой итерации примера, который Вам привел Белый Волк и напишите сюда, чтобы было понятно, что мы "говорим на одинаковых языках". Если Вам и так уже ясно, то вперед за работу!
Работа программиста - это в первую очередь правильное проектирование, оно больше всего занимает время, а написание кода - это уже мелочь. Поэтому всё что Вы придумаете - пишите и рисуйте сначала на бумаге, разрабатывайте алгоритм, и написать код уже будет намного легче. |
|
|
Белый Волк |
Отправлено: 08 Февраля, 2011 - 20:04:28
|
Супермодератор
Сообщений всего: 648
Дата рег-ции: Февр. 2007
|
lamakazzz
Результатом операции (data & 1) будет байт, нулевой бит которого равен нулевому биту переменной (то есть, 0b00000001 или 0b00000000). То, что описали Вы, записывается строкой:
PORTD = 1;
skyburn
WinAVR обладает почти стандартным синтаксисом C. Операции &, |, &&, ||, >>, <<, ~ - есть в стандартном C.
Что касается решаемой задачи: сдвиговый регистр представляет собой байт оперативной памяти (два, если быть точным). Вы загружаете в него байт последовательно, на табло этот же байт выводится параллельно. |
|
|
|
Поиск в теме | Версия для печати |
Страниц (11): В начало « ... 3 4 5 6 7 [8] 9 10 11 » |
« Делаем роботов » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|
|
|