找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2302|回复: 1
收起左侧

STC8单片机-循迹小车软件驱动PWM源码

[复制链接]
ID:382440 发表于 2018-8-3 10:23 | 显示全部楼层 |阅读模式
#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();
               
        }
}


回复

使用道具 举报

ID:1 发表于 2018-8-3 15:44 | 显示全部楼层
原理图能分享下吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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