初级会员

- 积分
- 71
- 金钱
- 71
- 注册时间
- 2014-7-10
- 在线时间
- 0 小时
|

楼主 |
发表于 2014-8-18 21:46:22
|
显示全部楼层
回复【2楼】qq371833846:
---------------------------------
不是的。这个c确实显示了servop1ratio的值,13并没有赋值给servop1ratio。从波形图可以看出来。而且,当while循环进行一次之后,C就可以正确的显示值了,但是是26,这么说就是servop2ratio在被赋值13后的值是-1,这样自加运算之后才是零,C1才会是26.。。。。。。。而且,如果继续跟着程序调试的话,就会发现其他的赋值一切正常了。。。。
u8 servomove (u16 ccrup, u16 ccrp12,u16 ccrdown ,u8 s1,u8 s23, u8 s4 )
//控制定位舵机 其中down为旋转舵机   a7,PB 0 ,PB1 ,  A 6
{
u16 c1,c2;
if (ccrup>25||ccrp12>25||ccrdown>25)
return 0 ;
servop1ratio =13;
servop2ratio=13;
while (s23==1)
{
c1=servop1ratio;
if (s23)
{
if (servop2ratio>ccrp12)
{
servop2ratio--;
servop1ratio=26-servop2ratio;
delay_ms(smooth);
}
if (servop2ratio < ccrp12)
{
servop2ratio++;
servop1ratio=26-servop2ratio;
delay_ms(smooth);
}
if (servop2ratio == ccrp12)
s23=0;
}
}
return 1 ;
} |
|