FutabaS3010舵机测试程序说明:本程序是为了第四届FREESCALE智能车大赛,舵机测试时使用的程序,基于51单片机实验版。利用C语言完成,仅供参考,欢迎批评意见,转载请注明出处。/*********************************************************************舵机测试程序*SST89E58/SST89E516ExperimentalBOARD*Copyright(C)2009,ShulinLiu,HUST*Allrightsreserved.*ForFreescaleSmartcarMatch********************************************************************/#include<>//51单片机头文件#defineuintunsignedint//宏定义#defineucharunsignedchar//宏定义sbitP1_0=P1^0;//PWM信号输出端sbitdula=P2^6;sbitwela=P2^7;//由于没有板子的原理图,暂时将段选,位选设置为P2^6,P2^7uintt;//时间变量uchartemp=0;//定时器的溢出次数,定时50msunsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//数码管编码表//分别为0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f/****************************主函数***********************************/voidmain(){voiddisplay(uint);//数码管显示函数voiddelay(uintz);//延时子函数P1_0=1;//置PWM初始输出为高电平TMOD=0x11;//设置定时器0,1为工作方式1TH0=(65536-1500)/256;TL0=(65536-1500)%256;//=(65536-46300)/256;TL1=(65536-46300)%256;//设定T1的计时周期为50ms//IT0=0,IT1=0默认电平触发方式EA=1;//开总中断EX0=1;//开外部中断0EX1=1;//开外部中断1ET0=1;//开定时器0中断ET1=1;//开启定时器1中断TR0=1;//启动定时器0while(1);}/******************************中断服务程序**********************************/voidpwm0()interrupt1//定时器0中断,产生方波{if(P1_0==1)//如果上个电平为1,{TH0=(65536-18500)/256;TL0=(65536-18500)%256;}else//如果上个电平为0,{TH0=(65535-1500)/256;TL0=(65535-1500)%256;}P1_0=~P1_0;}voidint0()i
futaba_s3010舵机测试程序 来自淘豆网m.daumloan.com转载请标明出处.