標(biāo)題: msp430f149單片機(jī)板式倒立擺控制裝置項(xiàng) 源程序 [打印本頁]

作者: 1425879    時(shí)間: 2020-1-1 12:17
標(biāo)題: msp430f149單片機(jī)板式倒立擺控制裝置項(xiàng) 源程序
msp430f149開發(fā)板  板式倒立擺控制裝置  部分參考代碼

單片機(jī)源程序如下:
  1. #include <msp430x14x.h>
  2. #include <math.h>
  3. #include "cry128.c"
  4. #include "PWM.c"

  5. #define  RISE  1
  6. #define  FALL  0



  7. void main()
  8. {
  9.   
  10.   /*下面六行程序關(guān)閉所有的IO口*/
  11.     P1DIR = 0XFF;P1OUT = 0XFF;
  12.     P2DIR = 0XFF;P2OUT = 0XFF;
  13.     P3DIR = 0XFF;P3OUT = 0XFF;
  14.     P4DIR = 0XFF;P4OUT = 0XFF;
  15.     P5DIR = 0XFF;P5OUT = 0XFF;
  16.     P6DIR = 0XFF;P6OUT = 0XFF;
  17.   
  18.    WDTCTL = WDTPW + WDTHOLD;//停狗
  19.    
  20.    init_IO();            //初始化
  21.    Init_Lcd();            //初始化12864  
  22.    init_timerA();         //初始化定時(shí)器A
  23.    TACCTL1 |= CAP+CM_1+CCIS_0+SCS+CCIE;//改為上升沿捕獲
  24.    _EINT();     //中斷允許
  25.    
  26.    // int_clk();
  27.     P4DIR |= BIT2;   //P4.2輸出,
  28.     P4SEL |= BIT2;   //選擇第二功能輸出PWM
  29.     TBCCR0 = 10000;
  30.     TBCTL = CNTL_0 + TBSSEL_2 + MC_1; //計(jì)數(shù)長度16位,最大值為0ffffh
  31.                                        //MCLK時(shí)鐘源,增計(jì)數(shù)模式
  32.    
  33. /*  P1IE |= BIT0+BIT1;//IO口使能中斷
  34.      P1IES |= BIT0 + BIT1;//IO口邊沿觸發(fā)中斷方式設(shè)置
  35.      P1IFG &=~ (BIT0+BIT1);//IO口中斷標(biāo)志位清除
  36.      _EINT(); //中斷允許
  37.      LPM4;
  38. */   

  39.   while(1)
  40.   {
  41.    // key();
  42.     P1OUT |= BIT3;
  43.     Delay_Nms(10);
  44.     P1OUT &=~BIT3;
  45.     Delay_Nms(80);
  46.     display_juli();
  47.     Disp_HZ(0x94,disbuff,2);   //LCD數(shù)據(jù)顯示   
  48.    
  49.    
  50.    
  51.   }

  52.   
  53. }

  54. //定時(shí)器A服務(wù)程序
  55. #pragma vector=TIMERA1_VECTOR
  56. __interrupt void Timer_A(void)
  57. {

  58.   switch(TAIV)    //TIMEA定時(shí)器 TAIV中斷向量寄存器
  59.   {
  60.     case 2 :if(Edge==RISE)   //Edge==1
  61.               {
  62.                 RiseCapVal = TACCR1;    //上升沿時(shí)刻捕獲值存放變量 = TACCR1
  63.                 TACCTL1 |= CAP+CM_2+CCIS_0+SCS+CCIE;//改為下降沿捕獲
  64.                 //TACCTL1 |= CAP+CM_1+CCIS_0+SCS+CCIE;//改為上升沿捕獲
  65.                 Edge = FALL;//Edge==0 下降沿捕獲標(biāo)志
  66.               }
  67.              else
  68.               {
  69.                
  70.                 _DINT();    //退出中斷
  71.             
  72.                 Period = TACCR1-RiseCapVal;  //脈寬存放結(jié)果變量
  73.                 S=(Period*17)/10;//距離計(jì)算S=340m/s*Period/2*10^(-6)*1000 (mm)
  74.               //  S=S*10;
  75.                 angle=S*S*18.0/100000.0-S*28.0/100.0+35.0;  
  76.             
  77.                 TACCR1 = 0;
  78.                 TACCTL1|= CAP+CM_1+CCIS_0+SCS+CCIE;//改為上升沿捕獲
  79.                 Edge = RISE;  //Edge=1 上升沿捕獲標(biāo)志  
  80.                 _EINT();
  81.               }
  82.              break;
  83.     case 4 : break;
  84.     case 10: TA_Overflow_Cnt++;break;
  85.   }   
  86. }


  87. /*************添加中斷******************/
  88. /*
  89. #pragma vector=PORT1_VECTOR
  90. __interrupt void Key(void)
  91. {

  92.    key();
  93.   
  94. }
  95. */
復(fù)制代碼

所有資料51hei提供下載:
總程序.zip (77.07 KB, 下載次數(shù): 7)



作者: admin    時(shí)間: 2020-1-1 20:50
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1