Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Топ:
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Интересное:
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Дисциплины:
2017-06-29 | 316 |
5.00
из
|
Заказать работу |
|
|
Перед тем, как приступить к кодированию обратите внимание на цифры:
1с = 1000 млс;
1 млс = 1000 мкс;
Процессор изучаемого МК – 8 битный, и выполняет все команды за 0.2 мкс, кроме перехода, и тех, что изменяют значение программного счётчика. Ячейка памяти, составляет 1 байт или 8 бит, и может содержать значение 255, которое является наибольшим. Для организации задержки, лучше брать во внимание, только равные части, поэтому примем значение 250, как максимальное. Чтобы получить 1 мкс, нам необходимо 5 раз подряд сложить 0.2, то есть:
0.2 * 5 = 1 мкс
Чтобы получить четвертую часть секунды, необходимо отсчитать назад или вперед 250 000 раз, то есть:
250 мкс * 1000 раз = 250 000 мкс = 250 млс;
И в свою очередь, чтобы получить 1 секунду:
250 млс * 4 = 1 млс.
Функция задержки 1с во времени - программно может выглядеть так:
Dellay_1s:; функция задержки прогр. способом
; длительностью на 1с
; загрузка данных
D2: movlw D'250'; W = 250
movwf _250mcs; 250 мкс
movwf _250mls; 250 млс
movlw D'4';
movwf cntr_mcs; 4 * 250 мкс = 1000 мкс = 1 млс
movwf cntr_mls; 4 * 250 млс = 1 с
; 0.2 + 0.2 + 0.2 + 0.4 = 1 мкс
; 250 * 1 мкс = 250 мкс
D3: nop; 0.2 мкс
decf _250mcs,f; 0.2 мкс
btfss STATUS,Z; 0.2 мкс - задержка на 250 мкс
; окончена?
goto D3; 0.4 мкс - нет, продолжить
goto D4; да - перезагрузить данные
D4: movlw D'250'; перезагрузка данных
movwf _250mcs;
D5: decf cntr_mcs,f; 4 * 250 мкс = 1000 мкс = 1 млс
btfss STATUS,Z; задержка на 1 млс окончена?
goto D3; нет - продолжить
goto D6; да - перезагрузить данные
D6: movlw D'4'; перезагрузка данных
movwf cntr_mcs;
D7: decf _250mls,f; 250 мкс * 1000 = 250 000 = 250 млс
btfss STATUS,Z; задержка на 250 млс окончена?
goto D3; нет - продолжить
goto D8; да - перезагрузить данные
D8: decf cntr_mls,f; 4 * 250 млс = 1000 млс = 1с
btfss STATUS,Z; задержк на 1 с окончена?
|
goto D3; нет - продолжить
return; да - выход
;-------------------------------;
Хотя это и не самый наилучший вариант организации задержки программным способом длительностью 1с, но зато он наиболее простой для понимания. Изучите работу функции с помощью среды симулятора. Если взглянуть на задержку, при помощи окна Stopwatch, то станет очевидно, что она длилась немного больше, чем 1с – рис.9.3.
Рис.9.3 – окно Stopwatch автора, после 1с задержки
Всё верно, потому что небыли учтены команды перезагрузки данных, а также команды перехода. В целом это не очень существенно, если длительность во времени не слишком велика, однако при больших задержках, «хвостики в конце» могут перерасти в большие значения, чем сильно испортят безупречный алгоритм. Если возникло желание, можете слегка уменьшить значения циклов, чем подправите состояние функции.
Организовать задержку программным способ, длительностью 1с, можно иным образом, подойдя, с другой стороны проблемы.
1 с = 1000 млс = 1000 000 мкс;
Максимальное число, вмещаемое в 8 бит = 250.
1000 000 / 250 = 4000;
4000 / 250 = 16;
Программный вариант:
Dellay_1s:; функция задержки прогр. способом
; длительностью на 1с
; общая формула:
; 1 000 000 / 250 = 4 000 / 250 = 16
D2: movlw D'250'; W = 250
movwf _250mcs; 250 мкс
movwf _250mls; 250 млс
movlw D'16';
movwf cntr_1s;
; 0.2 + 0.2 + 0.2 + 0.4 = 1 мкс
D3: nop; 0.2
decf _250mcs; 0.2
btfss STATUS,Z; 0.2 - задержка окончена?
goto D3; 0.4 - нет - продолжить
goto D4; да - перезагрузить данные
D4: movlw D'250'; перезагрузка данных
movwf _250mcs;
D5: decf _250mls;
btfss STATUS,Z; задержка окончена?
goto D3; нет - продолжить
goto D6; да - перезагрузить данные
D6: movlw D'250'; перезагрузка данных
movwf _250mls;
D7: decf cntr_1s;
btfss STATUS,Z; задержка окончена?
goto D3; нет - продолжить
return; да - выход
Новый вариант не так понятен, зато занимает меньше места и практически, в точности, соответствует задержке в 1с. Возможно, вы придумаете свой вариант решения проблемы, и он будет ещё лучше и эффективнее.
У программных задержек есть множество недостатков, и даже самое большое их преимущество, в том, что они приносят какую-то пользу, не даёт право на существование. К отрицательным сторонам следовало бы причислить следующие:
|
· Долгий период разработки, расчётов, написания;
· Вся программа останавливается на период задержки, что делает её не эффективной и бесполезной;
· Приходиться прибегать к различным хитростям, чтобы достичь точности в работе;
· WDT таймер необходимо перенастраивать на период долгих задержек, чтобы не произошёл случайный сброс МК;
· Задержка во времени зависит от мощности процессора;
На первых этапах, такой подход к организации задержек покажется весьма эффективным, но существует куда лучший инструмент, который может работать параллельно с программой, имеет высокую точность, так что, ни одна доля секунды не пропадёт даром, и называется он – таймер. О нём вы узнаете из лабораторной работы № 11, а пока взгляните на задание из таблицы 9.1, и произведите расчёты, чтобы выполнить задачу и продвинуться дальше.
|
|
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!