标题: 89c52制作舵机 摇头 快速回位 [打印本页]

作者: xrfxrf008    时间: 2019-4-21 21:29
标题: 89c52制作舵机 摇头 快速回位
废话不多说直接代码吧
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit pwm=P0^0;
sbit keyup=P3^2;
sbit keydn=P3^3;
sbit keysdk=P3^4;
sbit keysdm=P3^5;
uchar qi=10,zhi=10;
uchar count0,flag,jd;
int count1,sd=20;
void delay(uint z)
{
  uchar x,y;
  for(x=z;x>0;x--)
      for(y=110;y>0;y--);
}
void tm_init()
{
  TMOD=0x11;//¶¨Ê±Æ÷1¡¢2 ¹¤×÷ÔÚģʽ1 ¼´65536
  TH1=(65536-50000)/256;//¶¨Òå500ms
  TL1=(65536-50000)%256;
  TH0=0xff;//¶¨Òå0.1ms
  TL0=0x9c;
  IE=0x8a;
  TR0=1;
  TR1=1;  
}
void tm0_int() interrupt 1 //t0¶¨Òå
{
  uchar temp;
  TH0=0xff;//¶¨Òå0.1ms
  TL0=0x9c;  
  if(flag==1)
    temp=qi;
  else
    temp=zhi;
  if(count0<temp)
     pwm=1;
  else
     pwm=0;
  count0=count0+1;
  count0=count0%200;

}
void tm1_int() interrupt 3
{
   TH1=(65536-50000)/256;//¶¨Òå500ms
   TL1=(65536-50000)%256;
   count1++;
   if(count1==4)
      flag=0;     
   if(count1==sd)//30Ãë   600
   {
      flag=1;
      count1=0;
   }
      
}
void test()
{
   if(keyup==0)
   {
     delay(20);
     if(keyup==0)
     {
     
         qi++;
         count0=0;
         while(!keyup);
     }
   }
     if(keydn==0)
   {
     delay(20);
     if(keydn==0)
     {
     
         qi--;
         count0=0;
         while(!keydn);
     }
   }
    if(keysdk==0)
   {
     delay(20);
     if(keysdk==0)
     {
     
         sd=sd+20;
         count1=0;
         while(!keysdk);
     }
   }
   if(keysdm==0)
   {
     delay(20);
     if(keysdm==0)
     {
     
         sd=sd-20;
         count1=0;
         while(!keysdm);
     }
   }
}
  
void main()
{
  uint m=0;
  count0=0;count1=0;
  jd=15;
  flag=1;//falg=1ʱcount0=10 flag=0ʱcount0=10
  tm_init();
  while(1)
  {
   test();
  }
}




作者: admin    时间: 2019-4-22 04:36
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1