lim
РЛ/В1
ШИ
КОМПЬЮТЕРЫ И ПРОГРАММЫ
Д. РЫЖОВ,
600027, г.Владимир, до востребования,
тел. (0922) 29-74-94.
ИСПОЛЬЗОВАНИЕ
МИКРОКОНТРОЛЛЕРОВ
СЕРИИ
МС8-48
(Окончание. Начало в N11/97)
памяти:
#ТУМ ЕЬ, #ТУ М ЕН — текущее значение выдержки време-
ни;
#О К Е Ь Т — флаг окончания отсчета выдержки;
#А О Ш 5Т — число переполнений таймера;
#А О Я О Б — число временных интервалов по 0,1 с.
Также необходимо задать начальные условия #ТЯ 4, #ТЯЗ,
#Т112.
Необходимо заметить, что расчет начальных условий имеет
несколько тонкостей. Приведем для полноты картины этот
расчет.
На вход внутреннего счетчика поступают импульсы с часто-
той F :=Fq/480. Например для частоты кварца 7 МГц получаем
Как правило, любой микроконтроллер работает значи-
тельно быстрее технологического оборудования. И поэто-
му очень важный момент в автоматизации — выдержка вре-
мени.
Подпрограмма, реализующая выдержку времени:
Е-7000000/480= 14583,33 Гц.
Тогда период (время приращения таймера на единицу) ра-
вен:
Т = 1/Е = 0,0000685 с.
TYME :
INITTYM:
SEC01:
ESE :
RETURN :
STOP TCNT
;ПП обработки прерывания
;таймера
;Стоп таймера
DIS TCNTI
/Запрет прерывания от
MOVA< @ RO(#TR4)
;таймера
/Перенос из ячеек памяти
MOV R 4,A
/в регистры
MOVA<@R0(#TR2)
;TR4 {R4} — число
MOV R2,A
/загружаемое в таймер
; [#TR3,#TR2](R3,R2) -
MOVA<@RO(#TR)
/конечное значение
/ [TYMEN,TYMEL](R6,R5) -
MOV R3,A
/текущее значение
MOVA<@RO(#TYMEL)
; [TYMEH,TYMEL]=
MOV R5,A
/=[TYMEH,TYMEL]+[01]
MOVA<@R0(#TYMEH)
/
MOV R6,A
/
CALL INKREM
/
MOV AMR5
MOVA>@R0(#TYMEL)
/
MOV A,R6
/
MOVA>@R0(#TYMEH)
/
MOV A,R6
/Сравнение [R6,R5] с
XRL A,R3
;заданной
/выдержкой [R3,R2]
JNZ INITTYM
;
MOV A,R5
;
XRL A,R2
*
JNZ INITTYM
;
MOV A,#01H
MOVA>@RO(#ADRFLT) /Время отсчитано! ADRFLT
JMP RETURN
;
MOVA<@R0(#ADRIST) /ADRIST+1
INC A
;
MOVA>@R0(#ADRIST) ;
XRL A,#06d
/
JZ SEC01
;ADRIST = 6 !
JMP ESE
/ADRIST < 6 !
MOV A,#00H
/
MOVAX2R0(tADRIST) /ADRIST = 0
MOVAORO (#ADRDS)
;ADRDS+1
INC A
/
MOVA>@RO(#ADRDS)
/
MOV A,R4
;
MOV T,A
;
STRT T
/Старт таймера
EN TCNTI
/Разреш. прерыв. по
RET
/переполнению
В раздел определений программы необходимо добавить опи-
сание переменных и макрокоманд:
♦DEFINE MOVA<@RO(x x )
mov r0,xx\ mov a,@r0
♦DEFINE MOVA>@RO(XX)
mov r0,xx\ mov @r0,a
Далее в основной программе необходимо обнулить ячейки
Константу #Т Я 4 (число, записываемое в таймер) необходи-
мо подобрать следующим образом.
Подсчитаем коэффициент К
К = 0,1 с/Т = 1459,854015,
где 0,1 с — минимальная выдержка.
Теперь подсчитаем величину D ELTA для разных значе-
нии В
DELTA = К/В,
где В = 256 - #T R 4 — количество единиц, отсчитываемых тай-
мером.
Величина DELTA показывает, сколько раз за время 0,1 с пе-
реполняется таймер, если в него записывается #TR4. Естествен-
но, значение DELTA должно быть как можно ближе к целому
числу, чтобы обеспечить наибольшую точность.
Исходя из вышеизложенного, наилучший вариант—
В=243, DELTA=6, #T R 4 = 13 = ODh.
Тогда конечное значение #T R 2 и #T R 3 вычисляется по фор-
муле
#T R 2 = NT/((256-#TR4) ■
Т),
где
N T — требуемая выдержка времени в секундах;
Т — период таймера;
#T R 4 — число, записываемое в таймер.
Тогда, чтобы отсчитать две минуты (120 с), необходимо за-
писать:
MOV а, #00Н
MOVA> @ R O (#ADRDS)
MOVA>@RO(#ADRIST)
MOV A,#0DH
MOVA>@RO(#TR4)
MOV A,#2CH
MOVA>@R0(#TR2 ï
MOV ,
0 1 H
MOVA>@RO(#TR3)
MOV A,#00H
MOVA>@R0(#TYMEL)
MOV A,
# 0 0 H
MOVA>@R0(#TYMEH)
S TRT T
EN TCNTI
; переполнению
; Старт таймера
/Разреш. прерыв. по
Теперь осталось в основной программе организовать опрос
ячеек памяти: A D R F L T — для останова счета (это можно еде-
8
Радиолюбитель 12/97
предыдущая страница 9 Радиолюбитель 1997-12 читать онлайн следующая страница 11 Радиолюбитель 1997-12 читать онлайн Домой Выключить/включить текст