亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? 結合飛思卡爾16位單片機MC9S12DG128B完成小車自動尋跡
?? C
?? 第 1 頁 / 共 2 頁
字號:
  /*
   *********************************************************************************
   *
   * 工程名稱:SmartCar 
   * 
   * 功能描述:結合飛思卡爾16位單片機MC9S12DG128B完成小車自動尋跡,沿黑線行駛功能 
   * 
   *           IDE環境: Metrowerks CodeWarrior 4.1
   * 
   * 組成文件: main.c 
   *            
   *            SmartCar.c/PID.c/LCD1620.c/Test.c 
   * 
   * 說明:    本版本為智能小車程序早期版本,還有待更進一步完善 
   * 
   * 日期:    2006-5-6 
   *
   *      (c) Copyright 2006,Zhao Cheng 
   *  
   *      All Rights Reserved 
   *
   *      By : Zhao Cheng
   **********************************************************************************/
  
  
   /* ********************************************************************************
   ** 
   *                                
   *                                main.c                                           * 
   *       
   *       (c) Copyright 2006,Zhao Cheng
   *     
   *       All Rights Reserved * 
   *      
   *       By : Zhao Cheng 
   ******************************************************************/
    #include <hidef.h>                              /* common defines and macros */ 
    #include <mc9s12dg128.h>                        /* derivative information */
    #pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
    
   
    #define HIGHSPEED 11500                         /* 速度參量,此處未使用測速模塊 */ 
    #define LOWSPEED0 12500                         /* 0-24000 數值越大,速度越慢 */ 
    #define LOWSPEED1 12000                         /* used in CarMain() */
    #define STABMAX 50 
    #define StopCar() PORTK |= 0x80                 /* stop the motor */ 
    #define StartCar() PORTK |= 0x04                /* start the motor */ 
    #define BrakeCar() PORTK &= 0xfb                /* slow the speed of the SmartCar */ 
   
     unsigned int SYSCLOCK=0;                        /* update in INT_Timer0() */ 
   /* *********************************************************************************** 
    *
    *
    *                               FUNCTION PROTOTYPES 
    **********************************************************************************/
    
    /*                              write in "SmartCar.c"                            */
    void Init_INT_RTI(void);                        /* initiate Real Time Interrupt */ 
    void Init_INT_Timer(void);                      /* INT_Timer0 initiate */ 
    void Init_PWMout(void);                         /* initiate PWM output */ 
    void PWMout(int, int);                          /* output PWM */
    
    /*                              write in "PID.c"                                  */ 
    void Init_PID(void);                            /* initiate PID parameter */ 
    int CalculateP(void);                           /* calculate parameter P */ 
    float CalculatePID(void);                       /* calculate PID */ 
    int SignalProcess(unsigned char);               /* Process the signal from the sensors */
    
    /*                              write in "Test.c"                                 */ 
    void IOtest(void);                              /* Test I/O */ 
    void PWMtest(void);                             /* Test PWM output */ 
   void SignalTest(void);                           /* Test the sensors */
    
   /*                               write in local file                                */ 
   void Init(void);                                 /* initiate parameter */ 
   void ProtectMoto(void);                          /* the function protecting the Motor */ 
   void CarMain(void);                              /* SmartCar main function */ 
   
   /* *********************************************************************************** 
   * 
   *                     
   *                                           主程序 
   * 
   *    程序描述: 完成智能小車系統的初始化,通過按鍵可選擇工作模式,有I/O測試,PWM 輸出測試 
   *   
   *              傳感器測試,以及小車正常工作模式 
   *    
   *    硬件連接: PORTB 接傳感器  ;   
   *              
   *              PWM 輸出口 (1)接舵機 (2)接電機驅動芯片MC33886 
   *    說明:    無
   **********************************************************************************/
   
   void main(void) 
      { 
          Init(); 
          DDRB = 0x00; 
          switch(PORTB)
              { 
                 case 0x80: 
                            IOtest(); 
                            break; 
               
                 case 0x40: 
                            PWMtest(); 
                            break; 
                 case 0x20:  
                            SignalTest(); 
                            break; 
                 default: 
                            DDRA = 0x00; 
                            DDRB = 0xff; 
                            DDRK = 0xff; 
                            PORTB = 0xff; 
                            CarMain(); 
                 EnableInterrupts; 
                            for(;;); 
                            break; 
               }
      }
      
   /* 
    *********************************************************************************** 
    *
    *
    *                         小車尋跡行駛函數                                        
    * 
    *
    *    程序描述: 通過傳感器采集數據,并對其進行處理,通過PID算法得出小車穩定行駛所需的參數,
    *
    *              而調用PWM輸出函數 控制舵機與電機的工作 
    * 
    *    注意: 這個函數調用了 SignalProcess(unsigned char),BrakeCar(),PWMout(Direction, Velocity)
    *
    *    說明: 無 
    **********************************************************************************/   
    
    void CarMain(void) 
      { 
          static int Direction=0, Velocity; 
          static unsigned char signal; 
          static unsigned int BrakeTime = 0, BrakeControl = 0; 
          static unsigned int Stability=0, Stab[STABMAX], PStab=0, StabAver; 
          int i; 
          signal = PORTA; 
          PORTB = ~signal; 
          Direction = SignalProcess( signal ); /* 穩定性系數的計算 */ 
          Stability -= Stab[PStab]; 
          Stab[PStab] = (unsigned int)Direction/100; 
          Stability += Stab[PStab]; 
          PStab++; 
             if(PStab >= STABMAX) 
                 PStab=0; StabAver = 0; 
                  for(i=0;i<STABMAX;i++) 
                     { 
                       if(Stability > Stab[i]) 
                           StabAver += Stability - Stab[i]; 
                       else 
                           StabAver += Stab[i] - Stability; 
                      } 
             if( BrakeTime != 0) 
               
                { 
                     BrakeTime--; 
                     BrakeCar(); 
                 }
             else 
                { 
                      StartCar(); 
                         if(BrakeControl>0) 
                             BrakeControl--; 
                         if(Direction < -4000 || Direction > 4000 ) 
                             { 
                                Velocity = LOWSPEED0;
                                 if(BrakeControl == 0 && StabAver/STABMAX<22) 
                                   { 
                                       BrakeTime = 20; 
                                       BrakeControl = 120; 
                                    } 
                             } 
                         else 
                             { 
                                if(Direction < -2500 || Direction > 2500 ) 
                                                      
                                                        Velocity = LOWSPEED1; 
                                else 
                                                        Velocity = HIGHSPEED; 
                              }
                   
                } 
          
          PWMout(Direction, Velocity); 
      }
      
     /* *********************************************************************************
      *
      * 
      *                             系統初始化函數 
      * 
      * 程序描述: 初始化了系統時鐘,FLASH 和 EEPRO的工作頻率,PWM輸出口,定時器,
      *           
      *           以及PID算法中的有關參數 
      * 
      * 注意: 這個函數調用了 Init_PWMout()nit_INT_Timer()nit_PID()   
      * 
      * 說明: 無 
      **********************************************************************************/ 
      
      void Init(void) 
           { 
                REFDV=0x01;                       /* initiate PLL clock */ 
                SYNR =0x02;                       /* system clock 24M */ 
                while (!(CRGFLG & 0x08)){}        /* wait untill steady */ 
                CLKSEL=0x80;                      /* 選定所相環時鐘 */ 
                FCLKDIV=0x49;                     /* 使FLASH 和 EEPROM的擦除操作工作頻率在200HZ左右 */ 
                ECLKDIV=0x49; 
                Init_PWMout();                    /* 01:50Hz 45:1kHz */ 
                Init_INT_Timer();                 /* initiate ETC(Enhanced Capture Clock) */ 
                Init_PID();                       /* initiate PID caculating process */ 
                DDRK |= 0x80;                     /* Start Car -- stop car */ 
                PORTK &= 0x7F; 
           }
      
     /* *********************************************************************************
      *
      * 
      *                               SmartCar.c 
      *
      *          (c) Copyright 2006,Zhao Cheng 
      *          
      *          All Rights Reserved 
      * 
      *          By : Zhao Cheng 
      *          
      *          Data : 2006_5_6 
      *          
      *          Note : Don't change this file if possible. 
      **********************************************************************************/     
               #include <hidef.h> 
               #include <mc9s12dg128.h> 
               extern unsigned int SYSCLOCK;                   /* 引用全局變量,系統時鐘 */ 
               void CarMain(void); 
               
      /* *********************************************************************************
      *
      * 
      *                             PWM初始化函數 
      * 
      **********************************************************************************/         
                                
       void Init_PWMout(void) 
             { PWME = 0x22;                         /*01:50Hz 45:1kHz */ 
               PWMPOL = 0x22; 
               PWMCTL = 0x50; 
               PWMCLK = 0x02; 
               PWMSCLA = 4; 
             }
      /* *********************************************************************************
       *
       * 
       *                                 PWM輸出函數 
       * 
       *  程序描述:輸入參數為方向,速度 
       * 
       *  方向:-45~45 
       *
       * 速度:0~24000 
       **********************************************************************************/ 
         void PWMout(int Direction, int Velocity) 
              { 
                  Direction = Direction/3 + 4500; 
                    if(Direction<3000)  
                                        Direction=3000; 
                    if(Direction>6000) 
                                        Direction=6000; 
                                        PWMPER01 = 60000;          /* Center 1500ms*3 */ 
                                        PWMDTY01 = Direction+93;   /* 設置舵機角度 */ 
                    if(Velocity>24000) Velocity=24000; 
                                        PWMPER45 = 24000;          /* 1kHz ( <10kHz ) */ 
                                        PWMDTY45 = Velocity;       /* 設置電機速度 */ 
               } /* initiate Real Time Interrupt 1.0 */ 
           
          void Init_INT_RTI(void) 
                  { 
                      RTICTL = 0x74; 
                      CRGINT |=0x80; 
                  }                    /* Real Time Interrupt 1.0 */ 
         interrupt void INT_RTI(void) 
                  {
                       CRGFLG |= 0x80; /* clear the interrrupt flag */ 
                       
                   }                   /* INT_Timer0 initiate 1.0 */ 
         void Init_INT_Timer(void) 
                  { 
                       TSCR2 =0x07;     /* 128Hz at 16M bus clok */ 
                                        /* 128Hz * 2/3 at 24m bus clock */ 
                                          /* in fact it is a little more than it. */ 
                       TIOS |=0x01;      /* I/O select */ 
                       TIE |=0x01;       /* Interrupt Enable */ 
                       TSCR1|=0x80;      /* TSCR1_TEN=1 
                                         //Timer Enable */ 
                   }                     /* INT_Timer0 1.0 */ 
         interrupt void INT_Timer0(void) 
                   { 
                        SYSCLOCK++; 
                        CarMain(); 
                        TC0 = TCNT + 1874; /* 1875-1 :100Hz */ 
                                           /* F = Fosc / (TC*128) */ 
                        TFLG1 |=0x01; /* clear interrupt flag */ 
                    } /* not finished EEPROM */ 
            
         void EEPROM(void) 
                          
                    { 
                         ECLKDIV = 0x4F; 
                         while(!(ECLKDIV&0x80)){}     /* wheather */  
                         while(!(ESTAT&0x80))  {}     /* wheather the command buffer is empty */ 
                         while(!(EPROT&0x80))  {}     /* wheather the eeprom is enabled to */ 
                         ECMD = 0x41; ESTAT |= 0x80; 
                         while(!(ESTAT&0x80))  {}     /* wheather the command buffer is empty */ 
                    }           
             
    /* *********************************************************************************
     *
     * 
     *                                    PID.c 
     * 
     *  Description: This file includes some basic calculation function of PID 
     *
     *               (c) Copyright 2006,Zhao Cheng 
     *
     *               All Rights Reserved 
     * 
     *               By : Zhao Cheng * 
     *  Data : 2006_5_6 
     *  
     *  Note : Don't change this file if possible. 
     **********************************************************************************/  
     
       #include <mc9s12dg128.h>                             /* derivative information */     
       
    /* *********************************************************************************
     *
     * 
     *                                  宏定義 
     **********************************************************************************/   
     

     #define SENSORNUM   8 
     #define SAMPLETIMES   5
     
     /* *********************************************************************************
      *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品乱码av一区二区| 国模冰冰炮一区二区| 国产精选一区二区三区| 91国产免费观看| 欧美一级片免费看| 亚洲免费观看高清| 性做久久久久久久免费看| 欧美色中文字幕| 一区二区三区.www| 国产黑丝在线一区二区三区| 91福利国产精品| 精品国产一区久久| 麻豆91在线播放| 欧美丰满少妇xxxbbb| 国产精品免费久久久久| 美国三级日本三级久久99| 欧美一区二区精品在线| 亚洲综合视频在线观看| 99在线精品一区二区三区| 日本一区二区三区视频视频| 韩日av一区二区| 91麻豆精品国产自产在线 | 精品成a人在线观看| 婷婷综合久久一区二区三区| 在线观看视频一区| 亚洲一区二区三区中文字幕 | 国产精品天干天干在线综合| 日韩国产一二三区| 欧美在线免费播放| 亚洲免费观看视频| 国产suv精品一区二区883| 日韩欧美激情一区| 日韩国产欧美视频| 欧美性一二三区| 中文字幕欧美激情一区| 国产乱码精品一区二区三| 日韩欧美国产三级| 韩国av一区二区| 欧美精品一区二区三区四区| 精品一区二区三区在线播放 | av网站免费线看精品| 亚洲免费高清视频在线| 在线观看av一区二区| 天天综合天天综合色| 在线观看免费视频综合| 日韩电影在线观看一区| 日韩欧美国产一区二区三区| 久久99国产精品尤物| 亚洲国产电影在线观看| 在线观看成人小视频| 精品一区二区久久| 夜夜嗨av一区二区三区| 久久综合久久鬼色| 97久久精品人人澡人人爽| 亚洲综合在线免费观看| 欧美日韩高清一区二区| 亚洲影视在线播放| 欧美日韩高清在线播放| 午夜日韩在线电影| 欧美电影免费观看高清完整版| 国产成人亚洲精品狼色在线| 亚洲人一二三区| 欧美丝袜自拍制服另类| 免费观看在线色综合| 久久久久久久av麻豆果冻| 91啪亚洲精品| 国产剧情一区在线| 蜜臀国产一区二区三区在线播放| 国产视频一区二区三区在线观看| 在线免费观看一区| 麻豆一区二区三区| 国产精品福利一区二区| 91精品国产综合久久久久| 播五月开心婷婷综合| 日本女优在线视频一区二区| 欧美国产一区视频在线观看| 欧美日韩情趣电影| 国产成人精品影院| 日本aⅴ免费视频一区二区三区| 亚洲欧洲三级电影| 精品日韩一区二区三区| 欧美性色aⅴ视频一区日韩精品| 国产一区二区三区黄视频 | 亚洲欧洲成人自拍| 日韩视频免费观看高清完整版| 久久精品国产亚洲一区二区三区| 国产欧美在线观看一区| 9191成人精品久久| 91麻豆自制传媒国产之光| 美女一区二区三区| 亚洲午夜三级在线| 中文字幕永久在线不卡| 欧美不卡一区二区三区四区| 欧美在线免费观看视频| 91免费国产在线| 蜜臀av性久久久久蜜臀aⅴ| 中文字幕av在线一区二区三区| 欧美午夜片在线观看| 高潮精品一区videoshd| 亚洲制服丝袜一区| 中文字幕第一区综合| 91精品久久久久久久91蜜桃| 在线视频你懂得一区二区三区| 成人伦理片在线| 国产精品一级黄| 经典三级视频一区| 免费观看在线综合| 蜜臀精品久久久久久蜜臀| 午夜电影网一区| 亚洲一区二区三区视频在线 | 日本不卡一区二区| 1000精品久久久久久久久| 欧美成人猛片aaaaaaa| 在线视频国产一区| 91麻豆精东视频| 91蜜桃网址入口| 91国偷自产一区二区使用方法| 欧美视频第二页| 久久亚洲私人国产精品va媚药| 国产精品国产三级国产三级人妇 | 欧美男生操女生| 久久精品人人爽人人爽| 夜夜嗨av一区二区三区网页 | 懂色av一区二区三区蜜臀| 色婷婷综合久久久久中文一区二区| 日韩一区二区在线看| 亚洲三级在线看| 激情文学综合插| 欧美在线一二三四区| 久久精品综合网| 免费看精品久久片| 91久久精品一区二区二区| 欧美精品一区二区三区蜜桃| 一区二区日韩电影| 成人国产在线观看| 欧美成人精品3d动漫h| 亚洲精品国产无天堂网2021| 国产精品一二三四| 欧美一卡二卡在线| 日韩美女啊v在线免费观看| 美国精品在线观看| 欧美日韩国产经典色站一区二区三区 | 亚洲国产精品精华液ab| 日韩精品五月天| 一本到一区二区三区| 欧美国产精品劲爆| 精品综合免费视频观看| 欧美人动与zoxxxx乱| 亚洲免费电影在线| 99国产精品久久久久久久久久久| 精品美女一区二区三区| 天天综合日日夜夜精品| 一本一本大道香蕉久在线精品| 国产欧美日韩在线看| 久久疯狂做爰流白浆xx| 91精品国产综合久久福利 | 欧美一区二区人人喊爽| 亚洲电影一区二区三区| 99久久婷婷国产综合精品| 久久久久久久久久电影| 国产一区二区三区免费看 | 亚洲视频在线一区观看| 成人一区在线看| 国产欧美日韩精品一区| 国产一区美女在线| 精品久久久久一区| 国产一区二区三区在线观看免费视频 | 亚洲国产成人porn| 色婷婷国产精品久久包臀| 亚洲老司机在线| 99re这里只有精品首页| 国产精品卡一卡二卡三| 91在线你懂得| 亚洲精品视频观看| 在线国产亚洲欧美| 午夜精品久久久久久久蜜桃app| 欧美日韩一区 二区 三区 久久精品| 亚洲美女视频在线| 欧美中文字幕亚洲一区二区va在线| 亚洲一区二区欧美日韩| 欧美四级电影网| 麻豆一区二区99久久久久| 久久久久久久久伊人| 99亚偷拍自图区亚洲| 一区二区三区在线免费播放| 欧美猛男男办公室激情| 日本成人在线网站| 久久精品视频在线看| 99久久99久久精品国产片果冻| 亚洲猫色日本管| 欧美高清激情brazzers| 久88久久88久久久| 国产精品免费av| 色国产精品一区在线观看| 午夜av一区二区| 国产亚洲视频系列| 日本精品免费观看高清观看| 日本中文字幕不卡| 久久精品视频一区二区| 色婷婷精品久久二区二区蜜臂av|