Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
;################################################################################
; ВЕРХНЯЯ "ОБСЛУГА" 1-й СТРАНИЦЫ. ###############################################
;################################################################################
; Надпись "ЗАЩИТА ВЫКЛЮЧЕНА" (1-й блок 1-й страницы)
1
;-----------------------------------
TEXT_1 addwf PC,F ; Приращение PC на величину содержимого W.
dt 0xA4,0x41,0xE2,0xA5,0x54,0x41,0x20,0x42
dt 0xAE,0x4B,0xA7,0xB0,0xAB,0x45,0x48,0x41
....................................
....................................
;================================================================================
; ПП "плавающей" задержки на основе анализа состояния флага занятости BF
; (вариант для 4-разрядного интерфейса).
;================================================================================
ENTER_BF ........................
return ; Возврат по стеку.
....................................
;================================================================================
....................................
....................................
;-----------------------------------
; Надпись "ЗАЩИТА ВЫКЛ.t= " (3-й блок 1-й страницы)
;-----------------------------------
TEXT_1_1 addwf PC,F ; Приращение PC на величину содержимого W.
dt 0xA4,0x41,0xE2,0xA5,0x54,0x41,0x20,0x42
dt 0xAE,0x4B,0xA7,0x2E,0x74,0x3D,0x20,0x20
;################################################################################
; КОНЕЦ ВЕРХНЕЙ "ОБСЛУГИ" 1-й СТРАНИЦЫ. #########################################
;################################################################################
;********************************************************************************
; НАЧАЛО ИСПОЛНЕНИЯ ПРОГРАММЫ.
;********************************************************************************
....................................
....................................
INKEY ........................
....................................
;VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
; Сценарий "ЗАЩИТА ВЫКЛЮЧЕНА". VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
;VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
....................................
....................................
;--------------------------------------------------------------------------------
; Опрос флага наличия/отсутствия термодатчика.
;--------------------------------------------------------------------------------
btfss Flag,1 ; Флаг наличия/отсутствия термодатчика поднят
; или нет ?
goto RABOTA_D ; Если опущен, то работа с задействованием
; датчика.
; Если поднят, то программа исполняется далее
; (работа без задействования датчика).
;================================================================================
; Вывод на индикацию, в 1-ю строку, фиксированной надписи "ЗАЩИТА ВЫКЛЮЧЕНА".
;================================================================================
movlw b'10000000' ; Установка курсора в крайнее
call ENTER_BF ; левое знакоместо 1-й строки.
;----> Возврат по стеку из ПП ENTER_BF.
movlw .16 ; Запись числа .16 (количества выводимых в
movwf Count ; строку символов) в регистр Count.
movf Count,W ; Count -> W.
sublw .16 ; .16 - Count = ... (результат -> W).
call TEXT_1 ; Условный переход в ПП TEXT_1.
;----> Возврат по стеку из ПП TEXT_1.
bsf PortC,RS ; Установка на линии RS "1"
; (режим записи данных).
call ENTER_BF ; "Плавающая" задержка со стробом под вывод
; данных на индикацию.
;----> Возврат по стеку из ПП ENTER_BF.
decfsz Count,F ; Подготовка к выводу на индикацию
; следующего символа таблицы.
2
goto $-6 ; Если результат декремента не=0, то
; вывод на индикацию следующего символа.
goto OBHOD_D ; Если результат декремента =0,
; то обход работы с датчиком.
;================================================================================
; Вывод на индикацию, в 1-ю строку, фиксированной надписи "ЗАЩИТА ВЫКЛ.t= ".
;================================================================================
RABOTA_D movlw high TEXT_1_1; Выбор PCH 1-й команды ПП TEXT_1_1.
movwf PCLATH ; (находится в 3-м блоке 1-й страницы).
;||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
; Сценарий "ЗАЩИТА ВКЛЮЧЕНА". |||||||||||||||||||||||||||||||||||||||||||||||||||
;||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
....................................
....................................
;################################################################################
; НИЖНЯЯ "ОБСЛУГА" 1-й СТРАНИЦЫ. ################################################
;################################################################################
....................................
....................................
3
;================================================================================
; Вывод на индикацию числовых значений верхнего Т-порога или текущих значений
; температуры.
;================================================================================
IND_TERMO .......................
....................................
return ; Возврат по стеку.
;================================================================================
....................................
....................................
;################################################################################
; КОНЕЦ НИЖНЕЙ "ОБСЛУГИ" 1-й СТРАНИЦЫ. ##########################################
;################################################################################
org 801h ; Заполнение 2-й страницы памяти программ
; начинается с 2050-й позиции (см. окно ROM).
;22222222222222222222222222222222222222222222222222222222222222222222222222222222
; 2-я СТРАНИЦА ПАМЯТИ ПРОГРАММ.
;22222222222222222222222222222222222222222222222222222222222222222222222222222222
....................................
....................................
;DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
; ПП РАБОТЫ С ТЕРМОДАТЧИКОМ. DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
;DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
; "Администраторская" группа команд.
;--------------------------------------------------------------------------------
TERMO ........................
....................................
;################################################################################
; НИЖНЯЯ "ОБСЛУГА" 2-й СТРАНИЦЫ.
;################################################################################
....................................
....................................
;================================================================================
; 2/10 преобразование (1х2) с перекодировкой результата.
;================================================================================
BIN2_10_T ........................
....................................
return ; Возврат по стеку.
;================================================================================
....................................
....................................
;################################################################################
; КОНЕЦ НИЖНЕЙ "ОБСЛУГИ" 2-й СТРАНИЦЫ. ##########################################
;################################################################################
end ; Конец программы.
4
Вопрос: "В чем актуальность заявленного"?
Ответ: во всяческих "жизненных обстоятельствах", которые могут привести к
"несанкционированному" росту текущей температуры даже после срабатывания
термозащиты.
В идеале, после срабатывания термозащиты, из-за наличия соответствующего "ветерка,
навеваемого пропеллером", текущая температура должна снижаться.
И если имеет место быть исправность "того-сего", то это и должно происходить, так
как нагрузка БП отключается ("печка" выключена).
А если коммутаторный транзистор не отключил эту нагрузку или отключил ее не
полностью?
Например, в случае "дачи им дуба" (частичного или полного).
В этом случае, даже после срабатывания термозащиты, вполне возможен рост текущей
температуры.
Или другой случай.
Например "дуба дало" нечто, входящее в состав БП, вследствие чего, регулирующий
транзистор БП начал сильно греться.
И т.д., и т.п. "Вариаций" предостаточно.
Если после срабатывания термозащиты, происходит не снижение, а рост температуры
или вентиллятор не в состоянии привести ее к тому значению, которое ниже нижнего
Т-порога, то ждать авторазблокировки бесполезно.
Ее не будет.
Мало того, может не быть не только ее, но и другого
(намек на "некролог в честь того-сего").
И это наиболее вероятно тогда, когда пользователь не контролирует то, что происходит.
Например, человек банально пошел в туалет.
А ведь после возврата из туалета, можно сильно огорчиться/опечалиться.
Кто будет "козлом отпущения"?
Совершенно верно. Конструктор. И "крыть будет нечем".
Это сильно стимулирует мыслительную деятельность и на полном серьезе, заставляет
планировать свершение всяческих подвигов.
Подождите смеяться. Это совсем не "хи-хи".
Если как следует разобраться, то вся наша жизнь состоит из череды
разнообразнейших подвигов той или иной степени героизма.
А если это так, то в пределах заранее "просчитываемого", вполне разумным будет
подчинить эту жизненную данность какой-то системе (полностью осмысленной воле).
Например, Мюнхаузену (такие личности за просто так не возникают. Они возникают по
большому поводу/потребности/востребованности) это удалось, и поэтому он бессмертен.
И совсем он не дурак, а наоборот.
Так как его догоняют. И долго будут догонять. Если вообще догонят.
Чтобы свершить подвиг, мало его запланировать.
Нужно знать, как именно его свершить. В деталях (самое хлопотное).
Только тогда он будет иметь место быть.
Таковы основные положения теории свершения подвигов.
Они бывают всякие: мелкие, средние, крупные.
В данном случае, речь идет о мелком (вернее, микроскопическом) подвиге.
....................................
....................................
;################################################################################
; ВЕРХНЯЯ "ОБСЛУГА" 1-й СТРАНИЦЫ. ###############################################
;################################################################################
....................................
....................................
;================================================================================
; Аварийная "пищалка" (мультивибратор, формирующий "пачку" импульсов).
;================================================================================
MULTI movlw .250 ; "Пищать" будем
movwf Reg_2 ; 250 периодов.
7
decf Reg_2,F ; Если на выходе защелки RC4 уровень 0,
; то Reg_2 - 1 = ... и программа
; исполняется далее.
btfsc Status,Z ; Каков результат декремента ?
return ; Если =0, то "пачка" импульсов сформирована
; и выход из "пищалки".
bsf PortC,4 ; Если не=0, то установка на выходе защелки
; RC4 уровня 1.
goto $-.10 ; Переход на формирование следующего периода.
;================================================================================
....................................
....................................
;################################################################################
; КОНЕЦ ВЕРХНЕЙ "ОБСЛУГИ" 1-й СТРАНИЦЫ. #########################################
;################################################################################
;********************************************************************************
; НАЧАЛО ИСПОЛНЕНИЯ ПРОГРАММЫ.
;********************************************************************************
; Подготовительные операции.
;================================================================================
START ........................
....................................
;--------------------------------------------------------------------------------
; Задание величины интервала времени контроля за температурой, осуществляемого
; после срабатывания термозащиты.
;--------------------------------------------------------------------------------
movlw .50 ; Примерно
movwf Count1 ; 5 минут.
....................................
....................................
....................................
....................................
;22222222222222222222222222222222222222222222222222222222222222222222222222222222
; 2-я СТРАНИЦА ПАМЯТИ ПРОГРАММ.
;################################################################################
; ВЕРХНЯЯ "ОБСЛУГА" 2-й СТРАНИЦЫ. ###############################################
;################################################################################
....................................
....................................
;-----------------------------------
; Надпись " Ттекущ.>или=Тн."
;-----------------------------------
TEXT_33 addwf PC,F ; -----"-----
dt 0x20,0x54,0xBF,0x65,0xBA,0x79,0xE6,0x2E
dt 0x3E,0xB8,0xBB,0xB8,0x3D,0x54,0xBD,0x2E
;-----------------------------------
; Надпись " ВЫКЛЮЧИТЕ БП!!!"
;-----------------------------------
TEXT_34 addwf PC,F ; -----"-----
dt 0x20,0x42,0xAE,0x4B,0xA7,0xB0,0xAB,0xA5
dt 0x54,0x45,0x20,0xA0,0xA8,0x21,0x21,0x21
;################################################################################
; КОНЕЦ ВЕРХНЕЙ "ОБСЛУГИ" 2-й СТРАНИЦЫ. #########################################
;################################################################################
;DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
; ПП РАБОТЫ С ТЕРМОДАТЧИКОМ. DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
;DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
TERMO ........................
....................................
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
; Исполняется в случае превышения верхнего Т-порога.
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8
PEREGREV bcf PortA,2 ; Если верхний Т-порог превышен,
; то ТРАНЗИСТОР ЗАКРЫВАЕТСЯ.
movlw .255 ; Перевод вентиллятора
movwf CCPR1L ; на максимальные обороты.
;------------------------------------
; Определение начала цикла анализа.
;------------------------------------
movlw .50 ;
subwf Count1,W ; Count1 - .50 = ...
btfsc Status,Z ; Результат =0 или не=0
; (это начало цикла или нет?) ?
goto NORMA ; Если =0 (начало цикла), то обход сравнения
; Temp_LSB и Temp_LSB1.
; В остальных случаях, сравнение.
;------------------------------------
; Сравнение Temp_LSB и Temp_LSB1.
;------------------------------------
movf Temp_LSB,W ;
subwf Temp_LSB1,W ; Temp_LSB1 - Temp_LSB = ...
btfsc Status,C ; Результат "+/=0" или "-" ?
goto NORMA ; Если "+/=0" (t не растет), то обход проверки
; на величину роста температуры.
; Если "-" (t растет), то эта проверка
; производится.
;--------------------------------------------
; Проверка на величину роста температуры.
;--------------------------------------------
movwf Karaul ; Temp_LSB1 - Temp_LSB -> Karaul
movlw .254 ;
subwf Karaul,W ; Karaul - .254 = ...
btfsc Status,C ; Результат "+/=0" или "-" ?
goto NORMA ; Если "+/=0" (Tтекущ. возросла менее
; чем на 2 градуса или на 2 градуса).
; Если "-" (Tтекущ. возросла до 3-х градусов
; и выше), то исполнение аварийного сценария.
;================================================================================
; Аварийный сценарий.
;================================================================================
call AVARIJA ; Вывод на индикацию аварийных надписей.
;----> Возврат по стеку из ПП AVARIJA.
;-----------------------------------------------------------------
; Формирование звукового сигнала аварии.
;-----------------------------------------------------------------
call PAUSE_UI_1 ; Задержка.
;----> Возврат по стеку из ПП PAUSE_UI_1.
;################################################################################
; НИЖНЯЯ "ОБСЛУГА" 2-й СТРАНИЦЫ.
;################################################################################
....................................
....................................
;================================================================================
; Задержка, определяющая скорость смены показаний и "добывание" результатов
; измерения.
;================================================================================
10
PAUSE_UI_1 movlw .250 ;
movwf Reg_2 ;
movlw .80 ;
movwf Reg_3 ;
12
Если текущая температура не будет превышать "эталон", то происходит "транзит №2"
(goto NORMA), а вот если она будет его превышать, то милости просим в проверку на
величину роста температуры.
Если эта величина менее 3-х градусов (считается допустимым), то происходит "транзит
№3" (то же самое goto NORMA).
Если эта величина равна или более 3-х градусов (это не допустимо), то
отрабатывается аварийный сценарий ("закончен бал, погасли свечи").
Предположим, что осуществлен "транзит №2" или "транзит №3".
После этого, во 2-й "врезке", создание "эталона" будет обойдено (так как в Count1
"лежит" число меньшее чем .50), счетчик внутренних циклов будет декрементирован, и
в случае отсутствия нулевого результата, произойдет переход на начало следующего
внутреннего цикла.
И эти циклы будут отрабатываться
- либо до момента превышения значения "эталона" на 3 градуса или выше,
- либо до момента окончания отработки цикла таймера (если автоматической
разблокировки не происходит),
- либо до автоматической разблокировки.
В первых двух случаях, отрабатывается аварийный сценарий.
В его начале, на индикацию выводится надпись Ттекущ.>или=Тн. / ВЫКЛЮЧИТЕ БП!!!
(см. "вышележащую" картинку).
Далее, отрабатывается "пищало" (генерация "нелимитированного количества пачек", с
паузами между ними), "закольцованное" на само себя ("мертвяк").
Во внутреннем цикле этой "мертвой закольцовки", формируется управляющий сигнал
выключения БП (bsf PortC,1).
О проверке на величину роста температуры.
;--------------------------------------------
; Проверка на величину роста температуры.
;--------------------------------------------
movwf Karaul ; Temp_LSB1 - Temp_LSB -> Karaul
movlw .254 ;
subwf Karaul,W ; Karaul - .254 = ...
btfsc Status,C ; Результат "+/=0" или "-" ?
goto NORMA ; Если "+/=0" (Tтекущ. возросла менее
; чем на 2 градуса или на 2 градуса).
; Если "-" (Tтекущ. возросла до 3-х градусов
; и выше), то исполнение аварийного сценария.
13
5. Феном/паяльником (или еще чем-то) нагреваете термодатчик. Динамику нагрева
можно отследить визуально (см. пункт 4).
6. После превышения верхнего Т-порога, сработает термозащита 1-го уровня,
транзистор "вырубится", вентиллятор перейдет на полные обороты и начнется
отработка соответствующего сценария (повторяться не буду).
7. Если нагрев продолжить далее, то сработает термозащита 2-го уровня (динамику
изменения температуры также можно отследить), контрольный светодиод
"загорится", на индикацию будет выведена надпись
Ттекущ.>или=Тн. / ВЫКЛЮЧИТЕ БП!!!
и "железяка" будет постоянно и вредно "пищать".
8. Чтобы прекратить это "безобразие", нужно выключить/включить питание ПИКа.
По-другому оно не прекращается. Так как "мертвяк".
Но могу и "сваять прекращалку". Это как скажете.
9. Для того чтобы проконтролировать другой вариант срабатывания термозащиты
2-го уровня, нужно, в течение времени отработки сценария термозащиты 1-го
уровня, "держать" температуру, в данном случае, в диапазоне от 40 до 50
градусов. Через 5 минут такого "держания", "железяка" автоматически "уйдет в
отказ" (см. пункт 7).
Антракт.
Милости просим в буфет.
А я пока "артистам в тык дам". Профилактически. Чтобы не расхолаживались.
14