реклама на сайте
подробности

 
 
> как сделать в Keil-ском C51 несколько прерываний с одного таймера?
Osti
сообщение Mar 2 2007, 14:54
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 12-07-06
Пользователь №: 18 771



можно ли как-то просто организовать в Keil-ском C51 прерывания по таймеру с одного таймера:
0,5мсек для вызова п/программ с временем выполнения < 0,5 мсек,
50 мсек - для п/п < 50 мсек
1 сек - для п/п < 1 сек
Чтобы обеспечить их паралельное выполнение.

Раньше было что-то такое



Hand_Timer3:

; проверки повторности вхождения, стека,
; сбросы флагов прерываний, watchdog-а,
; проталкивание в стек регистров
lcall Call_RetI ; разрешение новых прерываний

; ввод данных с АЦП, счетных (внешних импульсов) входов в буфер
; управление выходами с точностью 0,5 мсек (например
; фазовое управление тиристорами)
; отсчет задержек в 0,5 мсек

inc c50msec
CJNE c50msec,#100,End_Interrupt ; 50 мсек
mov c50msec,#0

; проверка повторного вхождения на этот уровень
; первичная обработка введенных данных (фильтрация), управление
; медленными устройствами (модуляция ЖКИ, пускатели),
; обработка дребезга кнопок и тому подобное
; вычисления управляющих воздействий регуляторов (ПИ,ПИД)
; отсчет задержек в 50 мсек

inc cSecond
CJNE cSecond,#20,End_Interrupt ; 1 sec
mov cSecond,#0 ;

; проверка повторного вхождения на этот уровень
; отсчет времени, отсчет задержек в секундах

End_Interrupt:

; восстановление регистров из стека

ret

Call_RetI:
RetI ; разрешение повторных прерываний
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 06:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01362 секунд с 7
ELECTRONIX ©2004-2016