找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1680|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机20路pwm

[复制链接]
跳转到指定楼层
楼主
ID:406332 发表于 2018-10-8 00:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                           
#include<STC12C5A60S2.h>
#define uint unsigned int
#define uchar unsigned char

sbit ppo00=P0^7;
sbit ppo01=P1^0;
sbit ppo02=P1^1;
sbit ppo03=P1^2;
sbit ppo04=P1^3;
sbit ppo05=P1^4;
sbit ppo06=P1^5;
sbit ppo07=P1^6;
sbit ppo08=P1^7;
sbit ppo09=P0^6;
//sbit ppo10=P2^0;
sbit ppo10=P2^0;
sbit ppo11=P2^1;
sbit ppo12=P2^2;
sbit ppo13=P2^3;
sbit ppo14=P2^4;
sbit ppo15=P2^5;
sbit ppo16=P2^6;
sbit ppo17=P2^7;
sbit ppo18=P0^4;
//sbit ppo19=P0^5;
sbit ppo19=P0^5;
sbit key1=P3^7;
sbit key2=P3^6;
sbit key3=P3^5;
sbit key4=P3^4;
sbit key5=P3^3;
sbit key6=P3^2;

uchar bdata MC;
  sbit c1=MC^0;                          
  sbit c2=MC^1;
  sbit c3=MC^2;
  sbit c4=MC^3;
  sbit c5=MC^4;
  sbit c6=MC^5;
  sbit c7=MC^6;
  sbit c8=MC^7;

unsigned int PSHU[24]= {        1500,1500,1500,1500,1500,        1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,};
unsigned int WSHU[24] ={        1500,1500,1500,1500,1500,        1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500};
uchar pwmst=0,pwmat=10,pwmnt=0,XVB2=0;
uint sjt=0,pwm_value=1500,HESHU=0,zhonx=1500,chai=0,chaa=0;
uchar chia=0,H=0,L=0,WEI=0,kaix=0;
uchar zbucan=200,ybucan=200;
uint dinsi=0,cans=0,canb=0;
uint kuan1=1000,kuan2=1500,kuan3=2000,kuan11=1200,kuan13=1800;

void delay(uchar z)
{
        uchar x,y;
        for(x=z;x>0;x--)
                for(y=10;y>0;y--);
}
void yunxin()
{ uchar z=0;
for( z=0;z<22;z++){
  PSHU[z]= WSHU[z];
  }
}

void Sdelay(uchar z)
{
   for(;z>0;z--)
   { delay(200);        }
}
void InitTimer(void)
{
    TMOD=0x11;//定时器1 方式2 用于产生波特率;定时器0 方式1 用于刷新显示
    TH0=-1500/256;//定时1.5MS,这时舵机处于0度
        TL0=-1500%256;
        TH1=-1500/256;
        TL1=-1500%256;       
        EA=1;                //开全局中断                //开串口中断
        ET0=1;                //开定时器0中断
    ET1=1;
        TR0=0;
        TR1=0;


}

void UartInit(void)                //9600bps@12.000MHz
{
        PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位数据,可变波特率
        AUXR |= 0x04;                //独立波特率发生器时钟为Fosc,即1T
        BRT = 0xD9;                //设定独立波特率发生器重装值
        AUXR |= 0x01;                //串口1选择独立波特率发生器为波特率发生器
        AUXR |= 0x10;                //启动独立波特率发生器
}



void SendOneByte(unsigned char c)
{
    SBUF = c;
    while(!TI);
    TI = 0;
}



