Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Синхронизация работы программ внутренним сигналом




 

Рассмотрим синхронизацию с помощью таймера с номером 0. В этом случае в блоке инициализации и при подготовке к следующему прерыванию необходимо записывать в таймер определённые коды.

Пусть fТ = 12 МГц, а fД = 1/h = 100 Гц. Коды для записи в таймер выберем так, чтобы первое прерывание после инициализации произошло через 256 мкс, а интервал дискретизации h = 1/fД = 10 мс.

Необходимые ресурсы:

1 – регистр масок прерывания IE

 

(IE)=82h

2 – регистр режима таймера TMOD

 

 
 
16-ти разрядный таймер

 

 


(TMOD)=01h

 

3 – регистр управления таймером TCON

 

 

4 – собственно таймер

 

 

 

Логика работы таймера 1 в режиме 0

 

Какой код мы должны записать в счетчики TL0 и TH0, чтобы первое прерывание (переполнение таймера 0) произошло через 256 мкс.?

Очевидно, xx=(TL0)=00h, yy=(TH0)=0FFh.

Какой код мы должны записать в счетчики TL0 и TH0, чтобы последующие прерывания (переполнения таймера 0) происходили через h=10мс=10 000 мкс?

Очевидно, 10 00010 = 271016.

10000h – 2710h = 0D8F0h = 55 53610. xx =(TL0)=0F0h, yy=(TH0)=0D8h.

Однако, это только приблизительная оценка. Для ее уточнения необходимо подсчитать, сколько импульсов поступит на вход счетчика к моменту записи в него младшего байта (пусть 12 мкс – зависит от программы) и учесть время, потраченное на переход от запроса прерывания к обработке прерывания (пусть 9 мкс). 0D8F0h + 2110 = 0D8F0h + 15h = 0D905h.

Таким образом, xx =(TL0)=05h, yy=(TH0)=0D9h.

CSEG AT     ;Абсолютный сегмент кода;по адресу 0
  ljmp Start_Up   ;Первая команда по адресу 0.;Переход на блок;инициализации
  org 000Bh   ;Переместить локальный;счетчик на адрес 000Bh. Это;вектор прерывания от таймера 0.
  clr EA   ;запрет всех прерываний
  ljmp Main   ;Переход на подпрограмму;обслуживания этого;прерывания
ISEG AT 60h   ;Абсолютный сегмент с;косвенной адресацией по;адресу 0060h
Stack: DS 10h   ;Резервируем 16 байтов под;стек
My_Prog Segment Code   ;Объявляем перемещаемый;сегмент с именем My_Prog;для кода нашей программы
  Rseg My_Prog   ;Активизируем этот сегмент
  org 30h   ;Переместить локальный;счетчик на адрес 0030h.
Start_Up:  
;Начало блока инициализации
  mov SP, #Stack-1 ;Инициализировать указатель;стека
;запись кода в порты микроконтроллера
;установка режимов работы периферийных устройств
;запись кодов в регистры спецфункций
;чтение исходных данных из ПЗУ
;запись начальных значений в рабочие ячейки
;т.е. конфигурирование микроконтроллера для решения поставленной задачи
  mov TMOD, #01h ;Включить счетчик 0 в;режиме 16-ти разрядного;таймера. Уверены в том, что;счетчик 1 не используется
  mov TH0, #0FFh ;Запись кодов начальной
  mov TL0, #00h ;задержки в таймер 0
  mov IE #82h ;Разрешить прерывания;от таймера 0
  setb TR0   ;Запуск таймера 0
Back_Gr:  
;конец блока инициализации, начало фоновой задачи
;выполнение фоновой задачи
  jmp Back_Gr   ;Бесконечный цикл
; - - -Срочная задача (Подпрограмма обслуживания прерывания) - - - - - - - - - -
Main: clr EA   ;запретить прерывания
  mov TH0, #0D9h ;ст. байт доп. кода периода;цикла
  mov TL0, #05h ;мл. байт доп. кода периода;цикла
  push PSW   ;Сохранение регистров
  push Acc   ;(только используемых п/п)
; Команды, необходимые для обслуживания прерывания
  pop Acc   ;Восстановление
  pop PSW   ;регистров
  setb EA   ;разрешить прерывания
  reti     ;Возврат из прерывания
; - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  END     ;Директива завершения;трансляции

 

 




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 390; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.