久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

舵機(jī)速度控制的51單片機(jī)程序

作者:藍(lán)夢(mèng)荒   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年12月08日   【字體:

本程序中用到的頭文件12c5a.h下載: http://www.zg4o1577.cn/f/12c5a.rar
#include <12c5a.H>    //STC12C5A系列單片機(jī)
#include"intrins.h"

void delay(uint16 time); //軟件延時(shí)函數(shù)
void Timer_init();   //定時(shí)器初始化函數(shù)
void Timer0(uint32 us);  //定時(shí)器0定時(shí)函數(shù)
void qhuan(unsigned int ms50,char zushu);

char n,a=101;
int LK[8]={0},*K;
int   shuju[8][8]=
     {            //舵機(jī)動(dòng)作數(shù)據(jù)
     {2500,2500,2500,2500,2500,2500,2500,2500},
     {500,500,500,500,500,500,500,500},  
     {2500,2500,2500,2500,2500,2500,2500,2500},
     {500,500,500,500,500,500,500,500},  
     {2500,2500,2500,2500,2500,2500,2500,2500},
     {500,500,500,500,500,500,500,500},  
     {2500,2500,2500,2500,2500,2500,2500,2500},
     {500,500,500,500,500,500,500,500},  
     };
int *PWMM,pwm[8];    //PWMM用以尋址動(dòng)作數(shù)據(jù)的指針,LP接收信息時(shí)用以指向數(shù)據(jù)緩存
unsigned int thesea;

 

sbit pwm8=P0^5; 
sbit pwm7=P0^6;
sbit pwm6=P0^7;
sbit pwm5=P4^6;
sbit pwm4=P4^1;
sbit pwm3=P4^5;
sbit pwm2=P4^4;
sbit pwm1=P2^7;