void skwb(unsigned char c)


   {
          switch(c)
      {
   case 0: ppo00=1; break;
   case 1: ppo01=1;break;
   case 2: ppo02=1;break;
   case 3: ppo03=1;break;
   case 4: ppo04=1;break;
   case 5: ppo05=1;break;
   case 6: ppo06=1;break;
   case 7: ppo07=1;break;
   case 8: ppo08=1;break;
   case 9: ppo09=1;break;

   default: break;
           }

}
void skwc(unsigned char c)


   {
          switch(c)
      {
   case 0: ppo00=0; break;
   case 1: ppo01=0;break;
   case 2: ppo02=0;break;
   case 3: ppo03=0;break;
   case 4: ppo04=0;break;
   case 5: ppo05=0;break;
   case 6: ppo06=0;break;
   case 7: ppo07=0;break;
   case 8: ppo08=0;break;
   case 9: ppo09=0;break;


   default: break;
           }

}
void skwz(unsigned char c)


   {
          switch(c)
      {

   case 0: ppo10=0;break;       
   case 1: ppo11=0;break;
   case 2: ppo12=0;break;
   case 3: ppo13=0;break;
   case 4: ppo14=0;break;
   case 5: ppo15=0;break;
   case 6: ppo16=0;break;
   case 7: ppo17=0;break;
   case 8: ppo18=0;break;
   case 9: ppo19=0;break;
   default: break;
           }

}
void skwx(unsigned char c)


   {
          switch(c)
      {

   case 0: ppo10=1;break;       
   case 1: ppo11=1;break;
   case 2: ppo12=1;break;
   case 3: ppo13=1;break;
   case 4: ppo14=1;break;
   case 5: ppo15=1;break;
   case 6: ppo16=1;break;
   case 7: ppo17=1;break;
   case 8: ppo18=1;break;
   case 9: ppo19=1;break;
   default: break;
           }

}
void SHUZI(void)
{  
                SendOneByte(0x0a);
    while(!RI);RI=0;         WEI=SBUF;  
                 SendOneByte(0x0b);
    while(!RI);RI=0;        H=SBUF;
                 SendOneByte(0x0e);
    while(!RI);RI=0;   L=SBUF; HESHU=(H<<8)+L; PSHU[WEI]=HESHU;
            
         SendOneByte(0x0f);
}

void WHUZI(void)
{  
                  SendOneByte(0x0a);
    while(!RI);RI=0;         WEI=SBUF;
         SendOneByte(0x0b);
    while(!RI);RI=0;        H=SBUF;  
                 SendOneByte(0x0e);
    while(!RI);RI=0;   L=SBUF; HESHU=(H<<8)+L; WSHU[WEI]=HESHU;
         SendOneByte(0x0f);   
       
}

void jiao1(uint ki1,uint ki2,uint ki3,uchar shu)
{
   if( ((PSHU[0]==ki1)&&(PSHU[1]==ki2) &&(PSHU[2]==ki3))==1 )
        {
          c1=1;
        }else{
         if(PSHU[0]!=ki1) {  if( PSHU[0]>ki1){ PSHU[0]--;}else{PSHU[0]++;}   }
         if(PSHU[1]!=ki2) {  if( PSHU[1]>ki2){ PSHU[1]--;}else{PSHU[1]++;}   }              
         if(PSHU[2]!=ki3) {  if( PSHU[2]>ki3){ PSHU[2]--;}else{PSHU[2]++;}   }
    delay(shu);
         c1=0;
        }

}

void jiao2(uint ki3,uint ki4,uint ki5,uchar shu)
{
  if( ((PSHU[3]==ki3)&&(PSHU[4]==ki4) &&(PSHU[5]==ki5) )==1)
        {
          c2=1;
        }else{
         if(PSHU[3]!=ki3) {  if( PSHU[3]>ki3){ PSHU[3]--;}else{PSHU[3]++;}   }
         if(PSHU[4]!=ki4) {  if( PSHU[4]>ki4){ PSHU[4]--;}else{PSHU[4]++;}   }              
         if(PSHU[5]!=ki5) {  if( PSHU[5]>ki5){ PSHU[5]--;}else{PSHU[5]++;}   }
    delay(shu);
         c2=0;
        }

}

void jiao3(uint ki6,uint ki7,uint ki8,uchar shu)
{
  if( ((PSHU[6]==ki6)&&(PSHU[7]==ki7) &&(PSHU[8]==ki8) ) ==1)
        {
          c3=1;
        }else{
         if(PSHU[6]!=ki6) {  if( PSHU[6]>ki6){ PSHU[6]--;}else{PSHU[6]++;}   }
         if(PSHU[7]!=ki7) {  if( PSHU[7]>ki7){ PSHU[7]--;}else{PSHU[7]++;}   }              
         if(PSHU[8]!=ki8) {  if( PSHU[8]>ki8){ PSHU[8]--;}else{PSHU[8]++;}   }
    delay(shu);
         c3=0;
        }

}


