Проектирование средств контроля и диагностики с элементами высокой интеграции. Голубков В.А - 9 стр.

UptoLike

7
START: BSF STATUS, RP0 ; Делаем активной страницу 1, чтобы
; получить доступ к
; регистру TRISB
CLRF TRISB ;Устанавливаем все выводы порта А на вывод
BCF STATUS, RP0 ; Возвращаемся на страницу 0
RUN: BCF PORTB, 0 ; Выдаем логический ноль на вывод RA0
CALL DELAY ; Вызываем подпрограмму задержки
BSF PORTB, 0 ; Выдаем логическую единицу на RA0
CALL DELAY ; Снова вызываем подпрограмму задержки
GOTO RUN ; Бесконечный цикл
; Подпрограмма задержки
DELAY: MOVLW 50 ; Заносим в аккумулятор число итераций цикла
MOVWF COUNT ; Записываем в счетчик цикла это значение
LOOP: DECFSZ COUNT,F ; Уменьшаем счетчик, если он после этого
равен ; нулю, то
;следующая команда не выполнитсяцикл
;будет завершен
GOTO LOOP ; Переходим на очередную итерацию
RETURN ; Возврат из подпрограммы
END ; Директива конца программы (ассемблирования)
Вычислим время выполнения подпрограммы задержки. Она состоит из
двух команд пересылки, 80 итераций
цикла, и команды возврата из
подпрограммы. Последняя итерация цикла состоит фактически из команд
DECFSZ и NOP, поэтому выполняется в два машинных цикла. Все остальные
итерации выполняются в 3 машинных цикла. Как уже было указано, команды
пересылки данных занимают один цикл, а команда RETURN – два цикла. Тогда
время выполнения подпрограммы можно рассчитать по формуле:
Т
подпр
=2*T
mov
+T
goto
+79*T
dec,goto
+T
dec,nop
=2*1+2+79*3+2=243 цикла.
Вычислим теперь период меандра. Один период меандра включает
выполнение одноцикловых команд установки и сброса бита, двух вызовов
подпрограмм и одного безусловного перехода. Вызовы подпрограмм и
безусловный переход занимают по два цикла. Поэтому период меандра равен:
T
меандра
=T
goto
+T
bcf
+T
bsf
+2*(T
call
+T
подпр
)=2+1+1+2*(2+243)=494 цикла.
Цикл состоит из 4 тактов, поэтому фрагмент выполняется за 4*494=1976
тактов. Если тактовая частота равна 32768 Гц, т.е. за одну секунду выполняется
32768 тактов. Значит, период меандра равен 1976/32768=0,06 c.