И снова, доброго времени суток форумчанам!
Опять накопал себе проблемку на "ровном месте"...
Имеем:
- TRISC 00001011
- T1CON 0x011
- CCP1CON 0x08
кратко: при совпадении выставляется "1" на выходе ССР (RC2) - это есть.
А теперь сама проблема: как его сбросить в "0"?
В "Протеусе" все "работает", эмулируется...
хватает даже :
......................................
MOVWF CCPR1L ; занесём
MOVWF CCPR1H ; начальный счёт для сравнения
......................................
А вот в железе торчит "1".
По ДШ - CLR CPP1CON - не устраивает,
Тупо BCF PORTC,2 - не отрабатывает,
вот часть программы, где при переходе сетевого напряжения через "0", должен выставиться "0" на RC2:
......................................
INT_RB0 MOVWF T_W ; используем для привязки перехода сетевого напряжения через "0"
MOVFF STATUS,T_S ; и по Т1 выставим импульс для открывания тиристоров
MOVFF FSR,T_FSR ; сначала сохраним контекст
MOVLF 0xE0,TMR0 ; задержка Т0, дабы не нервничал, пока тут
CLRF TMR1L ;
CLRF TMR1H ;
MOVFF I_ZAD_L,CCPR1L ; занесём
MOVFF I_ZAD_H,CCPR1H ; начальный счёт для (макрокоманда регистр - › регистр) сравнения
;
BTFSC CCP1CON,1 ; если отключен в программе - не включаем
GOTO $+4
CLRF CCP1CON ; ну вот по даташит - не устраивает, при нажатой кнопке импульс формируется
MOVLF 0X08,CCP1CON ; включить ССР1 генератора
; MOVLF 0x87,FSR ; пробовал через ТРИС
; BCF INDF,2 ;
; MOVLF 0xE0,PORTC ;
; BCF T_PORTC,2 ; почему то в железе зевает сброс ?
; MOVFF T_PORTC,PORTC ;
; BCF PORTC,2 ;
...............................................
"Отключенные" строки - мои терзания, так и не остановился на окончательном варианте, опять же - "Протеус" сбрасывает...
В другом месте:
..............................................
----------------------------- кнопка нажата --------------------------------
KEY_ON CLRF TMR1H ; импульс запуска выкл.
MOVLF 0X0A,CCP1CON ; выключить ССР1, флаг прерывания нужен
MOVLF 0x60,I_ZAD_H ; в регистры таймера (макрокоманда константа в регистр)
MOVLF 0x00,I_ZAD_L ; для минимального тока
BTFSS SKAN_KEY,1 ; жду отпускания кнопки
GOTO $-1 ; опрос клавиатуры по прерыванию Т0
...............................................
"0" выставляется!, к пику вопросов как бы нет. Ну да: 16F873A
Вроде, всё расписал...
В чём наказался?