void jiao4(uint ki1,uint ki2,uint ki3,uchar shu)
{
   if( ((WSHU[0]==ki1)&&(WSHU[1]==ki2) &&(WSHU[2]==ki3))==1 )
        {
          c4=1;
        }else{
         if(WSHU[0]!=ki1) {  if( WSHU[0]>ki1){ WSHU[0]--;}else{WSHU[0]++;}   }
         if(WSHU[1]!=ki2) {  if( WSHU[1]>ki2){ WSHU[1]--;}else{WSHU[1]++;}   }              
         if(WSHU[2]!=ki3) {  if( WSHU[2]>ki3){ WSHU[2]--;}else{WSHU[2]++;}   }
    delay(shu);
         c4=0;
        }

}

void jiao5(uint ki3,uint ki4,uint ki5,uchar shu)
{
  if( ((WSHU[3]==ki3)&&(WSHU[4]==ki4) &&(WSHU[5]==ki5) )==1)
        {
          c5=1;
        }else{
         if(WSHU[3]!=ki3) {  if( WSHU[3]>ki3){ WSHU[3]--;}else{WSHU[3]++;}   }
         if(WSHU[4]!=ki4) {  if( WSHU[4]>ki4){ WSHU[4]--;}else{WSHU[4]++;}   }              
         if(WSHU[5]!=ki5) {  if( WSHU[5]>ki5){ WSHU[5]--;}else{WSHU[5]++;}   }
    delay(shu);
         c5=0;
        }

}

void jiao6(uint ki6,uint ki7,uint ki8,uchar shu)
{
  if( ((WSHU[6]==ki6)&&(WSHU[7]==ki7) &&(WSHU[8]==ki8) ) ==1)
        {
          c6=1;
        }else{
         if(WSHU[6]!=ki6) {  if( WSHU[6]>ki6){ WSHU[6]--;}else{WSHU[6]++;}   }
         if(WSHU[7]!=ki7) {  if( WSHU[7]>ki7){ WSHU[7]--;}else{WSHU[7]++;}   }              
         if(WSHU[8]!=ki8) {  if( WSHU[8]>ki8){ WSHU[8]--;}else{WSHU[8]++;}   }
    delay(shu);
         c6=0;
        }

}
void jiao7(uint ki18,uint ki19,uchar shu)
{
   if( ((PSHU[9]==ki18)&&(WSHU[9]==ki19)  )==1)
        {
          c7=1;
        }else{
         if(PSHU[9]!=ki18) {  if( PSHU[9]>ki18){ PSHU[9]--;}else{PSHU[9]++;}   }
         if(WSHU[9]!=ki19) {  if( WSHU[9]>ki19){ WSHU[9]--;}else{WSHU[9]++;}   }              
         
    delay(shu);
         c7=0;
        }

}
void did1(uchar shu)
{

   while(MC!=0xff) {

   jiao1(kuan2,kuan2,kuan2, shu );
   jiao2(kuan2,kuan2,kuan2, shu  );
   jiao3(kuan2,kuan2,kuan2, shu  );

   jiao4(kuan2,kuan2,kuan2,  shu );
   jiao5(kuan2,kuan2,kuan2,  shu );
   jiao6(kuan2,kuan2,kuan2,  shu );

   }

   MC=0x00;
   c7=1;c8=1;
}
void did2(uchar shu)
{
  while(MC!=0xff) {
   jiao1(kuan1,kuan1,kuan1, shu );
   jiao2(kuan2,kuan2,kuan2, shu  );
   jiao3(kuan1,kuan1,kuan1, shu  );

   jiao4(kuan2,kuan2,kuan2,  shu );
   jiao5(kuan3,kuan3,kuan3,  shu );
   jiao6(kuan2,kuan2,kuan2,  shu );
   }

   MC=0x00;
   c7=1;c8=1;
}
void did3(uchar shu)
{

   while(MC!=0xff) {

   jiao1(1050,1050,1500,shu );
   jiao2(1050,1050,1500,shu  );
   jiao3(1050,1050,1500,shu  );

   jiao4(1950,1950,1500, shu );
   jiao5(1950,1950,1500, shu );
   jiao6(1950,1950,1500, shu );

   }

   MC=0x00;
   c7=1;c8=1;
}

void qian1(uchar shu)
{
           while(MC!=0xff) {
   jiao1(kuan1,kuan1,kuan13, shu );
   jiao2(kuan2,kuan2,kuan2, shu  );
   jiao3(kuan1,kuan1,kuan13, shu  );

   jiao4(kuan2,kuan2,kuan2,  shu );
   jiao5(kuan3,kuan3,kuan11,  shu );
   jiao6(kuan2,kuan2,kuan2,  shu );
   }

   MC=0x00;
   c7=1;c8=1;
   //2
           while(MC!=0xff) {
   jiao1(kuan2,kuan2,kuan13, shu );
   jiao2(kuan2,kuan2,kuan2, shu  );
   jiao3(kuan2,kuan2,kuan13, shu  );

   jiao4(kuan2,kuan2,kuan2,  shu );
   jiao5(kuan2,kuan2,kuan11,  shu );
   jiao6(kuan2,kuan2,kuan2,  shu );
   }

   MC=0x00;
   c7=1;c8=1;
    //3
           while(MC!=0xff) {
   jiao1(kuan2,kuan2,kuan13, shu );
   jiao2(kuan1,kuan1,kuan13, shu  );
   jiao3(kuan2,kuan2,kuan13, shu  );

   jiao4(kuan3,kuan3,kuan11,  shu );
   jiao5(kuan2,kuan2,kuan11,  shu );
   jiao6(kuan3,kuan3,kuan11,  shu );
   }

   MC=0x00;
   c7=1;c8=1;
   //4
           while(MC!=0xff) {
   jiao1(kuan2,kuan2,kuan2, shu );
   jiao2(kuan1,kuan1,kuan13, shu  );
   jiao3(kuan2,kuan2,kuan2, shu  );

   jiao4(kuan3,kuan3,kuan11,  shu );
   jiao5(kuan2,kuan2,kuan2,  shu );
   jiao6(kuan3,kuan3,kuan11,  shu );
   }

   MC=0x00;
   c7=1;c8=1;
        //5
           while(MC!=0xff) {
   jiao1(kuan2,kuan2,kuan2, shu );
   jiao2(kuan2,kuan2,kuan13, shu  );
   jiao3(kuan2,kuan2,kuan2, shu  );

   jiao4(kuan2,kuan2,kuan11,  shu );
   jiao5(kuan2,kuan2,kuan2,  shu );
   jiao6(kuan2,kuan2,kuan11,  shu );
   }

   MC=0x00;
   c7=1;c8=1;


}
void houz1(uchar shu)
{
        while(MC!=0xff) {
   jiao1(kuan1,kuan1,kuan11, shu );
   jiao2(kuan2,kuan2,kuan2, shu  );
   jiao3(kuan1,kuan1,kuan11, shu  );

   jiao4(kuan2,kuan2,kuan2,  shu );
   jiao5(kuan3,kuan3,kuan13,  shu );
   jiao6(kuan2,kuan2,kuan2,  shu );
   }

   MC=0x00;
   c7=1;c8=1;
   //2
        while(MC!=0xff) {
   jiao1(kuan2,kuan2,kuan11, shu );
   jiao2(kuan2,kuan2,kuan2, shu  );
   jiao3(kuan2,kuan2,kuan11, shu  );

   jiao4(kuan2,kuan2,kuan2,  shu );
   jiao5(kuan2,kuan2,kuan3,  shu );
   jiao6(kuan2,kuan2,kuan2,  shu );
   }

   MC=0x00;
   c7=1;c8=1;
   //3

        while(MC!=0xff) {
   jiao1(kuan2,kuan2,kuan11, shu );
   jiao2(kuan1,kuan1,kuan11, shu  );
   jiao3(kuan2,kuan2,kuan11, shu  );

   jiao4(kuan3,kuan3,kuan13,  shu );
   jiao5(kuan2,kuan2,kuan13,  shu );
   jiao6(kuan3,kuan3,kuan13,  shu );
   }

   MC=0x00;
   c7=1;c8=1;
        //4

        while(MC!=0xff) {
   jiao1(kuan2,kuan2,kuan2, shu );
   jiao2(kuan1,kuan1,kuan11, shu  );
   jiao3(kuan2,kuan2,kuan2, shu  );

   jiao4(kuan3,kuan3,kuan13,  shu );
   jiao5(kuan2,kuan2,kuan2,  shu );
   jiao6(kuan3,kuan3,kuan13,  shu );
   }

   MC=0x00;
   c7=1;c8=1;
                 //5

        while(MC!=0xff) {
   jiao1(kuan2,kuan2,kuan2, shu );
   jiao2(kuan2,kuan2,kuan11, shu  );
   jiao3(kuan2,kuan2,kuan2, shu  );

   jiao4(kuan2,kuan2,kuan13,  shu );
   jiao5(kuan2,kuan2,kuan2,  shu );
   jiao6(kuan2,kuan2,kuan13,  shu );
   }

   MC=0x00;
   c7=1;c8=1;

}
void zuozou(uchar shu)
{

          while(MC!=0xff) {
   jiao1(kuan3,kuan1,kuan13, shu );
   jiao2(kuan2,kuan2,kuan2, shu  );
   jiao3(kuan3,kuan1,kuan13, shu  );

   jiao4(kuan2,kuan2,kuan2,  shu );
   jiao5(kuan1,kuan3,kuan13,  shu );
   jiao6(kuan2,kuan2,kuan2,  shu );
   }

   MC=0x00;
   c7=1;c8=1;
   //2
          while(MC!=0xff) {
   jiao1(kuan2,kuan2,kuan13, shu );
   jiao2(kuan2,kuan2,kuan2, shu  );
   jiao3(kuan2,kuan2,kuan13, shu  );

   jiao4(kuan2,kuan2,kuan2,  shu );
   jiao5(kuan2,kuan2,kuan13,  shu );
   jiao6(kuan2,kuan2,kuan2,  shu );
   }

   MC=0x00;
   c7=1;c8=1;
    //3
          while(MC!=0xff) {
   jiao1(kuan2,kuan2,kuan13, shu );
   jiao2(kuan3,kuan1,kuan2, shu  );
   jiao3(kuan2,kuan2,kuan13, shu  );

   jiao4(kuan1,kuan3,kuan2,  shu );
   jiao5(kuan2,kuan2,kuan13,  shu );
   jiao6(kuan1,kuan3,kuan2,  shu );
   }

   MC=0x00;
   c7=1;c8=1;

  //4
          while(MC!=0xff) {
   jiao1(kuan2,kuan2,kuan2, shu );
   jiao2(kuan3,kuan1,kuan2, shu  );
   jiao3(kuan2,kuan2,kuan2, shu  );

   jiao4(kuan1,kuan3,kuan2,  shu );
   jiao5(kuan2,kuan2,kuan2,  shu );
   jiao6(kuan1,kuan3,kuan2,  shu );
   }

   MC=0x00;
   c7=1;c8=1;
   //5
          while(MC!=0xff) {
   jiao1(kuan2,kuan2,kuan2, shu );
   jiao2(kuan2,kuan2,kuan2, shu  );
   jiao3(kuan2,kuan2,kuan2, shu  );

   jiao4(kuan2,kuan2,kuan2,  shu );
   jiao5(kuan2,kuan2,kuan2,  shu );
   jiao6(kuan2,kuan2,kuan2,  shu );
   }

   MC=0x00;
   c7=1;c8=1;
}
void youzou(uchar shu)
{
        while(MC!=0xff) {
   jiao1(kuan3,kuan1,kuan11, shu );
   jiao2(kuan2,kuan2,kuan2, shu  );
   jiao3(kuan3,kuan1,kuan11, shu  );

   jiao4(kuan2,kuan2,kuan2,  shu );
   jiao5(kuan1,kuan3,kuan11,  shu );
   jiao6(kuan2,kuan2,kuan2,  shu );
   }

   MC=0x00;
   c7=1;c8=1;
   //2
          while(MC!=0xff) {
   jiao1(kuan2,kuan2,kuan11, shu );
   jiao2(kuan2,kuan2,kuan2, shu  );
   jiao3(kuan2,kuan2,kuan11, shu  );

   jiao4(kuan2,kuan2,kuan2,  shu );
   jiao5(kuan2,kuan2,kuan11,  shu );
   jiao6(kuan2,kuan2,kuan2,  shu );
   }

   MC=0x00;
   c7=1;c8=1;
    //3
          while(MC!=0xff) {
   jiao1(kuan2,kuan2,kuan11, shu );
   jiao2(kuan3,kuan1,kuan2, shu  );
   jiao3(kuan2,kuan2,kuan11, shu  );

   jiao4(kuan1,kuan3,kuan2,  shu );
   jiao5(kuan2,kuan2,kuan11,  shu );
   jiao6(kuan1,kuan3,kuan2,  shu );
   }

   MC=0x00;
   c7=1;c8=1;

  //4
          while(MC!=0xff) {
   jiao1(kuan2,kuan2,kuan2, shu );
   jiao2(kuan3,kuan1,kuan2, shu  );
   jiao3(kuan2,kuan2,kuan2, shu  );

   jiao4(kuan1,kuan3,kuan2,  shu );
   jiao5(kuan2,kuan2,kuan2,  shu );
   jiao6(kuan1,kuan3,kuan2,  shu );
   }

   MC=0x00;
   c7=1;c8=1;
   //5
          while(MC!=0xff) {
   jiao1(kuan2,kuan2,kuan2, shu );
   jiao2(kuan2,kuan2,kuan2, shu  );
   jiao3(kuan2,kuan2,kuan2, shu  );

   jiao4(kuan2,kuan2,kuan2,  shu );
   jiao5(kuan2,kuan2,kuan2,  shu );
   jiao6(kuan2,kuan2,kuan2,  shu );
   }

   MC=0x00;
   c7=1;c8=1;
}




  void shin1(uchar shu)
{

        while(MC!=0xff) {

   jiao1(1000,700,1500, shu );
   jiao2(1500,1500,1500, shu  );
   jiao3(1000,700,1200, shu  );

   jiao4(1500,1500,1500,  shu );
   jiao5(2000,2400,1800,  shu );
   jiao6(1500,1500,1500,  shu );

   }

   MC=0x00;
   c7=1;c8=1;
                         
while(MC!=0xff) {

   jiao1(1000,1600,1500, shu );
   jiao2(1500,1500,1500, shu  );
   jiao3(1000,1600,1200, shu  );

   jiao4(1500,1500,1500,  shu );
   jiao5(2000,1400,1800,  shu );
   jiao6(1500,1500,1500,  shu );

   }

   MC=0x00;
   c7=1;c8=1;
    while(MC!=0xff) {

   jiao1(1900,1700,1300, shu );
   jiao2(1500,1100,1500, shu  );
   jiao3(1700,1700,1300, shu  );

   jiao4(1500,2000,1300,  shu );
   jiao5(1000,1200,1500,  shu );
   jiao6(1500,2000,1300,  shu );

   }

   MC=0x00;
   c7=1;c8=1;

     while(MC!=0xff) {

   jiao1(1500,1500,1400, shu );
   jiao2(1500,1100,1300, shu  );
   jiao3(1500,1500,1400, shu  );

   jiao4(1500,2000,1600,  shu );
   jiao5(1500,1500,1600,  shu );
   jiao6(1500,2000,1500,  shu );

   }

   MC=0x00;
   c7=1;c8=1;

         while(MC!=0xff) {

   jiao1(1500,1500,1400, shu );
   jiao2(1500,1600,1300, shu  );
   jiao3(1500,1500,1400, shu  );

   jiao4(1600,1400,1600,  shu );
   jiao5(1500,1500,1600,  shu );
   jiao6(1200,1400,1500,  shu );

   }

   MC=0x00;
   c7=1;c8=1;

         while(MC!=0xff) {

   jiao1(1500,1000,1400, shu );
   jiao2(1500,1600,1300, shu  );
   jiao3(1500,1000,1400, shu  );

   jiao4(1600,1400,1600,  shu );
   jiao5(1500,1900,1600,  shu );
   jiao6(1200,1400,1500,  shu );

   }

   MC=0x00;
   c7=1;c8=1;

    while(MC!=0xff) {

   jiao1(1500,1000,1400, shu );
   jiao2(1500,1600,1300, shu  );
   jiao3(1500,1000,1400, shu  );

   jiao4(1600,1400,1600,  shu );
   jiao5(1500,1900,1600,  shu );
   jiao6(1200,1400,1500,  shu );

   }

   MC=0x00;
   c7=1;c8=1;


   }
