|
我写了一个最简单的程序,就是用定时器来控制舵机转一定角度,但是出现了问题,就是无论我把占空比怎么改,他都只是转向一个角度,不会转到其他的角度,请问我的程序有什么错吗?
#include <reg52.h>
sbit ControlPort = P1^0; //舵机信号端口
unsigned char TimeOutCounter = 0,LeftOrRight = 0; //TimeOutCounter:定时器溢出计数 LeftOrRight:舵机左右旋转标志
void InitialTimer ( void )
{
TMOD=0x10; //定时/计数器1工作于方式1
TH1 = ( 65535 - 500 ) / 256; //0.25ms
TL1 = ( 65535 - 500 ) % 256;
EA=1; //开总中断
ET1=1; //允许定时/计数器1 中断
TR1=1; //启动定时/计数器1 中断
}
void main ( void ) //主函数
{
InitialTimer();
while(1) ;
}
void Timer1 ( void ) interrupt 3 //定时器中断函数
{
TH1 = ( 65535 - 500 ) / 256;
TL1 = ( 65535 - 500 ) % 256;
TimeOutCounter ++;
if( TimeOutCounter <= 6 ) //通过修改这个来改变占空比,定时器每次中断为0.25MS,但是改变了没有变化,求解
{
ControlPort = 1;
}
else
{
ControlPort = 0;
}
if( TimeOutCounter == 80 ) //周期20ms(理论值)
{
TimeOutCounter = 0;
}
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|