智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1292|回复: 0
打印 上一主题 下一主题

[光电] 怎么通过程序确定PA口各连接什么?我用的是两个舵机和四个光电对管

[复制链接]

1

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
19
威望
14
贡献
5
兑换币
4
注册时间
2012-12-20
在线时间
0 小时
毕业学校
中国矿业大学
跳转到指定楼层
1#
发表于 2012-12-20 14:21:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献

  //头文件包含
  #include "Includes.h"                             //总头文件
  
  #define rightspeed 1675
  #define leftspeed  1300
  #define you_leftturn 1700
  #define zuo_leftturn 1700
  #define you_rightturn 1300
  #define zuo_rightturn 1300
  
  //uint8 msg[14] = "Hello! World!";
  uint8 PA0,PA1,PA2,PA3,PA4,PA5;
  void PWM_Init(void)                               //PWM通道初始化
  {  
      PWME_PWME3=0x00;  // Disable  PWM             禁止   
      PWMCTL_CON23=1;   //PWM通道2和通道3合并       通道合并
      PWMPRCLK=0x33;    // 0011 0011 A=B=32M/8=4M   时钟预分频寄存器设置
      PWMSCLB=2;        // SB=B/2/2 =1M             时钟设置                     
      PWMCLK_PCLK3=1;   // PWM3-----SB              时钟源的选择
      PWMPOL_PPOL3=1;   // Duty=High Time           极性设置
      PWMCAE_CAE3=0;    // Left-aligned             对齐方式设置
      PWMPER23=20000;   // Frequency=SB/20000=50HZ  周期寄存器设置
      PWMDTY23=1500;    // 1.5ms对应的占空比        占空比寄存器设置
      PWME_PWME3=1;     // Enable  PWM              使能
      
        
      PWME_PWME1=0x00;  // Disable  PWM             禁止   
      PWMCTL_CON01=1;   //PWM通道0和通道1合并       通道合并
      PWMPRCLK=0x33;    // 0011 0011 A=B=32M/8=4M   时钟预分频寄存器设置
      PWMSCLA=2;        // SA=A/2/2=1M              时钟设置
      PWMCLK_PCLK1=1;   // PWM3-----SA              时钟源的选择
      PWMPOL_PPOL1=1;   // Duty=High Time           极性设置
      PWMCAE_CAE1=0;    // Left-aligned             对齐方式设置
      PWMPER01=20000;   // Frequency=SB/20000=50HZ  周期寄存器设置
      PWMDTY01=1500;    // 1.5ms对应的占空比        占空比寄存器设置
      PWME_PWME1=1;     // Enable  PWM              使能   
  }
  
    void countrun(uint16 num)
  {
    DisableInterrupt();
    PWMDTY23=rightspeed;                     //位移可调前行,用于前冲一段
    PWMDTY01=leftspeed;
    Delay(num);
    EnableInterrupt();
  }
  
  void streightrun(void)
  {
    PWMDTY23=rightspeed;                     //前进
    PWMDTY01=leftspeed;  
  }
  
  void lefttrunone(void)
  {
    DisableInterrupt();
    PWMDTY23=you_leftturn;                    //左转45
    PWMDTY01=zuo_leftturn;
    Delay(2690);
    EnableInterrupt();
  }
  
  void lefttruntwo(void)
  {
    DisableInterrupt();
    PWMDTY23=you_leftturn;                    //左转90
    PWMDTY01=zuo_leftturn;
    Delay(5350);
    EnableInterrupt();
  }
  
  void lefttrunthree(void)
  {
    DisableInterrupt();
    PWMDTY23=you_leftturn;                    //左转135
    PWMDTY01=zuo_leftturn;
    Delay(8030);
    EnableInterrupt();
  }
  
  void righttrunone(void)
  {
    DisableInterrupt();
    PWMDTY23=you_rightturn;                    //右转45
    PWMDTY01=zuo_rightturn;
    Delay(2480);
    EnableInterrupt();
  }
  
  void righttruntwo(void)
  {
    DisableInterrupt();
    PWMDTY23=you_rightturn;                    //右转90
    PWMDTY01=zuo_rightturn;
    Delay(4940);
    EnableInterrupt();
  }
  
  void righttrunthree(void)
  {
    DisableInterrupt();
    PWMDTY23=you_rightturn;                    //右转135
    PWMDTY01=zuo_rightturn;
    Delay(7450);
    EnableInterrupt();
  }
  
  void trunback(void)
  {
    DisableInterrupt();
    PWMDTY23=you_leftturn;                    //后转
    PWMDTY01=zuo_leftturn;
    Delay(10700);
    EnableInterrupt();
  }
  
  void stop(void)
  {
   DisableInterrupt();                        //停止
   PWMDTY23=1500;
   PWMDTY01=1500;
   EnableInterrupt();
  }
   
  
  void main()
  {
      
    //0.1 关总中断
    DisableInterrupt();      
    //0.2 芯片初始化
    MCUInit(FBUS_32M);
    //0.3 模块初始化
    GPIO_Init(PA,0,0,0);                            //端口A初始化为输入
    GPIO_Init(PA,1,0,0);  
    GPIO_Init(PA,2,0,0);  
    //GPIO_Init(PA,3,0,0);
   // GPIO_Init(PA,4,0,0);
    //GPIO_Init(PA,5,0,0);
    PITInit0();                                      //(1)定时器1初始化     
    SCIInit(0,FBUS_32M,9600);                        //串口0初始化
    PWM_Init();
   // SCISendN(0,13,msg);                             //发送"Hello! World!"
    //0.4 开放中断
    EnablePIT0;                                    //(2)开放定时器1溢出中断
    EnableInterrupt();                              //开放总中断
    streightrun();
    while(1);   
  }






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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-20 19:40 , Processed in 0.097778 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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