资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
#include #define Stop 0 /宏定义,停止#define Left 1 /宏定义,左转#define Right 2 /宏定义,右转sbit ControlPort = P20; /舵机信号端口sbit KeyLeft = P10; /左转按键端口sbit KeyRight = P11; /右转按键端口sbit KeyStop = P12; /归位按键端口unsigned char TimeOutCounter = 0,LeftOrRight = 0; /TimeOutCounter:定时器溢出计数 LeftOrRight:舵机左右旋转标志void InitialTimer ( void ) TMOD=0x10; /定时/计数器1工作于方式1 TH1 = ( 65535 - 500 ) / 256; /0.25msTL1 = ( 65535 - 500 ) % 256; EA=1; /开总中断 ET1=1; /允许定时/计数器1 中断 TR1=1; /启动定时/计数器1 中断void ControlLeftOrRight ( void ) /控制舵机函数if( KeyStop = 0 )/while ( !KeyStop ); /使标志等于Stop(0),在中断函数中将用到LeftOrRight = Stop;if( KeyLeft = 0 )/while ( !KeyLeft ); /使标志等于Left(1),在中断函数中将用到LeftOrRight = Left;if( KeyRight = 0 )/while ( !KeyRight ); /使标志等于Right(2),在中断函数中将用到LeftOrRight = Right;void main ( void ) /主函数 InitialTimer();for(;)ControlLeftOrRight();void Timer1 ( void ) interrupt 3 /定时器中断函数 TH1 = ( 65535 - 500 ) / 256;TL1 = ( 65535 - 500 ) % 256;TimeOutCounter +;switch ( LeftOrRight )case 0 : /为0时,舵机归位,脉宽1.5msif( TimeOutCounter = 6 )ControlPort = 1;else ControlPort = 0;break;case 1 : /为1时,舵机左转,脉宽1ms(理论值),实际可以调试得出if( TimeOutCounter = 2 )ControlPort = 1;else ControlPort = 0;break;case 2 : /为2时,舵机右转,脉宽2ms(理论值),实际可以调试得出if( TimeOutCounter = 10 )ControlPort = 1;else ControlPort = 0;break;default : break;if( TimeOutCounter = 80 ) /周期20ms(理论值),比较可靠,最好不要修改TimeOutCounter = 0;
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号