#include<>#defineStop0//宏定义,停止#defineLeft1//宏定义,左转#defineRight2//宏定义,右转sbitControlPort=P2^0;//舵机信号端口sbitKeyLeft=P1^0;//左转按键端口sbitKeyRight=P1^1;//右转按键端口sbitKeyStop=P1^2;//归位按键端口unsignedcharTimeOutCounter=0,LeftOrRight=0;//TimeOutCounter:定时器溢出计数LeftOrRight:舵机左右旋转标志voidInitialTimer(void){ TMOD=0x10;//定时/计数器1工作于方式1 TH1=(65535-500)/256;// TL1=(65535-500)%256;EA=1;//开总中断 ET1=1;//允许定时/计数器1中断 TR1=1;//启动定时/计数器1中断}voidControlLeftOrRight(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; }}voidmain(void)//主函数{ InitialTimer(); for(;;) { ControlLeftOrRight(); }}voidTimer1(void)interrupt3//定时器中断函数{ TH1=(65535-500)/256; TL1=(65535-500)%256; TimeOutCounter++; switch(LeftOrRight) { case0://为0时,舵机归位,脉宽
单片机控制舵机程序 来自淘豆网m.daumloan.com转载请标明出处.