單片機(jī)控制18路舵機(jī)的C程序
//***************************定時(shí)器中斷**************************
void timer0() interrupt 1 using 1
{
if(pwm_scan==1) //第1路pwm。
{
pwm0=1;
TH0=pwm_val[0];
TL0=pwm_val[1];
}
else if(pwm_scan==2) //第2路pwm。
{
pwm0=0;
pwm1=1;
TH0=pwm_val[2];
TL0=pwm_val[3];
}
else if(pwm_scan==3) //第3路pwm。
{
pwm1=0;
pwm2=1;
TH0=pwm_val[4];
TL0=pwm_val[5];
}
else if(pwm_scan==4) //第4路pwm。
{
pwm2=0;
pwm3=1;
TH0=pwm_val[6];
TL0=pwm_val[7];
}
else if(pwm_scan==5) //第5路pwm。
{
pwm3=0;
pwm4=1;
TH0=pwm_val[8];
TL0=pwm_val[9];
}
else if(pwm_scan==6) //第6路pwm。
{
pwm4=0;
pwm5=1;
TH0=pwm_val[10];
TL0=pwm_val[11];
}
else if(pwm_scan==7) //第7路pwm。
{
pwm5=0;
pwm6=1;
TH0=pwm_val[12];
TL0=pwm_val[13];
}
else if(pwm_scan==8) //第8路pwm。
{
pwm6=0;
pwm7=1;
TH0=pwm_val[14];
TL0=pwm_val[15];
}
else if(pwm_scan==9) //第9路pwm。
{
pwm7=0;
pwm8=1;
TH0=pwm_val[16];
TL0=pwm_val[17];
}
else if(pwm_scan==10) //低電平。
{
pwm8=0;
TH0=pwm_val[36];
TL0=pwm_val[37];
pwm_scan=0;
}
pwm_scan++;
}
void timer1() interrupt 3 using 2
{
if(pwm_scan1==1) //第10路pwm。
{
pwm9=1;
TH1=pwm_val[18];
TL1=pwm_val[19];
}
else if(pwm_scan1==2) //第11路pwm。
{
pwm9=0;
pwm10=1;
TH1=pwm_val[20];
TL1=pwm_val[21];
}
else if(pwm_scan1==3) //第12路pwm。
{
pwm10=0;
pwm11=1;
TH1=pwm_val[22];
TL1=pwm_val[23];
}
else if(pwm_scan1==4) //第13路pwm。
{
pwm11=0;
pwm12=1;
TH1=pwm_val[24];
TL1=pwm_val[25];
}
else if(pwm_scan1==5) //第14路pwm。
{
pwm12=0;
pwm13=1;
TH1=pwm_val[26];
TL1=pwm_val[27];
}
else if(pwm_scan1==6) //第15路pwm。
{
pwm13=0;
pwm14=1;
TH1=pwm_val[28];
TL1=pwm_val[29];
}
else if(pwm_scan1==7) //第16路pwm。
{
pwm14=0;
pwm15=1;
TH1=pwm_val[30];
TL1=pwm_val[31];
}
else if(pwm_scan1==8) //第17路pwm。
{
pwm15=0;
pwm16=1;
TH1=pwm_val[32];
TL1=pwm_val[33];
}
else if(pwm_scan1==9) //第18路pwm。
{
pwm16=0;
pwm17=1;
TH1=pwm_val[34];
TL1=pwm_val[35];
}
else if(pwm_scan1==10) //低電平。
{
pwm17=0;
TH1=pwm_val[38];
TL1=pwm_val[39];
pwm_scan1=0;
}
pwm_scan1++;
}
//********************************函數(shù)************************
void timer_INT(void) //timer0、timer1初始化
{
uchar a,b,c;
TMOD|=0X11;
IE|=0X8A; //EA=1;ET0=1;ET1=1;
TH0=256;
TL0=255;
TH1=256;
TL1=255;
TR0=1;
for(c=1;c>0;c--)
{
for(b=38;b>0;b--)
{
for(a=130;a>0;a--);
}
}
TR1=1;
}本文引用地址:http://m.butianyuan.cn/article/201612/324215.htm
void SCI_INT(void) //timer2
{
SCON=0X50;
T2CON=0X30;
TL2=RCAP2L=0XB2; //9600 0XFFB2, 19200 0XFFD9
TH2=RCAP2H=0XFF;
PCON=0X00;
TR2=1;
}
評論