Переход к оглавлению

Полезные программы Николая Марова

Программа расчета задержек pause ver1.1 . Инструкция.

 

Наконец-то. Свершилось.  Мои "вопли" услышаны.

Нашелся "комплексный программёр", работающий в "Виндах" и знающий ассемблер для ПИКов.

Это Маров Николай Андреевич (http://nmarov.narod.ru, E-mail: kolmar1986@mail.ru ).

Те из Вас, кто на практике пробовал производить калибровку фиксированных задержек (а, тем паче, их больших величин), знают, что это за "великое счастье".

После запуска секундомера и десяти "перекуров", безумно хочется ударить чем-нибудь тяжелым по "системнику", чтобы он скорее соображал...

А если нужна задержка в несколько десятков минут, часов, дней и т.д., и причем, не на глазок, а точная?

Проклянешь все на свете...

Именно по этой причине, я очень рад тому, что Маров Николай избавил всех нас от этой малоприятной процедуры.

Его программа pause ver1.1 одновременно совмещает в себе и простоту и "навороченность".

Расшифровываю: пользовательский интерфейс программы очень простой (а это и нужно). Количество "органов управления" - минимально возможное и разобраться с ними абсолютно не составляет труда.

Задаете величину задержки в машинных циклах, щелкаете по "ОК" и получаете текст подпрограммы фиксированной задержки с требуемой разрядностью и просчитанными под эту задержку константами. Короче, красота...

"Навороченность" же программы заключается в том, что, с ее помощью, можно быстро и точно просчитать величины констант во всем диапазоне задержек от 4-х машинных циклов и до "огромаднейших" их величин.

Семь разрядов счетчика это очень солидно.

Плюс, выдается готовый текст подпрограммы фиксированной задержки (N-разрядный, вычитающий счетчик), который, через буфер обмена, можно скопировать в текст программы, причем, с соблюдением "правил 12-ти пробелов" (если текст программы "настукан" по этому правилу, то ничего выравнивать не нужно).

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

Надеюсь, что продолжение темы последует (на более высоком "витке развития").


 

Архив программы pause ver1.1 Вы можете скачать: здесь

 

Работа с программой

 

С программой можно работать сразу же после разархивации.

Она специализирована под PIC контроллеры (а также и под "текстуру" "Самоучителя...") и расчитывает величины констант для заданной (в машинных циклах) величины задержки, формируемой N-разрядным вычитающим, классическим счетчиком.

Величину задержки можно задавать любую, в диапазоне от 4 до 215887987009320190

машинных циклов (от 1 до 7 разрядов счетчика).

Для вычисления времени задержки, нужно умножить количество машинных циклов на время исполнения одного машинного цикла.

Нужна, например, такая "ужасающая" задержка, как в месяц, в год - нет проблем.

По окончании расчета, программа "выдает" группу команд задержки, с установленными в ней константами.

Регистры счетчика указываются в символическом виде, а именно, Reg_1, Reg_2, ..... Reg_7.

Регистр Reg_1 есть регистр самого младшего разряда. Далее - в порядке возрастания старшинства разрядов.

Если заданное количество машинных циклов меньше 4 или превышает 215887987009320190, то выдается предупреждение.

После переноса группы команд расчитанной задержки из программы pause ver1.1 в текст программы (....asm), нужно заменить символические названия регистров (Reg....) на соответствующие названия регистров, "прописанных" (под задержку) в "шапке" программы.

Название ПП задержки (Pause), а также и название метки (wr) также нужно "адаптировать" под конкретную программу.

В некоторых случаях, необходимости в присвоении группе команд задержки "статуса" подпрограммы нет, и ее название (Pause) можно просто убрать.

При изменении названия метки wr (а вот метку убирать нельзя), нужно также соответственно изменить ее название в адресных частях команд goto, обращающихся к этой метке.

После вызова программы pause ver1.1, в главном меню нужно щелкнуть по кнопке "Расчет".

Откроется окно с названием "Введите величину задержки".

"Настукиваете" в ней нужную Вам цифру и жмете на "ОК".

Все... Остальное выполнится в автомате и будет преподнесено Вам "на блюдечке с золотой каёмочкой".

Вот такая очень простая в эксплуатации, приятная и нужная программа.

После создания текста подпрограммы задержки, программа pause ver1.1 автоматически копирует текст подпрограммы задержки в буфер обмена, поэтому нужно всего лишь вставить его в текстовый редактор MPLAB (или куда-то еще).
Николай даже на секунду выделил текст подпрограммы задержки, чтобы пользователь догадался, что он уже скопирован в буфер обмена.

Если воспользоваться кнопкой "Сохранить", то можно сохранить текст расчитанной задержки в формате "Блокнота" (.txt) или "Винворда" (.doc) в любом указанном Вами месте.
Для этого, в строке "Имя файла" нужно, после названия файла, "настучать" .txt или .doc.


Примечание: вношу в "раскрутку" программы Николая свою посильную лепту, так как считаю, что она есть еще один, дополнительный и эффективный "инструмент" в "наборе инструментов" конструктора.

Надеюсь, что Николай порадует нас развитием темы. Информацией, в части касающейся этого, Вы можете поинтересоваться на его сайте (ссылка указана выше).

Если Николай сочтет нужным поделиться со мной (а значит и с Вами) своими наработками, связанными с тематикой "Самоучителя...", то мой сайт для него открыт.

Замечания по работе программы можете присылать либо мне (я передам), либо Николаю (E-mail - см. выше).

06.12.06

Программа расчета задержек pause ver1.2


Эта версия программы расчета задержек, дополнительно (по отношению к ver1.1), позволяет осуществить расчет величин задержек (в машинных циклах) по величинам констант, указанных пользователем, и с учетом (или без учета) сброса сторожевого таймера.
Последнее означает, что команда clrwdt может быть "врезана" (или нет) в цикл счета.
Максимальная величина задержки теперь 217'019'414'690'792'207 (clrwdt и 7 переменных).
После выбора преобразования типа "код - задержка", открывается окно "Введите значения регистров", в котором, последовательно двигая мышью ползунок, нужно "настучать" задаваемые величины констант.
При помощи выпадающего списка "nop", можно вставить в нижнюю часть подпрограммы задержки до двух NOPов (может потребоваться при точной "доводке") или не вставлять их (nop=0).
После осуществления преобразования любого типа, результат преобразования (текст подпрограммы задержки) автоматически копируется в буфер обмена, из которого его можно вставить, например, в текстовый редактор MPLAB (или в другое место).

Если воспользоваться кнопкой "Сохранить", то файл расчитанной задержки сохраняется в формате .txt, в любом, указанном Вами, месте.



Архив программы pause ver1.2 Вы можете скачать: здесь


Николай, спасибо за выполненную работу.
И я, и многие другие люди, по достоинству оценили ту реальную помощь, которую Вы предоставили.
Программа уже вовсю используется по своему прямому назначению.
Замечания по работе этой версии программы расчета задержек (если таковые будут иметь место быть) просьба присылать или мне, или Николаю.
01.03.07

Программа эмуляции циклического сдвига, через бит С регистра STATUS.


После окончания работ по созданию программ расчета задержек, я попросил Николая сделать еще одно доброе дело.
Дело в том, что многие люди, при "въезде" в "механику" процедуры циклических сдвигов содержимого многобайтных регистров (команды RLF и RRF), сталкиваются с достаточно серьезными понятийными сложностями.
Прежде всего, их наличие связано с тем, что регистров несколько, а бит С регистра STATUS один.
В связи с этим, возникает некое "бардальеро", мешающее "наслаждаться жизнью".
Николай выполнил эту просьбу, за что ему огромное спасибо.
Файл "новорожденной" программы называется Shift_C.exe, а сама программа называется "Сдвиг С".

Архив программы Сдвиг С   Вы можете скачать: здесь




Эта программа позволяет, с максимальным комфортом, "въехать" в "механику" процедуры циклических сдвигов содержимого многобайтных регистров (можно выбрать от одного до четырех регистров).
В процессе сдвигов, отслеживаются как числовые значения байтов (по-отдельности), входящих в состав N-байтного регистра, так и числовые значения самого N-байтного регистра.
Например, в 4-байтном регистре Reg_4/Reg_3/Reg_2/Reg_1 (Reg_1 - самый младший разряд, Reg_4 - самый старший разряд), нужно отследить сдвиги влево.
Для этого, нужно поставить точку напротив команды RLF.
Далее, нужно щелкнуть по кнопке выпадающего списка "колич.".
В выпадающем списке нужно щелкнуть по цифре "4".
Примечание: в момент открытия окна программы, в бите С автоматически выставляется 0.
По ходу сдвигов, при помощи кнопки "Сброс" (если есть такая необходимость), можно сбрасывать бит С в ноль.
Далее, в строках Reg_1, Reg_2, Reg_3, Reg_4, вместо установленных по умолчанию нулей, нужно "настучать" числовые значения байтов в бинарном формате.
При этом, автоматически происходит перевод бинарных чисел байтов в HEX и десятичный формат.
Одновременно с этим, в нижней части окна программы, Вы увидите то же самое, но применительно к содержимому N-байтного регистра (в данном случае, 4-байтного).
Таким образом, данная программа, кроме своей основной функции, выполняет функцию конвертора систем исчисления.
После открытия окна программы, содержимое регистра Reg_1 выделено зеленым цветом, что означает: при щелчке по кнопке "Сдвиг", сдвигаться будет содержимое регистра Reg_1.
После сдвига содержимого регистра Reg_1, оно перестанет выделяться зеленым цветом, а зеленым цветом будет выделено содержимое регистра Reg_2 (далее сдвигаться будет оно).
И так далее, по кольцу.
В процессе сдвигов, Вы можете отслеживать все числовые преобразования, а также и сбросить бит С в ноль (если в этом есть необходимость).
Счетчик сдвигов фиксирует количество произведенных сдвигов.
При нажатии на кнопку "Сброс", наряду со сбросом в ноль бита С, происходит и сброс в ноль счетчика сдвигов (байт регистра Reg_1 выделяется зеленым цветом).
При этом, числовые значения байтов в ноль не сбрасываются, что, в некоторых случаях, может оказаться полезным.
Если требуется сбросить в ноль числовое значение байта (байтов), то нужно просто "настучать" этот ноль (в бинарном формате) "по верху" старого значения.
В других случаях, можно выбрать команду RRF или другое количество регистров, а также и "настучать" требуемые, числовые значения байтов.
Естественно, что при использовании одного регистра (Reg_1), о многобайтном регистре речи не идет.
Примечание: в данном случае, сдвиги начинаются с регистра самого младшего разряда.
Надеюсь, что эта программа сослужит Вам хорошую службу.

21.05.07

"Самоучитель по программированию PIC контроллеров для начинающих"    http://ikarab.narod.ru     E-mail: karabea@lipetsk.ru

Переход к оглавлению
Hosted by uCoz