找回密码
 立即注册

QQ登录

只需一步,快速开始

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

MSP430单片的寻迹小车程序(输出两路PWM波)

[复制链接]
跳转到指定楼层
楼主
ID:305225 发表于 2019-8-9 17:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
源码
  1. #include "msp430x14x.h"
  2. #include "Keypad.h"
  3. void turnright1(void);
  4. void turnleft1(void);
  5. void round(void);
  6. void line(void);
  7. void main(void)
  8. {
  9.   WDTCTL = WDTPW + WDTHOLD;
  10.   int i;
  11. P6DIR |= BIT2;P6OUT &= ~BIT2;   //打开电平转换
  12.   P2DIR |=BIT3+BIT0;P2OUT &= ~BIT3;
  13.   P2OUT |=BIT0;
  14.   P3DIR |=0X11;
  15.   P3OUT |=0X10;
  16.   P3OUT &=~ BIT0;
  17.   P4DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4);
  18.   P5DIR |=0XFF;
  19.   P5OUT =0X51;
  20.   P5OUT &=~ BIT1;
  21.   for(i=0;i<2000;i++);
  22.   CCR0=512-1;
  23.   CCR1=462;
  24.   CCR2=50;
  25.   CCTL0=CCIE;
  26.   CCTL1=CCIE;
  27.   CCTL2=CCIE;
  28.   _EINT();
  29.   TACTL|=TASSEL_1+MC_3;
  30.   while(1)
  31.   {
  32.     switch((P4IN & 0X1f))
  33.     {  
  34.     case 7: turnleft1();
  35.             break;
  36.     case 15: turnleft1();
  37.             break;
  38.       
  39.     case 23:turnleft1();
  40.            break;
  41.     case 28: turnright1();
  42.            break;
  43.     case 29:turnright1();
  44.            break;
  45.     case 30:turnright1();
  46.            break;
  47.     case 19:  line();
  48.              break;
  49.     case 25:  line();
  50.              break;
  51.     case 27:  line();
  52.              break;
  53.    
  54.     case 31: round();
  55.             break;
  56.      }
  57.         
  58.    
  59.    }
  60. }
  61. #pragma vector=TIMERA1_VECTOR
  62. __interrupt void timer_A1(void)
  63. {   //_EINT();
  64.   switch(TAIV)
  65.   {case 2:  
  66.           P5OUT ^=0X01;         
  67.           break;
  68.   case 4:
  69.       P5OUT ^=0X02;  
  70.           break;
  71.    }
  72. }
  73. #pragma vector=TIMERA0_VECTOR
  74. __interrupt void timer_A0(void)
  75. { P5OUT |=BIT0;
  76.   P5OUT &=~ BIT1;
  77. }
  78. void turnright1(void)
  79. { P5OUT &=~ (BIT4+BIT5+BIT7);
  80.   P5OUT |=BIT6;
  81.   //CCR1=470;
  82.   //CCR2=5;
  83. }
  84. /*void turnright2(void)
  85. {
  86.   CCR1=470;
  87.   CCR2=0;
  88. }*/
  89. void turnleft1(void)
  90. { P5OUT &=~ (BIT5+BIT6+BIT7);
  91.   P5OUT |=BIT4;;
  92.   
  93.   //CCR1=500;
  94.   //CCR2=45;
  95. }
  96. void round(void)
  97. { P5OUT &=~ (BIT5+BIT6+BIT7);
  98.   P5OUT |=BIT4;
  99.   //CCR1=470;
  100.   //CCR2=5;
  101. }
  102. void line(void)
  103. { P5OUT &=~ (BIT5+BIT7);
  104.   P5OUT |= BIT4+BIT6;
  105. }
复制代码


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

使用道具 举报

沙发
ID:1 发表于 2019-8-9 18:14 | 只看该作者
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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