Как передать переменную в команды BSF/BCF?

У меня есть такая задача:
10)К порту D подключена линейка светодиодов (8 шт.)К порту B подключена кнопка. При нажатой кнопке по светодиодам порта Д циклически бежит один огонек. При повторном нажатии кнопки – два рядом стоящих огонька и т.д. до полного заполнения 8 светодиодов.

10.а После заполнения при каждом нажатии число бегущих огней уменьшается на 1.
----
Только перед сессией начал изучать эту тему. Я хочу сделать цикл, чтобы у меня была переменная, которая изменялась от 0 до 7 и от 7 до 0 (чтобы огонек бежал, по заданию). Потратил, в прямом смысле, весь день на решение этой простой задачи. Так и не решил. Прошу помощи от знатоков!
P.S. Будет хорошо, если поможете построить логику самой задачи в целом, потому что сделав цикл я без понятия, что делать дальше, но если подскажите хотя бы с переменной в эти BSF/BCF - буду очень признателен!
  • Вопрос задан
  • 77 просмотров
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
подскажите хотя бы с переменной в эти BSF/BCF

Набираешь в гугле "pic datasheet", (если знаешь какой именно PIC у тебя -- уточни, получишь более релевантный результат) получаешь ссылку на спецификацию конкретного процессора. Открываешь её и ищешь в оглавлении раздел "Instruction Set" или похожий по смыслу, в нём ищешь свою инструкцию. Если это сделать, то ты найдёшь такой текст:
For bit-oriented instructions, ‘b’ represents a bit field designator
which selects the bit affected by the operation, while ‘f’ represents
the address of the file in which the bit is located.

и такую картинку:
5ee43a094f624209976491.png
из чего ты сможешь сделать вывод, что нельзя этими инструкциями поменять бит по номеру, записанному в переменной, можно только явно указать в инструкции номер бита который надо поменять.

Выйти из положения можно несколькими способами, самый простой на мой взгляд -- иметь регистр в котором установлен единственный бит, соответствующий самому старшему биту, который должен быть установлен в наборе огоньков (а набор непрерывный, если я правильно понял задание). Этот бит можно двигать на 1 влево и вправо инструкциями rlf/rrf и операцией xorwf добавлять/убирать из набора огоньков.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы