找回密码
 立即注册

QQ登录

只需一步,快速开始

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

四轮寻迹小车 PWM调速程序

[复制链接]
跳转到指定楼层
楼主
ID:243513 发表于 2017-10-28 22:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <stc12c5a.H>
void PWM_init();
void ys (uint x);

sbit q1=P0^0;      
sbit q2=P0^1;

sbit z2=P2^0;
sbit z1=P2^1;                 
sbit y1=P2^2;                 
sbit y2=P2^3;
sbit zj=P2^4;

void qian()
{
q1=1;q2=1;
CCAP0H = 70;
}

void zuo()
{
q1=1;q2=0;
CCAP0H = 130;

}

void you()
{
q1=0;q2=1;
CCAP0H = 130;

}


void main ()
{
PWM_init();
  while(1)
  {
  qian();

  if(z1==1&&y1==0)
    {
     zuo();
     while(zj==0);
         qian();
    }

  if(z2==1&&y1==0)
    {
     zuo();
     while(zj==0);
         qian();
    }
  if(y1==1&&z1==0)
    {
     you();
     while(zj==0);
         qian();
    }
  if(y2==1&&z1==0)
    {
     you();
     while(zj==0);
         qian();
    }
  if(z1==1&&zj==1&&y1==1)
    {
     qian();
    }
  }
}

void ys (uint x)   
{
    uint a,b,c;
    for(c=x;c>0;c--)
        for(b=142;b>0;b--)
            for(a=2;a>0;a--);
}


void PWM_init()
{
        CCON=0X00;                //CF中断标志位为0 CR运行控制位清零 CCF1 CCF2模块中断标志位为0
        CMOD=0x02;                //CIDL在空闲状态下继续工作  时钟源选择系统时钟/2  ECF计数器中断溢出使能位 0
        CCAPM0=0X42;                //模式选择位0
        CCAPM1=0X42;            //模式选择位1
        CL=CH=0;                //PWM内的计数器高低位TH0 TL0
        CR=1;                        //运行控制位 打开PWM
}

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

使用道具 举报

沙发
ID:241224 发表于 2017-10-30 13:02 | 只看该作者
来看看,学习学习
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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