void SHUZa(void)
{  

    while(!RI);        RI=0; XVB2=SBUF;  

       
}

void shudu(void)
{  
    while(!RI);        RI=0; PSHU[21]=SBUF;           
}

void kuadu(void)
{  

    while(!RI);        RI=0;
         kuan11=kuan11-SBUF;  
            kuan13=kuan13+SBUF;
       
}
void kuadu2(void)
{  

    while(!RI);        RI=0;
         kuan11=kuan11+SBUF;  
            kuan13=kuan13-SBUF;
       
}
void pkwd(unsigned char q)


   {
          switch(q)
      {
   case 0: kaix=0; break;
   case 1: kaix=0,did2(20); break;
   case 2: kaix=0,did3(20); break;
   case 3:   kaix=1  ;break;
   case 4:   kaix=2;break;
   case 5:        kaix=0;break;
   case 6: kaix=3; break;
   case 7:kaix=4; break;

   case 10: kaix=0,SHUZa();break;
   case 11:kaix=5; break;
   case 0x7d: kaix=0,kuadu2(); break;
   case 0x7e: kaix=0,kuadu(); break;
   case 0x7f: kaix=0,shudu();  break;
   case 0xf1: kaix=0,SHUZI();  break;
   case 0xf2: kaix=0,did1(20);  break;
   case 0xf3: kaix=0,WHUZI();  break;
    case 0xf4: kaix=0,yunxin();  break;
   default: ;break;
           }

}
void cocli(void)
{


                   if(RI)
    {

          
        RI=0;
        pkwd(SBUF);
    // SendOneByte(SBUF);
          

    }
    else
        TI = 0;



}


