我用的是STC12C5A60S2,我可以同时操控多个舵机了,但是我按键对操纵的四个舵机发出的都是同一个命令,不知道怎么每2个按键单独控制一个舵机,望大佬指导。目前我只写了4个按键
程序基于http://www.51hei.com/bbs/dpj-156595-1.html按键操控编写
#include<reg52.h>
sbit SG_YEE=P0^0;
sbit SG_PWM=P0^1;
sbit SG_WUHU=P0^2;
sbit SG_DAME=P0^3;
sbit Key_1=P4^1;
sbit Key_2=P4^2;
sbit Key_3=P4^3;
sbit Key_4=P4^4;
unsigned char count=0;
unsigned char PWM_count=5; //1--0度,2--45度,3--90度,4--135度,5--180度
void delay(unsigned char i) //延时
{
unsigned char j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void Timer_Init()
{
TMOD=0X01; //T0定时方式1
TH0=0Xfe;
TL0=0X33; //计数初值设置为0.5ms 每0.5ms进入一次中断,晶振频率:11.0592MHZ
ET0=1; //打开定时器0的中断
TR0=1; //打开定时器0
EA=1; //开总中断
}
void Timer() interrupt 1 //特别注意此处,0--外部中断0,1--定时器中断0,2--外部中断1,3--定时器中断1,4--串行口中断1
{
TR0=0;
TH0=0Xfe;
TL0=0X33; //重新赋计数初值为0.5ms
if(count<=PWM_count)
{
SG_PWM=1;
SG_YEE=1;
SG_WUHU=1;
SG_DAME=1;
}
else
{
SG_PWM=0;
SG_YEE=0;
SG_WUHU=0;
SG_DAME=0;
}
count++;
if(count>=40)
{
count=0;
}
TR0=1;
}
void main()
{
Timer_Init();
while(1)
{
if(Key_1==0)
{
delay(10);
EA=0;
if(Key_1==0)
{
PWM_count=1;
count=0;
EA=1;
}
while(!Key_1);
}
if(Key_2==0)
{
delay(10);
EA=0;
if(Key_2==0)
{
PWM_count=2;
count=0;
EA=1;
}
while(!Key_2);
}
if(Key_3==0);
{
delay(10);
EA=0;
if(Key_3==0);
{
PWM_count=3;
count=0;
EA=1;
}
while(!Key_3);
}
if(Key_4==0);
{
delay(10);
EA=0;
if(Key_3==0);
{
PWM_count=4;
count=0;
EA=1;
}
while(!Key_4);
}
}
}
|