Ðăng Nhập

View Full Version : Chương trình sai


JumboT
07-10-2009, 03:05 PM
chào các bác !!! chương trình sau của em ko biết sai ở chỗ nào mà khi mô phỏng thì ko thể thay đổi độ rộng xung được.
ý em là khi vặn biến trở thì độ rộng xung cũng theo đó mà thay đổi. các phím dùng để thay đổi chiều của động cơ.

//chuong trinh:
...........
#define stop RB1
#define start RB2
#define left RB3
#define right RB4
int8 value; //khai bao bien luu tru ket qua ADC
void quay_trai(){
SET_PWM1_DUTY(0);
DELAY_MS(100);
value = read_adc();
SET_PWM2_DUTY(VALUE);
}
void quay_phai(){
set_pwm2_duty(0);
DELAY_MS(100);
value = read_adc();
set_pwm1_duty(value);
}
void stop_DC(){
set_pwm1_duty(0);
set_pwm2_duty(0);
}

//====================CHUONG TRINH CHINH========================//
void main(void)
{
//=================== KHOI TAO CHO ADC=========================//
setup_adc(adc_clock_internal); //chon xung xung clock cho bo ADC
setup_adc_ports(sAN0|VSS_VDD); //thiet lap cong AN0 la dau vao ADC
set_adc_channel(0); //chon chan AN0 cho lenh doc ADC tiep
delay_us(10);

//====================KHOI TAO CHO PWM=========================//

setup_ccp1(CCP_PWM); //cau hinh cho ccp1 lam dau ra PWM
setup_ccp2(CCP_PWM); //-------------ccp2---------------
setup_timer_2(T2_DIV_BY_1,255,1); //chon tan so dau ra cho bo PWM


set_tris_B(0x1E); //thiet lap cac chan RB1-RB4 la input (00011110b = 1Eh)
set_pwm1_duty(0); //tat dong co
set_pwm2_duty(0); //-----------
delay_ms(50);
START:
while(1){
IF(stop == 0){
stop_DC();
}
ELSE IF(left == 0){
quay_trai();
}
ELSE IF(right==0){
quay_phai();
}
}
}

Em có gửi cả sơ đồ nguyên lý bên dưới:
http://www.mediafire.com/?sharekey=0797375bce32605c61d4646c62b381cbe04e75f6 e8ebb871
mong các bác chỉ giùm

JumboT
07-10-2009, 03:24 PM
ah xin lỗi các bác. Cái nhãn START ko có tác dụng gì cả. em quên chưa xoa nó đi

JumboT
08-10-2009, 02:39 PM
Bác falleaf và các bác khác có thể chỉ cho em chỗ chưa đúng được ko vậy.
Hoặc viết hộ em một chương trình nhw ý tưởng của em cũng được.
Em sốt ruột wa !!!

phamminhtuan
09-10-2009, 09:39 AM
Bạn cho biết là bạn đã dịch chương trình được chưa, vì hình như bạn viết bằng CCS nhưng các định nghĩa như #define stop RB1 rồi sau đó if(stop) .. sẽ báo lỗi ngay -> thay bằng #define stop input(PIN_B1)

JumboT
09-10-2009, 01:24 PM
em đã dịch OK. ko có lỗi gì cả. v4.078 thì phải. trong phần help của nó cũng dùng như vậy mà. nói chung là mấy phần định nghĩa ko có lỗi gì cả.

JumboT
10-10-2009, 01:05 AM
cảm ơn các bác. Em đã tìm ra đường đi rồi. Tận hai con đường cơ. một đường chuột chạy và một đường chim bay. hjhj.