Примеры программирования

Пример 1 Пример обработки нажатия кнопки

Пример 2

Перевод двоичного числа в десятичное (по разрядам)
Пример 3 Вывод данных на индикацию
Пример 4 Мой вариант бегущей строки

Я не математик и различного рода пересчеты и преобразования для меня обычно тяжкий труд. Я стараюсь находить нестандартные решения для решения стандартных проблем.
Вот и сейчас я предлагаю вариант перевода двоичного числа в вид, удобный для индикации трех десятичных разрядов.
Смысл очень прост. Как костяшки в старых счётах. Считаем по одной и как только отсчитали первые десять на второй нитке откладываем десяток, как только кончился десяток, откладываем сотню. Согласен, что это не рационально, потому что занимает довольно много времени. Но это мой вариант прост для понимания процессов пересчета и возможности программирования каких-либо не стандартных моментов.

Переменная per1 содержит какое-то значение в двоичной форме.
Мы переносим её значение в переменную counter. На всякий случай обнуляем переменные RAZR0,RAZR1,RAZR2. Эти переменные и есть три разряда, выводящиеся на индикацию.
Затем вызываем подпрограмму sch0 до тех пор, пока не обнулится counter. Это обеспечивается командой decfsz которая будет возвращать нас к подпрограмме счета. Но как только counter достигнет ноля, она пропустит команду goto и по команде return, вернётся к тому месту, откуда вообще была вызывана эта подпрограмма.

Эта часть нашего примера состоит из трех одинаковых кусочков, смысл которых прост:
При каждом обращении переменная RAZR0 увеличивается на единицу и мы сразу же проверяем, а не равна ли она у нас 10(d)(Это было в первом примере). Как только она становится равна 10(d), мы переходим к увеличению переменной RAZR1, а потом к переменной RAZR2.
Как только закончится обращение к этой подпрограмме, в переменных RAZR0,RAZR1,RAZR2 будет находиться наша переменная per1 , но разбитая на разряды соответвтвенно единиц, десятков, сотен.

Ну а о том как их вывести на индикацию - другой пример
Хостинг от uCoz