void main()
{  

MC=0x00;
c7=1;
c8=1;
PSHU[21]=45;
  PSHU[22]=200;
  PSHU[23]=200;
PSHU[10]=0;
  WSHU[10]=0;
pwmat=0;
did1(1);
   UartInit();                
   InitTimer();
        SendOneByte(0x01);
   skwb(pwmst);
        TR0=1;
   skwx(pwmat);
        TR1=1;
  did1(30);
// did1();
while(1)
{
        if(kaix==1){
          qian1(PSHU[21]);
         }
                if(kaix==2)
        {         SendOneByte(0x03);
          houz1(PSHU[21]);
        }

                if(kaix==3)
        {
         zuozou(PSHU[21]);
        }
                if(kaix==4)
        {
         youzou(PSHU[21]);
        }

         if(kaix==5)
         {
         shin1(PSHU[21]);

         }

  // jiao1(2000,2000,2000, 20 );
    //delay(200);         delay(200);  delay(200);   delay(200);         delay(200);
   cocli();
   }
}



void timer0(void) interrupt 1//定时器0中断函数
{
       
    TR0=0;
        skwc(pwmst);
         if( PSHU[pwmst]>2000) {
         cans=PSHU[pwmst]+cans-2000;
         } else{  
         
         chai =chai+(2000- PSHU[pwmst]);

         }
         if(pwmst==9) {  
          if(chai>=cans){ chai=chai-cans;  }else{  chai=0;}
         
         PSHU[10]=chai;
         
          }


        pwmst++;
        if(pwmst>10){ chai=0; pwmst=0;cans=0;        }
        pwm_value= PSHU[pwmst];
        TH0=-pwm_value/256;
        TL0=-pwm_value%256;
        skwb(pwmst);

        TR0=1;

}
void timer1(void) interrupt 3//定时器1中断函数
{       
    TR1=0;
        skwz(pwmat);
         if( WSHU[pwmat]>2000) {
         canb=WSHU[pwmat]+canb-2000;
         } else{           
                chaa =chaa+(2000- WSHU[pwmat]);
         }
         if(pwmst==9) {  
         if(chai>=cans){ chaa=chaa-cans;  }else{  chaa=0;}         
         WSHU[10]=chaa;
         
          }
        pwmat++;
        if(pwmat>10){ chaa=0; pwmat=0;canb=0;        }
        pwm_value= WSHU[pwmat];
        TH1=-pwm_value/256;
        TL1=-pwm_value%256;
        skwx(pwmat);
        TR1=1;

}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2018-10-8 02:01 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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