⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bldc08.c

📁 电动车电流流量计显示程序. 单片机根据采样电阻采得电流后通过数码管显示当前电流是多少安培.
💻 C
字号:
/***********************************************************************
 * HEADER_START                                                        *
 *                                                                     *
 *      Name:           bldc08.c                                       *
 *      Project:        Normal Sensor HC08 Control of BLDC Motor       *
 *      Description:    main sw                                        *
 *      Processor:      HC08QY2/4                                      *
 *      HW:             MC68HC908QY2/4 BLDC Brushed Motor Control      *
 *      Revision:       2.0                                            *
 *      Date:           13,Nov 2005                                    *
 *      Compiler:       METROWERKS ANSI-C/cC++ Compiler for HC08       *
 *                                                        V-5.0.12 ICG *
 *      Author:         Yuebo Ma                                       *
 *      Company:        ALT Yangzhou                                   *
 *      Security:       General Business Information                   *
 *                                                                     *
 *                                                                     *
 * =================================================================== *
 * Copyright (c):      MOTOROLA Inc.,2004, All rights reserved.        *
 *                                                                     *
 * =================================================================== *
 * THIS SOFTWARE IS PROVIDED BY MOTOROLA RSAL "AS IS" AND ANY          *
 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR  *
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL MOTOROLA RSAL OR         *
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,    *
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT        *
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;        *
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)            *
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, *
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)       *
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED *
 * OF THE POSSIBILITY OF SUCH DAMAGE.                                  *
 * =================================================================== *
 *
 */

/******************************************************************************/
/*              I N C L U D E  H E A D E R  F I L E S                         */
/******************************************************************************/
#include "qy2io.h"         /* file contains QY2/4 registers definition */
#include "ram.h"            /* file contains RAM global variables */
#include "code_fun.h"       /* file contains function declarations */
void MCUInit (void);
void AppInit (void);

/******************************************************************************/
/*              FUNCTION DEFINITIONS                                          */
/******************************************************************************/
                                        
/******************************************************************************/
/************************   M A I N   *****************************************/
/******************************************************************************/
void main(void) 
{    
    DisableInt();
    MCUInit ();
    AppInit();    
    ParamInit ();              /* initialize motor parameters variables */
    EnableInt();
/************** MAIN INFINITE LOOP - BEGIN ************************************/
    for(;;) {    
        if( Scan_Status.B.MODETESTFINISH )
            DataShowInTest();       
        else
            DataShow2Bits(ShowCurrent);
            
        /************ 1ms event *****************/    
        if( TIMER - T_125ms_Event >/*_125ms*/_62p5ms ) {
            T_125ms_Event = TIMER;
            T_125ms++;        
            while (ADSCR.B.COCO == 0)
            {};                        
            adcCurrent = ADR;
            
            if( adcCurrent < Offset_Curr )
                _1sCurrent = _1sCurrent +  Offset_Curr - adcCurrent;
            
            if( ++cntCurrent == /*8*/16 )  {
                cntCurrent = 0;                
                aveCurrent = (unsigned char) (_1sCurrent >> 4/*3*/);
                _1sCurrent = 0;
                
                if( aveCurrent > 2 ) 
                    sumCurrent += aveCurrent;
                
                if( !PORTA.B.MODETEST ) 
                    ShowCurrent = (unsigned char) (sumCurrent >> 3);
                else                    
                    //ShowCurrent = ( sumCurrent + 2000 ) >> 12;
                    ShowCurrent = (unsigned char) (sumCurrent >> 12);
                
                if( ShowCurrent > 99 )
                    ShowCurrent = 0;
            }
            ADSCR.R = C_Current; 
        }       
        
        //ScanModeTest();
        ScanModePORT();
        ModeTest();       
    }
/************** MAIN INFINITE LOOP - END **************************************/
}

/************** [BEGIN - MCUInitialize ()] ************************************
 *
 * Function: MCUInit (void)
 *
 * Description:
 *      MCU Initialization
 *
 * MCU Initialization after reset
 *
 ******************************************************************************/
/************** MCU INITIALIZATIONS - BEGIN ***********************************/
void MCUInit (void)
{
/************** System Config *****************************************************/
    CONFIG1.R = I_CONFIG1;	 /* Config for Watchdog disabled */
    OSCTRIM = 0x80;	 /* Trim adjust */
/************** Ports Initialization ******************************************/
    DDRA = I_DDRA;              /* set PortA according to defined value */
    PORTA.R = I_PORTA;                /* clear PortA -> PWM OFF */
    DDRB = I_DDRB;
    PORTB.R = 0;
 /* Config Input Pullup Resistors */
    PTAPUE.R = I_PTAPUE; 
    PTBPUE.R = I_PTBPUE;
/****************** Initialization of Timer *******************/
    InitTimer();    
/********** Initialize parameter variables acording to board and motor set*****/

/********************* ADC initialization **************************************/
    /*ADICLK.R = I_ADICLK;  		 initialize ADC left mode,
                                   frequency, clk source */
}
/************** MCU INITIALIZATIONS - END *************************************/


/************** [BEGIN - AppInit ()] ******************************************
 *
 * Function: AppInit (void)
 *
 * Description:
 *      Motor Control System Initialization
 *
 * Motor Control System Initialization
 *
 ******************************************************************************/
void AppInit (void) {
	/* ************************* W A I T ****************************** */
	/* Wait 1 sec to get the power supply to the full voltage */
	/* The time delay should be tuned according to the used power supply */
    WaitMs(200);
    ADSCR.R = C_Current;
}
/************** [END - AppInit ()] ********************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -