НавигацияВход для пользователейМетки20 лет
25 лет
9860
add-ins
Atmega16
Casio
casio 9860
CITIZEN
COM-порт
FA-124
Geany
hello world
HP
HP-48
HP-50
HP 50g
IDE
iOS
mk.exe
mk161 for dummies
mkl2mkp
SPI
TI-89 Titanium
Андроид
Анонсы
Дополнительные вопросы по SPI-интерфейсу.
Игры
Импульсная характеристика
История
Итоги
КЭИ
Комбинаторика
Комплексные числа
Конкурсы
Криптография
Куплю БРП Москва
Лунолёты
МК-52
МК-161
Математика
Мысли
ПМК
ПО
Поломка
Пробел в знаниях
Программные метки в МК-1хх
Программы
Прогрессия
Простые числа
Разложение
Регламент
Секундомер
Сервис
События
Справочник В.П. Дьяконова
Справочное пособие
Стыковка
Факторизация
Физика
Фото
ЭКВМ
Юмор
ЯВУ
браузер
версия
внешний модуль
гибкий
гипербола
градиент
дети
дивергенция
калькулятор
книги
компилятор
кривые второго порядка
матрицы
методичка
мк-61
парабола
подзатыльник
практическое руководство
преобразоване координат
программируемый
производная n-го порядка
производная по направлению
прошивка
ротор
рынок
ряд Фурье
справочник
среда разработки
текст
учебник
цветы жизни
цифровая обработка сигналов
частная производная
числовой ряд
читалка
шахматы
эллипс
Новости других сайтов
|
Таймер для медитаций (МК-161)Программа «Таймер Дзэн» позволяет отмерять промежутки времени от 0,5 минуты до нескольких часов и предназначена в помощь тем, кто проводит дзадзэн или медитирует самостоятельно. Наберите, сколько минут собираетесь сидеть и нажмите В/О С/П. Программа выведет полный круг. Для начала первого отсчёта нажмите любую клавишу. Круг начнёт уменьшаться пропорционально пройденному времени.
По окончании отмеренного промежутка времени программа подаёт звуковой сигнал и возвращается в начальное состояние, что позволяет одним нажатием клавиши начать второй и последующие подходы к медитации. .CHARSET 1251 ; Файл ZenTimer.mkl ; Программа "Таймер Дзэн" ; Разработана в Москве, 12 июля 2010 года ; Автор Васильев И.В. ; ; Таймер для медитаций замеряет время в широком диапазоне: ; от 0,5 минуты до нескольких часов, с точностью до единиц ; секунд. ; ; Для компиляции используйте программу MKL2MKP. ; ; Инструкция: ; 1. Набрать продолжительность медитации в минутах, например 45 ; и нажать В/О С/П. ; 2. Дождаться знака паузы и изображения круга. ; 3. Приготовиться к медитации и нажать любую клавишу, кроме С/П. ; Знак паузы исчез с экрана, круг начал уменьшаться. ; Именно с этого момента МК-161 начал отсчёт времени. ; 4. По завершении периода медитации МК-161 издаст короткий ; звуковой сигнал и вновь отобразит символ паузы и полный круг. ; 5. При желании можно нажать любую клавишу (см. пункт 3), ; чтобы повторить сеанс медитации той же длительности. ; ; ВНИМАНИЕ! Программа "Таймер Дзэн" не проверяет, хватит ли ; у МК-161 питания на запрошенный интервал времени. Если ; аккумулятор сильно подсажен, выключите подсветку МК-161 или ; даже включите ЭКВМ в сеть питания. ; .ORG 0 ENT 60 / M0 ; Продолжительность медитации, теперь в часах 9 EE 3 Me ; Регистр начальных координат объекта 44 + Ma ; Регистр чтения памяти программ 11 + Mb ; Регистр текущего времени Cx PPM 9045 ; Размерность: градусы NextPeriod: 2 PPM 9010 ; Инициализация графического экрана 19 PPM 9020 ; Вывод знака паузы KGRPH ; Отображаем паузу, ещё до вывода круга ; ; Нарисуем круг. ; .NUMT tblCircle ; Предвычисленный круг PPM 9042 ; Запись индексного регистра 32 M1 ; Половина количества линий в круге Circle: 32 RM1 - ; Координата y верхней линии 64 ; Середина горизонтали KRMa ; Чтение содержимого памяти программ - M2 ; Левая граница отрезка KMe ; Начальные координаты отрезка Cx 63 FANS + M3 ; Границы отрезка по горизонтали PPM 9012 ; Вывод линии 31 RM1 + ; Координата y нижней линии RM2 KMe ; Начальные координаты отрезка FR RM3 PPM 9012 ; Вывод линии KGRPH ; Отобразить графический экран FL1 Circle ; Заполнить круг до конца KeyWait: PPRM 9029 ; Чтение кода нажатой клавиши KNOT FX!=0 KeyWait ; Ожидание нажатия KRMb KMS->D Mc ; Засечь время начала медитации ; ; Постепенно стираем круг. ; .NUMT tblErase ; Таблица с инструкциями для 4 квадрантов PPM 9042 ; Запись индексного регистра ; ; R0 продолжительность медитации, в часах и долях часа ; R1 счётчик по точкам ; R2 счётчик по сторонам квадранта ; R3 счётчик по квадрантам: 4, 3, 2, 1 ; R4 x0 центр ; R5 y0 центр ; R6 x конец радиус-вектора ; R7 y конец радиус-вектора ; R8 dx шаг радиус-вектора ; R9 dy шаг радиус-вектора ; Ra =9044 ; Rb =9055 ; Rc время начала медитации, в часах и долях часа ; Rd требуемое время от начала медитации ; Re =9000 ; 4 M3 PPM 9001 ; Четыре квадранта, рисование стирает 64 M6 Cx M7 ; Конец радиус-вектора, направленного вверх ENT KMe ; Объект (прямоугольник) в начале координат 8 ENT 3 PPM 9013 ; Сотрём знак паузы KGRPH ; Обновим экран без знака паузы NxtUgol: KRMa M5 KRMa M4 KMe ; Считаем из таблицы координаты радиус-вектора 2 M2 ; В каждом квадранте две стороны 31 ; Длина первой стороны NxtLine: M1 ; Сохраним длину текущей стороны в R1 KRMa Fcos M8 KRMa Fcos M9 ; Считаем dx, dy из таблицы в регистры 8, 9 NxtDot: ; ; Вычисляем новый градус. ; RM6 RM4 - RM5 RM7 - ; Вычислим проекции радиус-вектора на оси Fx=0 Atangens ; Если отрезок горизонтален, особый случай 90 ; это прямой угол, где арктангенс сбоит RM3 3 - Fx>=0 Plus180 ; В квадрантах 1 и 2 это 180+90 градусов FR GOTO StoreGradus ; В квадрантах 4 и 3 это 90 градусов Atangens: / Farctg ; Вычислим угол радиус-вектора через арктангенс Gradus: 4 RM3 - Fx!=0 Done ; В квадранте 4 это и есть угол 3 - Fx=0 Plus180 ; В квадрантах 3, 2 вычисляем 180+угол Cx 360 ; В квадранте 1 вычисляем 360+угол GOTO Done Plus180: Cx 180 ; Заменяем число в RX на 180 Done: + ; Корректируем градусную меру угла StoreGradus: ; ; RX: величина очищаемого сектора круга, в градусах. ; Вычисляем требуемую задержку. ; RM0 * 360 / Md ; За 360 градусов должно пройти R0 часов ; ; Временная задержка. ; WaitTime: KRMb KMS->D RMc - ; Сколько длится медитация? FX<0 General ; Если длительность отрицательная, 24 + ; значит мы перешли через полночь General: RMd - ; Сравнить с требуемой длительностью FX>=0 WaitTime ; Если не дождались, ждать ; ; Стираем очередную линию. ; RM7 RM6 PPM 9012 ; Вывод радиус-вектора KGRPH ; Обновляем экран RM8 + M6 FR RM9 + M7 ; Вычисляем координаты следующего радиус-вектора FL1 NxtDot ; Обработать сторону до конца 32 ; Количество точек во второй стороне PFL2 NxtLine ; Обработать обе стороны PFL3 NxtUgol ; Обработать все четыре квадранта 440 ENT 10 PPM 9052 ; Звуковая сигнализация WaitSound: PPRM 9052 ; Звук всё ещё звучит? FX=0 WaitSound ; Дождёмся окончания звука PGOTO NextPeriod ; Переходим на ожидание следующего периода tblCircle: ; Данные для рисования круга .DB 6, 10, 12, 15, 16, 18, 19, 21 ; Ширина линий 0..31 (63..32) .DB 22, 23, 24, 25, 25, 26, 27, 27 .DB 28, 29, 29, 29, 30, 30, 31, 31 .DB 31, 31, 32, 32, 32, 32, 32, 32 tblErase: ; Данные для стирания круга .DB 31,64, 0,90, 90,0 ; y0,x0, dx,dy, dx,dy .DB 32,64, 90,0, 180,90 .DB 32,63, 180,90, 90,180 .DB 31,63, 90,180, 0,90 .END
Контрольная сумма ADD 23224 Контрольная сумма XOR 130
Страничка программы на официальном сайте ЭКВМ, с дополнительными картинками:
|