找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1239|回复: 2
收起左侧

单片机8个按键分别操控不同舵机怎么写?目前只写了4个按键的程序

[复制链接]
ID:954121 发表于 2021-8-1 09:52 | 显示全部楼层 |阅读模式
我用的是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);
         }
  }
}


回复

使用道具 举报

ID:161164 发表于 2021-8-1 17:56 | 显示全部楼层
那就分开控制啊~
   if(count<=PWM_count)
   {
     SG_PWM=1;
   }
   else
   {
     SG_PWM=0;
   }
   if(count<=YEE_count)
   {
         SG_YEE=1;
   }
   else
   {
         SG_YEE=0;
   }如此类推
回复

使用道具 举报

ID:161164 发表于 2021-8-1 18:03 来自手机 | 显示全部楼层
而且而且按键中不用开关EA和对count清零
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表