Принцип такой: компаратор1 сравнивает напряжение с опорным встроенным и как только оно превышает то устанавливаем бит RC2 на выходе
и корректирует свое напряжение на большее значение при его превышении сбрасывает RC2 и снижает напряжение опорное.
Все работает, но только на включение. После включения он не отключается. Может я что - то в программе забыл ил на схеме какие нибудь косяки.
У контроллера все ноги кроме RC2, питания и вход 1 компаратора
Код: Выделить всё
#include P16F684.inc
__CONFIG _CP_OFF & _BOD_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_OFF & _INTRC_OSC_NOCLKOUT
TIMERH EQU 0X20
TIMERL EQU 0X21
VECTOR EQU 0X22
ORG 0x0000
BCF PCLATH,3
BCF PCLATH,4
GOTO Start
ORG 0x0004
RETFIE
Start
MOVLW 0X02
MOVWF CMCON0
BSF STATUS,RP0
MOVLW 0X07
MOVWF TRISA
CLRF TRISC
MOVLW 0XAC
MOVWF VRCON
BCF STATUS,RP0
MOVF CMCON0,W
BCF PIR1, C1IF
CALL DELAY_10
MAINPROG
CALL DELAY_10
BTFSS CMCON0,C1OUT
GOTO OBOGREVON
OBOGREVOFF
BCF PORTC,RC2
BSF STATUS,RP0
MOVLW 0XAC
MOVWF VRCON
BCF STATUS,RP0
MOVLW 0X02
MOVWF CMCON0
MOVF CMCON0,W
BCF PIR1,C1IF
GOTO MAINPROG
OBOGREVON
BSF PORTC,RC2
BSF STATUS,RP0
MOVLW 0XAB
MOVWF VRCON
BCF STATUS,RP0
MOVLW 0X02
MOVWF CMCON0
MOVF CMCON0,W
BCF PIR1,C1IF
GOTO MAINPROG
DELAY_10
CLRF TIMERH
CLRF TIMERL
CIKLTIMER
INCFSZ TIMERL
GOTO CIKLTIMER
INCFSZ TIMERH
GOTO CIKLTIMER
RETURN
END