Ðề tài: nhờ xe, giúp e
View Single Post
Old 11-11-2010, 10:42 PM   #15
robotpic
Đệ tử 4 túi
 
Tham gia ngày: Jun 2010
Bài gửi: 79
:
uh nó chạy rồi. nhưng vẫn không tốt. mình đang tìm hiểu, cái chính là mình xóa cờ ngắt sau mõi lần gọi chương trình ngắt. nhưng 3 ngắt mình thấy chu kỳ khác nhau.

vì sao ngăt ext2 lại số vong quay nhiều hơn.
#include <18f4331.h>
#INCLUDE <def_4331.h>

#FUSES HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT,NOPUT,NOCPD,NO DEBUG,NOFCMEN,NOCPB,STVREN,NOPWMPIN,HPOL_LOW
#FUSES MCLR,NOIESO,NOWRTC,NOWRTB,NOWRTD,NOEBTR,NOWRT,NOEB TRB,EXCLKD0,T1STANDARD,NOWINEN

#use delay(clock=20000000)

#use fast_io(a)
#use fast_io(d)
#use fast_io(c)
#use fast_io(e)


#DEFINE GIAI_MA1 RE0
#DEFINE GIAI_MA2 RE1
#DEFINE GIAI_MA3 RE2

#DEFINE NUT_AN RA0
#DEFINE CT_HT RA4

long XUNG,XUNG1,XUNG2;
int1 nut1,nut2,nut3,nut4,nut5,nut6,nut7,nut8;
int1 CT_HT1,CT_HT2,CT_HT3,CT_HT4,CT_HT5,CT_HT6,CT_HT7,C T_HT8;
#INT_EXT //RC3
VOID DEM_NGAT()
{
XUNG++;
INT0IF=0;
return ;
}

#INT_EXT1 //RC4
VOID DEM_NGAT_1()
{

XUNG1++;
INT1IF=0;
return ;
}

#INT_EXT2 //RC5

VOID DEM_NGAT_2()
{
XUNG2++;
INT2IF=0;
return;
}

VOID CT_PWM_POWER()
{
SET_POWER_PWM0_DUTY(100);

SET_POWER_PWM2_DUTY(500);

SET_POWER_PWM4_DUTY(200);

SET_POWER_PWM6_DUTY(500);

}
VOID CT_PWM_CCP ()
{

SET_PWM2_DUTY(250);
SET_PWM1_DUTY(500);
}
void main()
{
trisa=0x00;
porta=0xff;

trisb=0x00;
portb=0x00;

trisc=0b00111000;
//portC=0b00111000;

trisd=0x00;
portd=0xff;

trise=0x00;
porte=0xff;



setup_power_pwm_pins( PWM_ODD_ON,PWM_ODD_ON,PWM_ODD_ON,PWM_ODD_ON);
setup_power_pwm(PWM_CLOCK_DIV_4|PWM_FREE_RUN,1,0,1 24,0,1,0);
set_power_pwm_override(1, false, 0);
set_power_pwm_override(3, false, 0);
set_power_pwm_override(5, false, 0);
set_power_pwm_override(7, false, 0);

SETUP_CCP1(CCP_PWM);
SETUP_CCP2(CCP_PWM);
setup_timer_2(T2_DIV_BY_4,124,1);

enable_interrupts(GLOBAL);
enable_interrupts(INT_EXT);
enable_interrupts(INT_EXT1);
enable_interrupts(INT_EXT2);
ext_int_edge(0, L_TO_H );
ext_int_edge(1, L_TO_H );
ext_int_edge(2, L_TO_H );


xung=0;
xung1=0;
xung2=0;


while(TRUE)
{
IF(xung2==100) RA0=0;
else IF(XUNG2==1200) RA1=0;
else IF(XUNG2==1300) RA2=0;
else IF(xung2==1400) RA3=0;
else IF(xung2==1500) RA4=0;
else IF(xung2==1600) RA5=0;
else IF(xung2==2000) CT_PWM_POWER();
else IF(xung2==3000) CT_PWM_CCP ();
else IF(xung2>4000)
{
RD0=0;
DELAY_MS(500);
RD1=0;
DELAY_MS(500);
RD2=0;
DELAY_MS(500);
RD3=0;
DELAY_MS(500);
RD4=0;
DELAY_MS(500);
RD5=0;
DELAY_MS(500);
RD6=0;
DELAY_MS(500);

}
}

}
robotpic vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn