View Full Version : Giúp em đoạn code này với : chủ đề là điều khiển RCservo bằng pwm
vuongdang54
21-11-2013, 04:27 AM
như trình bày ở trên thì code em viết nó có 2 thắc mắc
đó là : khi em cấp 1 góc quay là 36 độ thì nó tính ra duty =13;
nhập duty thì chạy đúng còn nếu lấy duty=x thì chạy sai.
cái em thắc mắc nữa là tại sao nó lại quay ngược chiều.
do em bắn xung ra là 1.3ms nên theo lý thuyết nó phải quay qua bên phải chứ ?
Mong các cao nhân ra tay giúp đỡ.
vuongdang54
21-11-2013, 04:29 AM
#include <16F877a.h>
#device *=16 ADC=8
#use delay(clock=640000)
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, NOPUT, NOLVP,HS
#INCLUDE<math.h>
#byte portc=0x07
#byte portd=0x08
int8 a;
int x;
int lamtron(int a)
{
a=36;
x=(-a/18+15);
}
void main()
{
int lamtron(int a);
a=36;
x=(-a/18+15);
setup_timer_2(T2_DIV_BY_16,199,1);
setup_ccp1(CCP_PWM);
set_pwm1_duty(x);
while(TRUE)
{
}
}
đây là code em viết
thieuthangvt
26-11-2013, 11:19 PM
tui thấy code của bạn có mấy chỗ khó hiểu
#device *=16 ADC=8
dòng này bạn ko dùng bộ ANALOG thì bạn khai báo làm gì vậy ?
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, NOPUT, NOLVP,HS
thạch anh 640KHz bạn khai báo HS chi vậy ?
tại sao lại đặt biến a và biến x trong khi giá trị 2 này không hề thay đổi ?
int lamtron(int a)
{a=36;x=(-a/18+15);}
khai báo này dùng làm gì vậy trong khi void main () bạn đã có a và x rồi mà ??
tui viết lại như vậy bạn xem đc ko :D
#include <16F877a.h>
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, NOPUT, NOLVP
#use delay(clock=640000)
#include <math.h>
#byte portc=0x07
#byte trisc=0x87
int8 a,x;
void main()
{
set_tris_c(0x00);
a=36;
x=((-a/18)+15);
setup_timer_2(T2_DIV_BY_16,199,1);
setup_ccp1(CCP_PWM);
set_pwm1_duty((usigned int)x);
while(TRUE) {}
}
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.