void main(void)
{
 uint8 i=0;

 P0M1=0;      //設(shè)置P口為強(qiáng)推免輸出模式,下同
 P0M0=0XFF;

 P1M1=0;
 P1M0=0XFF;

 P2M1=0;
 P2M0=0XFF;

 P3M1=0;
 P3M0=0XFF;

 Timer_init(); //定時(shí)器初始化
 Timer0(31);  //通過一個(gè)定時(shí)值進(jìn)入定時(shí)循環(huán)
 
 K=LK;
 PWMM=shuju[0];
 delay(100);
 while(1)
 {        
  ;
 }
}
void delay(uint16 time)
{
 uint16 i;
 uint16 j;
 for(i=0;i<1000;i++)
 for(j=0;j<time;j++);
}
void Timer_init()
{
 EA=1;        //開總中斷
 AUXR|=0xC0;    //T0,T1工作在1T
    TMOD|= 0x11;   //T0工作在方式1,16位
 ET0 = 1;    //開定時(shí)器0中斷
 ET1 = 1;
 TR0=1;
 TR1=0;
}
void Timer0(uint32 us)   
{
 uint32 valu;
 valu=us*11;     //工作在1T,最大定時(shí)時(shí)間0xffff/11us
 valu=valu;
 valu=0xffff-valu;   //  

    TH0=valu>>8;   
    TL0=valu;
}
/************************************************************************************************/
void qhuan(unsigned int ms50,char zushu)   //控速算法
{
 char i;
 if(thesea>=ms50&a>100)  //檢驗(yàn)定時(shí)和舵機(jī)是否到達(dá)指定時(shí)間和位置,到達(dá)更新
 {
  n++;
  if(n<zushu)
   PWMM=shuju[n];
  else
   PWMM=shuju[0];
  for(i=0;i<8;i++)
  {
   if(n<(zushu))
     *(K+i)=(shuju[n][i]-shuju[n-1][i])/100;
   else
    *(K+i)=(shuju[0][i]-shuju[zushu-1][i])/100; 
  }
  if(n>=zushu)
   n=0;
  thesea=0;
  a=0;        
 }
}
void T0zd(void) interrupt 1 
{
  static uint8 i=0,irm=0;
  ++i;
  ++irm;
  qhuan(640,4);
  if((a<=100)&(irm>=64))
  {
   a+=10;         //自加在40就已經(jīng)是舵機(jī)不控速的最快速度了
   irm=0;
  }
  thesea++;
  switch(i)       
  {
  case 1:
   {
    pwm1=1;
    Timer0(*(PWMM)-*(K)*(100-a)); //定時(shí)
   }  return;
  case 2:
   {
     pwm1=0;   //pwm1變低
    Timer0(2500-*(PWMM)+*(K)*(100-a));// 定時(shí)
   }  return;
  case 3:
   {
    pwm2=1; //pwm2變高
    Timer0(*(PWMM+1)-*(K+1)*(100-a));// 定時(shí)時(shí)常為pwm[2]
   }  return;
  case 4:
   {
    pwm2=0; //pwm2變低
    Timer0(2500-*(PWMM+1)+*(K+1)*(100-a));// 定時(shí)時(shí)常為pwm[2]
   }  return;
  case 5:
   {
    pwm3=1; //pwm3變高
    Timer0(*(PWMM+2)-*(K+2)*(100-a));// 定時(shí)時(shí)常為pwm[3]
   }  return;
  case 6:
   {
    pwm3=0; //pwm3變低
    Timer0(2500-*(PWMM+2)+*(K+2)*(100-a));// 定時(shí)
   } return; 
  case 7:
   {
    pwm4=1; //pwm4變高
    Timer0(*(PWMM+3)-*(K+3)*(100-a));// 定時(shí)
   } return; 
  case 8:
   {
    pwm4=0; //pwm4變低
    Timer0(2500-*(PWMM+3)+*(K+3)*(100-a));// 定時(shí)
   } return; 
  case 9:
   {
    pwm5=1; //pwm5變高
    Timer0(*(PWMM+4)-*(K+4)*(100-a));// 定時(shí)
   } return; 
  case 10:
   {
    pwm5=0; //pwm5變低
    Timer0(2500-*(PWMM+4)+*(K+4)*(100-a));// 定時(shí)
   } return; 
  case 11:
   {
    pwm6=1; //pwm6變高
    Timer0(*(PWMM+5)-*(K+5)*(100-a));// 定時(shí)
   } return; 
  case 12:
   {
    pwm6=0; //pwm6變低
    Timer0(2500-*(PWMM+5)+*(K+5)*(100-a));// 定時(shí)
   } return;

  case 13:
   {
    pwm7=1; //pwm7變高
    Timer0(*(PWMM+6)-*(K+6)*(100-a));// 定時(shí)
   } return; 
  case 14:
   {
    pwm7=0; //pwm7變低
    Timer0(2500-*(PWMM+6)+*(K+6)*(100-a));// 定時(shí)
   } return;

  case 15:
   {
    pwm8=1; //pwm8變高
    Timer0(*(PWMM+7)-*(K+7)*(100-a));// 定時(shí)
   } return; 
  case 16:
   {
    pwm8=0; //pwm8變低
    Timer0(2500-*(PWMM+7)+*(K+7)*(100-a));// 定時(shí)
    i=0;
   } return;
  default:return;
     }   
}

 

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 色婷婷综合久久久中字幕精品久久 | 日韩一区二区在线视频 | 日韩毛片在线观看 | 国产一区二区在线播放 | 精品免费视频 | 国产一区二区三区在线视频 | 久久久久久国产精品免费免费 | 精品久久久久久国产 | 精品一二三区 | 亚洲 91| 亚洲精品久久久久中文字幕二区 | 欧美性video| 亚洲福利精品 | 日韩三级一区 | h视频在线观看免费 | av喷水 | 日韩伦理一区二区 | 欧美高清视频一区 | 亚洲一区国产精品 | 一区二区三区在线播放 | 日韩在线播放网址 | 国产高清视频在线观看 | 天天操网 | 91麻豆精品国产91久久久久久久久 | 天啪 | 精品一区二区免费视频 | 日本三级日产三级国产三级 | 欧美一级毛片免费观看 | 亚洲欧美日韩精品久久亚洲区 | 蜜桃视频在线观看免费视频网站www | 日韩精品久久一区二区三区 | 亚洲精品久久久一区二区三区 | 久久视频一区 | 久久国产精品视频观看 | 中文字幕在线看第二 | 免费看爱爱视频 | 精品影视| 在线观看成人小视频 | 欧美精品综合在线 | 久婷婷 | 午夜一区二区三区在线观看 |