PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) (http://www.picvietnam.com/forum/forumdisplay.php?f=12)
-   -   Nhờ giải thích giúp đoạn code (http://www.picvietnam.com/forum/showthread.php?t=33664)

Hieu98DT 07-08-2014 12:34 AM

Nhờ giải thích giúp đoạn code
 
Chào các bạn !

Mình tìm được đoạn code điều khiển triac, các dòng lệnh thì mình hiểu, nhưng không hiểu lắm cách code chạy thế nào để kích được triac ( không hiểu ở ngắt #int_ext và #int_ccp1 ). Mong các bạn giải đáp giúp mình.

Xin chân thành các ơn !

Sau đây là đoạn code !

#include <16F88.h>
#device adc=10
#fuses HS, NOWDT, NOPUT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT
#use delay(clock=20000000)

#define TRIAC PIN_B7

static int1 ZEROFLAG;
static int1 TRIGGER;

#int_ext
void zero_crossing()
{
set_timer1(0);
ZEROFLAG = 1;
output_low(TRIAC);
}

#int_ccp1
void ccp_equal_to_timer1(){
if(TRIGGER)
{
output_low(TRIAC);
ccp_1 = ccp_1 - 200;
TRIGGER = 0;
}
if(ZEROFLAG)
{
output_high(TRIAC);
ccp_1 = ccp_1 + 200;
TRIGGER = 1;
ZEROFLAG = 0;
}
}

void main(){
static unsigned int16 value;

ccp_1=65535;
ext_int_edge(L_TO_H);
setup_ccp1(CCP_COMPARE_INT);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
enable_interrupts(INT_EXT);
enable_interrupts(INT_CCP1);
enable_interrupts(GLOBAL);

setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(sAN0);
set_adc_channel(0);

for(;;)
{
value = read_adc();
delay_ms(200);
ccp_1 = (int16)value * 62;
}
}


Múi giờ GMT. Hiện tại là 08:18 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam