Новичок
Регистрация: 20.03.2018
Сообщений: 1
Репутация: 11
|
Помогите пожалуйста, нужно немного изменить программу для этой схемы (код на сайте) http://kazus.ru/shemes/showpage/0/1532/1.html
Вот так будет выглядеть доработанная схема Нужно написать код так, чтобы когда из комнаты вышел последний человек, низкий уровень сигнала на выходе GP0 появлялся не сразу, а спустя 5 секунд. И одновременно когда вышел последний человек, на выходе GP3 появлялось напряжение длительностью 5 сек, которое будет идти на цепь с динамиком. Это будет работать так: Когда люди входят и выходят схема работает так, как работала изначально без всяких звуковых сопровождений, но когда выходит последний человек и в комнате никого не остается, схема начинает пищать 5 секунд и после сразу выключает свет. Вот код: LIST P=12F629, F=INHX8M include "P12F629.inc" __CONFIG _CP_OFF&_CPD_OFF&_BODEN_OFF&_MCLRE_OFF&_PWRTE_ON&_ WDT_OFF&_INTRC_OSC_NOCLKOUT CBLOCK 0X20 K ;Счетчик людей. N ;Счетчик времени на проверку действительности пересечения луча. L_SER H_SER Q_SER ;Переменные для выдержки паузы между сериями вспышек. L_SER_SET H_SER_SET Q_SER_SET L_OFF H_OFF ;Переменные для выдержки паузы между отдельными вспышками. L_OFF_SET H_OFF_SET L_ON H_ON ;Переменные для выдержки паузы на длительность вспышки. L_ON_SET H_ON_SET K_LD ;Для хранения кол-ва вошедших людей в ПП FLASH_LD. K_ON ;Флаг "светодиод горит(1)/не горит(0)". ENDC ORG 0X2100 DE "Accoun- tant. Счетчик-выключатель. Юшин ВН 8-916 4534694 " ORG 0X3FF RETLW 0XB0 ORG 0x0000 GOTO INIT INIT BCF INTCON,7 BSF STATUS , RP0 CALL 0X3FF ;Настройка частоты внутр. такт. ген. MOVWF OSCCAL CLRF T1CON ;Вкл. внутр. такт. генератор. BCF STATUS , RP0 CLRF GPIO MOVLW 0x07 ;Компаратор выкл. MOVWF CMCON BSF STATUS , RP0 MOVLW 0x06 ;GP1 & GP2 на вход. MOVWF TRISIO BCF STATUS , RP0 BCF GPIO , 00 BCF GPIO , 03 BCF GPIO , 04 BCF GPIO , 05 MOVLW .255 MOVWF L_SER_SET MOVWF L_SER MOVLW .255 MOVWF H_SER_SET MOVWF H_SER MOVLW .4 MOVWF Q_SER_SET MOVWF Q_SER MOVLW .255 MOVWF L_OFF_SET MOVWF L_OFF MOVLW .100 MOVWF H_OFF_SET MOVWF H_OFF MOVLW .255 MOVWF L_ON_SET MOVWF L_ON MOVLW .10 MOVWF H_ON_SET MOVWF H_ON START CLRF K CLRF K_LD CLRF K_ON LABEL_1 CLRF N CALL FLASH_LD MOVLW 0X00 SUBWF K,0 BNZ LABEL_2 BCF GPIO,0 ;Реле выкл. BCF GPIO,4 ;LD выкл. LABEL_3 BTFSC GPIO,1 ;Проверка 1-го луча. GOTO LABEL_1 INCFSZ N GOTO LABEL_3 LABEL_4 BTFSS GPIO,1 ;Ожидание размыкания 1-го луча. GOTO LABEL_4 LABEL_5 BTFSC GPIO,2 ;Проверка 2-го луча. GOTO LABEL_1 INCFSZ N GOTO LABEL_5 LABEL_6 BTFSS GPIO,2 ;Ожидание размыкания 2-го луча. GOTO LABEL_6 LABEL_7 BTFSS GPIO,1 GOTO LABEL_3 INCFSZ N GOTO LABEL_7 INCF K BSF GPIO,0 ;Реле вкл. GOTO LABEL_1 LABEL_2 BTFSC GPIO,2 GOTO LABEL_3 INCFSZ N GOTO LABEL_2 LABEL_8 BTFSS GPIO,2 ;Ожидание размыкания 2-го луча. GOTO LABEL_8 LABEL_9 BTFSC GPIO,1 ;Ожидание размыкания 1-го луча. GOTO LABEL_1 INCFSZ N GOTO LABEL_9 LABEL_10 BTFSS GPIO,1 GOTO LABEL_10 BTFSS GPIO,2 GOTO LABEL_2 DECF K ;Уменьшить кол-во людей. GOTO LABEL_1 ;ПП мигания светодиода. Кол-во миганий=кол-ву вошедших. FLASH_LD MOVFW K_LD ;Закончилось ли кол-во людей? SUBLW .0 BNZ F_label_1 DECFSZ L_SER RETURN MOVFW L_SER_SET MOVWF L_SER DECFSZ H_SER RETURN MOVFW H_SER_SET MOVWF H_SER DECFSZ Q_SER RETURN MOVFW Q_SER_SET MOVWF Q_SER MOVFW K MOVWF K_LD F_label_1 MOVFW K_ON ;Светодиод включен? (1-да, 0-нет). SUBLW .1 BZ F_Label_2 DECFSZ L_OFF RETURN MOVFW L_OFF_SET MOVWF L_OFF DECFSZ H_OFF RETURN MOVFW H_OFF_SET MOVWF H_OFF BSF GPIO,4 MOVLW 1 MOVWF K_ON F_Label_2 DECFSZ L_ON RETURN MOVFW L_ON_SET MOVWF L_ON DECFSZ H_ON RETURN MOVFW H_ON_SET MOVWF H_ON CLRF K_ON BCF GPIO,4 DECF K_LD RETURN END |
||
Оценка
|
Эксперт
Регистрация: 08.11.2009
Сообщений: 2,310
Репутация: 641
|
5000p.
Последний раз редактировалось DmitriyVDN; 20.03.2018 в 19:00.
|
||
Оценка
|
Обратная связь РадиоЛоцман Вверх |