Академический Документы
Профессиональный Документы
Культура Документы
movlw .173
movwf Reg_1
movlw .19
movwf Reg_2
movlw .6
movwf Reg_3
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
decfsz Reg_3,F
goto $-5
nop
nop
Регистры Reg_1, Reg_2, Reg_3 должны быть прописаны в "шапке" той программы, в
текст которой "врезается" эта задержка.
Пояснение: названия этих регистров можно изменить. Соответственно, в "шапке" программы нужно "прописать"
изменённые названия. Если используются ранее "прописанные" регистры, то ничего "прописывать" не нужно.
6
movlw .150 ; В данном случае, .150, но можно и другие значения.
call PAUSE_X ; Вызов ПП задержки.
nop ; Символизирует часть программы.
goto $ ; "Мертвяк".
;****************************************************************************************************
end ; Конец программы.
В данном случае, это 3-разовый вызов, но можно вызвать и любое количество раз.
Подставляя различные числовые значения констант (.0 … .255), можно убедиться в том,
что время отработки задержки будет изменяться пропорционально этому значению.
Если в W копируется не константа, а содержимое какого-то регистра, то
movlw <константа> заменяется на movf <регистр>,W
Примечание: вызываемую программу можно переместить, из начала программы, в её конец (перед директивой end).
В этом случае, в "шапке" программы, команду goto START можно убрать.
;***************************************************************************************************
; Программа, позволяющая проверить (в симуляторе) работу ПП фиксированной задержки c “врезкой”.
; В симуляторе, установлена частота кварца 4 Мгц. (1м.ц. = 1мкс.).
;***************************************************************************************************
LIST p=16f84A ; Используется PIC16F84A.
#include <p16f84a.inc>; Подключение INC-файла PIC16F84A.
__CONFIG 03FF1H ; Бит защиты выключен, WDT выключен, XT - генератор.
;----------------------------------------
; "Прописка" регистров общего назначения.
;----------------------------------------
cblock 20h ; Назначение адреса первого регистра блока
; (можно назначить и другой начальный адрес).
Reg_1 ; Регистры
Reg_2 ; 3-байтного
Reg_3 ; счётчика.
endc ; Конец блока.
;------------------------------------
org 0 ; Выполнение программы начинается c 0-го PC-адреса.
;***********************************************************************************************
;===============================================================================================
; Начало программы.
;===============================================================================================
nop ; Символизирует часть программы.
7
;=======================================
; ПП задержки на 1 000 000 мкс. (1 сек.)
;=======================================
; Подготовительная часть.
;------------------------------------
movlw .165 ; Без “врезки”, было .173
movwf Reg_1 ; Предустановка
movlw .207 ; времязадающих (Без “врезки”, было .19)
movwf Reg_2 ; констант.
movlw .4 ; Без “врезки”, было .6
movwf Reg_3 ;
;------------------------------------
; Исполнительная часть.
;------------------------------------
SNOVA nop ; "Врезка", увеличивающая время отработки внутреннего
; цикла (если WDT включен, то NOP заменяется на clrwdt).
decfsz Reg_1,F ; Стандартный,
goto SNOVA ; 3-байтный,
decfsz Reg_2,F ; декрементный
goto SNOVA ; счётчик.
decfsz Reg_3,F ;
goto SNOVA ;
;;; nop ; ЭТОТ NOP НЕ НУЖЕН (ЛИШНИЙ).
nop ; Калибровочный NOP.
;------------------------------------
goto $ ; "Мертвяк". <- ТОЧКА ОСТАНОВКИ
;**************************************************************************************************
end ; Конец программы.
8
decfsz Reg_2,F ; декрементный
goto SNOVA ; счётчик.
;------------------------------------
goto $ ; "Мертвяк". <- ТОЧКА ОСТАНОВКИ
;**************************************************************************************************
end ; Конец программы.
9
“Экзотические” в том смысле, что они отличаются, от стандартных, более “лихо
закрученным, кольцевым сюжетом”.
Пример (2-байтный счёт):
;***************************************************************************************************
; Программа, позволяющая проверить (в симуляторе) работу ПП фиксированной задержки.
; В симуляторе, установлена частота кварца 4 Мгц. (1м.ц. = 1мкс.).
;***************************************************************************************************
LIST p=16f84A ; Используется PIC16F84A.
#include <p16f84a.inc>; Подключение INC-файла PIC16F84A.
__CONFIG 03FF1H ; Бит защиты выключен, WDT выключен, XT - генератор.
;----------------------------------------
; "Прописка" регистров общего назначения.
;----------------------------------------
cblock 20h ; Назначение адреса первого регистра блока
; (можно назначить и другой начальный адрес).
Reg_1 ; Регистры 2-байтного
Reg_2 ; счётчика.
endc ; Конец блока.
;------------------------------------
org 0 ; Выполнение программы начинается c 0-го PC-адреса.
;***********************************************************************************************
;====================================
; ПП задержки на 30 401 мкс.
;====================================
; Подготовительная часть.
;------------------------------------
movlw .100 ;
movwf Reg_1 ; Предустановка
;------------------------------------------------------------
; Исполнительная часть, с “элементом” подготовительной части.
;------------------------------------------------------------
SNOVA_1 movlw .100 ; времязадающих
movwf Reg_2 ; констант.
Как видите, имеется не одна метка, а две, и “кусок” подготовительной части входит в
состав исполнительной части.
А это задержка, на такое же время, только не “экзотическая”, а стандартная:
;***************************************************************************************************
; Программа, позволяющая проверить (в симуляторе) работу ПП фиксированной задержки.
; В симуляторе, установлена частота кварца 4 Мгц. (1м.ц. = 1мкс.).
;***************************************************************************************************
LIST p=16f84A ; Используется PIC16F84A.
#include <p16f84a.inc>; Подключение INC-файла PIC16F84A.
__CONFIG 03FF1H ; Бит защиты выключен, WDT выключен, XT - генератор.
;----------------------------------------
; "Прописка" регистров общего назначения.
;----------------------------------------
cblock 20h ; Назначение адреса первого регистра блока
; (можно назначить и другой начальный адрес).
Reg_1 ; Регистры 2-байтного
Reg_2 ; счётчика.
endc ; Конец блока.
;------------------------------------
org 0 ; Выполнение программы начинается c 0-го PC-адреса.
;***********************************************************************************************
;====================================
; ПП задержки на 30 401 мкс.
;====================================
; Подготовительная часть.
;------------------------------------
movlw .122 ;
movwf Reg_1 ; Предустановка
movlw .40 ; времязадающих
movwf Reg_2 ; констант.
;------------------------------------
; Исполнительная часть.
;------------------------------------
SNOVA decfsz Reg_1,F ; Стандартный,
goto SNOVA ; 2-байтный,
10
decfsz Reg_2,F ; декрементный
goto SNOVA ; счётчик.
;------------------------------------
goto $ ; "Мертвяк". <- ТОЧКА ОСТАНОВКИ
;**************************************************************************************************
end ; Конец программы.
12