标题: STC8单片机-循迹小车软件驱动PWM源码 [打印本页]

作者: 小江loopone    时间: 2018-8-3 10:23
标题: STC8单片机-循迹小车软件驱动PWM源码
#include <stc8.h>
sbit IN4 = P0^0;
sbit IN3 = P0^1;
sbit ENB = P2^1;
sbit IN2 = P0^2;
sbit IN1 = P0^3;
sbit ENA = P2^2;
sbit IN4h = P0^4;
sbit IN3h = P0^5;
sbit ENBh = P1^6;
sbit IN2h = P0^6;
sbit IN1h = P0^7;
sbit ENAh = P1^7;

sbit left0 = P3^2;
sbit right0 = P3^3;

unsigned char zkb0 = 0;
unsigned char zkb1 = 0;
unsigned char t = 0;

void Init()
{
    P0M1 = 0x00;
          P0M0 = 0xff;
          P1M1 = 0x00;
          P1M0 = 0xc0;
    P2M1 = 0x00;
          P2M0 = 0x06;
          P3M1 = 0x0c;
          P3M0 = 0x00;  //配置对应I/o口的工作方式
        
          IP &=~0x08;
    IPH &=~0x08;
          TMOD |= 0x00;//将定时器0配置成模式0,优先级(00)最低
          TH0 =(65536-100)/256;
          TL0 =(65536-100)%256;
          ET0 =1;
          EA =1;
          TR0 =1;
}

void timer0() interrupt 1
{
   if(t< zkb0)
         {
             if(t%2==0)
                         {
                           ENB =1;
                                 ENBh =1;
                         }
                         else
                         {
                           ENB =0;
                                 ENBh=0;
                         }
              ENB =1;
                          ENBh =1;
         
         }
         else
         {
            ENB =0;
            ENBh =0;
         }
         if(t<zkb1)
         {
                if(t%2==0)
                                        {
                                                        ENA =1;
                                                        ENAh =1;
                                        }
                                        else
                                        {
                                        ENA =0;
                                  ENAh =0;
                                        }
                                        ENA =1;
                                        ENAh =1;
         }
         else
         {
               ENA =0;
                     ENAh =0;
         }
           ++t;
         if(t>=50)
         {
            t=0;
         }
                 

}

void turn_left0()
{
   zkb0 =13;
   zkb1 =0;        
}
void turn_right0()
{
   zkb0 =0;
         zkb1 =13;

}
void runing()
{
    zkb0=8;
          zkb1=8;

}

void xunji()
{
                        unsigned char flag;
                                if((right0 == 0)&&(left0 == 0))
                                {
                                        flag = 0;
                                }
                                if((right0 == 1)&&(left0 == 0))
                                {
                                        flag = 1;
                                }
                                if((right0 == 0)&&(left0 == 1))
                                {
                                        flag = 2;
                                }
                                switch(flag)
                                {
                                        case 0:runing();break;
                                       
                                        case 1:turn_right0();break;
                                       
                                        case 2:turn_left0();break;
                                
                                        default:runing();break;
        }

}
void main()
{
        Init();
        IN1 = 0;
        IN2 = 1;
  IN3 = 0;
  IN4 = 1;
        IN1h = 0;
        IN2h = 1;
  IN3h = 0;
  IN4h = 1;
        while(1)
        {
                        
                        xunji();
               
        }
}



作者: admin    时间: 2018-8-3 15:44
原理图能分享下吗?





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