
Originally Posted by
aratti
You need to post the schematic and the code, if you want some real help.
Cheers
Al.
Hi aratti,
This is the test code that i have used always for many projects. The microcontroller is PIC16F876A. PORTB.0 is Zero Cross Detect Input. PORTB.7 is fire triac output.
Code:
INCLUDE "DT_INTS-14.bas" ' Base Interrupt System
TRIAC VAR PORTB.7
TIMEX VAR WORD
TIMEX_L VAR TIMEX.LOWBYTE
TIMEX_H VAR TIMEX.HIGHBYTE
OUTPUT TRIAC
INPUT PORTB.0
TRISC = 255
TRISA = %111111
ADCON1 = 7
T1CON = 0
CCP1CON = %00001010
TMR1L = 0
TMR1H = 0
OPTION_REG = %11000000
FLAG = 0
TIMEX = 9000
CCPR1L = TIMEX.LOWBYTE
CCPR1H = TIMEX.HIGHBYTE
LOW TRIAC
PAUSE 100
ASM
INT_LIST macro ; IntSource, Label, Type, ResetFlag?
INT_Handler INT_INT , INT_GEL_1, ASM, yes
INT_Handler CCP1_INT , INT_GEL_2, ASM, yes
;INT_Handler TMR0_INT , TMR0INT, ASM, yes
endm
INT_CREATE
ENDASM
@ INT_ENABLE INT_INT
@ INT_ENABLE CCP1_INT
MAIN :
TIMEX = TIMEX + 1
IF TIMEX >= 9600 THEN
FLAG = 0
low TRIAC
ELSE
FLAG = 1
ENDIF
PAUSE 1
GOTO MAIN
ASM
INT_GEL_1
BCF _TRIAC
BSF T1CON,0
INT_RETURN
ENDASM
ASM
INT_GEL_2
BTFSC _FLAG , 0
BSF _TRIAC
BCF T1CON , 0
CLRF TMR1H
CLRF TMR1L
MOVF _TIMEX_H , W
MOVWF CCPR1H
MOVF _TIMEX_L , W
MOVWF CCPR1L
INT_RETURN
ENDASM
END
Bookmarks