; модуль сброса ЦУМ ; GP1 - ИНДИКАТОР РАБОТЫ МИГАЕТ С ЧАСТОТОЙ В 1 Гц ; GP4 - контроль изменения сигнала на одном из портов ЦУМа - МТЧ ; GP5 - формирует сигнал сброса длительностью 0,5 секунд list p=12f629 #include __CONFIG 00004H ; Бит защиты включен ; Сброс по снижению напр.питания ЗАПРЕЩЕН ; Используется внутренний сброс, вывод ; RA5/MCLR работает как вход ; Таймер включения питания РАБОТАЕТ ; WDT (СОБАКА) выключен ; Работает внутр. генератор 4 Мгц ;--------------------------------------------------------------- ;---------------------------------------------------------- ; регистры общего назначения cblock 20h FLAG TEMP TEMP1 TEMP2 TEMP3 TEMP4 endc ;начало исполняемого кода ORG 00h GOTO START ; начало программы ORG 010h INIT BSF STATUS, RP0 ; банк 1 CALL 3FFh ; калибруем внутр. генератор MOVFW OSCCAL MOVLW B'00011101' ; порты 0,2,3,4 - на вход; 1,5 - на выход MOVWF TRISIO CLRF VRCON ; ВЫКЛЮЧИТЬ И.О.Н. BCF STATUS, RP0 ; банк 0 MOVLW B'00000111' MOVWF CMCON ; выключить компараторы clrf GPIO ; Сбросим порт bsf GPIO,5 ; "1" на "5" порт return ; задержка на 30 мин _30_ MOVLW .200 ;cчетчик цикла долей секунды MOVWF TEMP MOVLW .100 ; счетчик цикла долей секунды MOVWF TEMP1 MOVLW .17 ; счетчик цикла долей секунды MOVWF TEMP2 MOVLW .60 ; счетчик цикла секунд MOVWF TEMP3 MOVLW .30 ; счетчик цикла минут MOVWF TEMP4 Q DECFSZ TEMP GOTO Q MOVLW .200 MOVWF TEMP DECFSZ TEMP1 GOTO Q MOVLW .100 MOVWF TEMP1 DECFSZ TEMP2 GOTO Q MOVLW .17 MOVWF TEMP2 ;************** индикация **************** BTFSS GPIO,1 ; ЕСЛИ ПОРТ В "0" GOTO $+2 GOTO $+3 BSF GPIO,1 ; УСТ. В "1" GOTO $+2 BCF GPIO,1 ; УСТ. В "0" ;***************************************** DECFSZ TEMP3 GOTO Q MOVLW .60 MOVWF TEMP3 DECFSZ TEMP4 GOTO Q RETURN analiz P1 MOVLW .200 ;cчетчик цикла долей секунды MOVWF TEMP MOVLW .200 ; счетчик цикла долей секунды MOVWF TEMP1 MOVLW .200 ; счетчик цикла долей секунды MOVWF TEMP2 MOVLW .15 ; счетчик цикла секунд MOVWF TEMP3 E BTFSS GPIO,4 ; ЕСЛИ ПОРТ В "0" GOTO P ; ПОРТ В СОСТОЯНИИ "1" BSF GPIO,1 ; УСТ. В "1" DECFSZ TEMP GOTO E MOVLW .200 MOVWF TEMP DECFSZ TEMP1 GOTO E MOVLW .200 MOVWF TEMP1 DECFSZ TEMP2 GOTO E MOVLW .200 MOVWF TEMP2 DECFSZ TEMP3 GOTO E call RESET ; таймаут истек P MOVLW .200 ;cчетчик цикла долей секунды MOVWF TEMP MOVLW .200 ; счетчик цикла долей секунды MOVWF TEMP1 MOVLW .200 ; счетчик цикла долей секунды MOVWF TEMP2 MOVLW .15 ; счетчик цикла секунд MOVWF TEMP3 E1 BTFSC GPIO,4 ; ЕСЛИ ПОРТ В "1" GOTO P1 ; ПОРТ В СОСТОЯНИИ "0" BCF GPIO,1 ; УСТ. В "0" DECFSZ TEMP GOTO E1 MOVLW .200 MOVWF TEMP DECFSZ TEMP1 GOTO E1 MOVLW .200 MOVWF TEMP1 DECFSZ TEMP2 GOTO E1 MOVLW .200 MOVWF TEMP2 DECFSZ TEMP3 GOTO E1 call RESET ; таймаут истек RETURN RESET MOVLW .200 ;cчетчик цикла долей секунды MOVWF TEMP MOVLW .200 ; счетчик цикла долей секунды MOVWF TEMP1 MOVLW .10 ; счетчик цикла долей секунды MOVWF TEMP2 BCF GPIO,5 ; УСТ. В "0" A DECFSZ TEMP GOTO A MOVLW .200 MOVWF TEMP DECFSZ TEMP1 GOTO A MOVLW .200 MOVWF TEMP1 DECFSZ TEMP2 GOTO A BSF GPIO,1 ; УСТ. В "1" RETURN START call INIT call _30_ call analiz GOTO $ END