PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 05-11-2010, 12:26 AM   #1
robotpic
Đệ tử 4 túi
 
Tham gia ngày: Jun 2010
Bài gửi: 79
:
có code nhờ anh em xem giúp

e viêt chương trình sau có 2 lổi e chưa hiểu nguyên nhân:

đặt câu hỏi trước gởi code sau:

chương trình e dùng ngắt ngoài chân rc3 rc4 rc5 của pic 4331 để đọc encoder

câi 1: nếu encoder quay thì xung tang theo theo tốc đọ của encoder , nhưng mà e không quay encoder thì nó cũng tăng lên?
câu 2: còng if nếu e viết :
while(TRUE)
{
IF(XUNG>1000||xung1>1000||xung2>1000) RA0=0;
else IF(XUNG>1200||xung1>1200||xung2>1200) RA1=0;
else IF(XUNG>1300||xung1>1300||xung2>1300) RA2=0;
else IF(XUNG>1400||xung1>1400||xung2>1400) RA3=0;
else IF(XUNG>1500||xung1>1500||xung2>1500) RA4=0;
else IF(XUNG>1600||xung1>1600||xung2>1600) RA5=0;
else IF(XUNG>2000||xung1>2000||xung2>2000) CT_PWM_POWER();
else IF(XUNG>3000||xung1>3000||xung2>3000) CT_PWM_CCP ();
else IF(XUNG>3000||xung1>3000||xung2>3000)
{
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);
}
}
thì nó khi encoder quay mấy vòng đi chăng nữa nó cũng chỉ dừng lệnh if đầu tiên tức chỉ có ra0 sáng.

còn khí e viết như thế nầy thì nhận hết ok:
while(TRUE)
{
IF(XUNG>1000||xung1>1000||xung2>1000) RA0=0;
IF(XUNG>1200||xung1>1200||xung2>1200) RA1=0;
IF(XUNG>1300||xung1>1300||xung2>1300) RA2=0;
IF(XUNG>1400||xung1>1400||xung2>1400) RA3=0;
IF(XUNG>1500||xung1>1500||xung2>1500) RA4=0;
IF(XUNG>1600||xung1>1600||xung2>1600) RA5=0;
IF(XUNG>2000||xung1>2000||xung2>2000) CT_PWM_POWER();
IF(XUNG>3000||xung1>3000||xung2>3000) CT_PWM_CCP ();
IF(XUNG>3000||xung1>3000||xung2>3000)
{
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);
}
}


đây là toàn bộ code của e:


#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,NOWINEN,NOIESO,NOWRTC,NOWRTB,NOWRTD,NOEBTR,NO WRT,NOEBTRB,EXCLKD0,T1STANDARD

#use delay(clock=20000000)

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

long XUNG,XUNG1,XUNG2;

#INT_EXT //RC3
VOID DEM_NGAT()
{
XUNG++;
return ;
}

#INT_EXT1 //RC4
VOID DEM_NGAT_1()
{
XUNG1++;
return ;
}

#INT_EXT2 //RC5

VOID DEM_NGAT_2()
{

XUNG2++;
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=0x0f;

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(XUNG>1000||xung1>1000||xung2>1000) RA0=0;
IF(XUNG>1200||xung1>1200||xung2>1200) RA1=0;
IF(XUNG>1300||xung1>1300||xung2>1300) RA2=0;
IF(XUNG>1400||xung1>1400||xung2>1400) RA3=0;
IF(XUNG>1500||xung1>1500||xung2>1500) RA4=0;
IF(XUNG>1600||xung1>1600||xung2>1600) RA5=0;
IF(XUNG>2000||xung1>2000||xung2>2000) CT_PWM_POWER();
IF(XUNG>3000||xung1>3000||xung2>3000) CT_PWM_CCP ();
IF(XUNG>3000||xung1>3000||xung2>3000)
{
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);
}
}

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


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 05:29 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam