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

📄 sysinit.c

📁 本公司的单相CPU卡表的源程序代码
💻 C
字号:
/*******************************************************************
* 
********************************************************************/
#include "include\macro.h"  
#include "include\HardConfig.h"
#include "include\SysConfig.h"
#include "include\SubConfig.h"
#include "include\data.h"
#include "include\bitdef.h"

#include "include\FunAnnounce.h"

/*
**-----------------------------------------------------------------------------
**
**  Abstract:
**	system function initialize when MCU reset,
**      include OSC,PORT,INTERRUPT,TIMER,ETC.
**  Parameters:
**	None
**
**  Returns:
**	None
**
**-----------------------------------------------------------------------------
*/
void Init_CPU()
{  
  /* Clock generator initiate */
	Clock_Init();
	/* Port initiate */
	PORT_Init();
  /* AD initiate */
	AD_Init();
  /* TM00 initiate */
	TM00_Init();
	/* wait for stabilization after 750ms */
	WaitFor750ms();
	
  /* LVI initiate */
	LVI_Init();
	/* wait for power on */
  if(PowerCk()== 1)   Sys_err();                   //dead loop.                
	


	/* TM50 initiate */
	TM50_Init();
	/* TM51 initiate */
	TM51_Init();
	/* TMH0 initiate */
	TMH0_Init();
	/* TMH1 initiate */
	TMH1_Init();

	

	/* HL6024 initiate */
	InitLCD();
        /* user ram  initiate  */
        UserRAM_init();
   
   
  //     BLED_Open();
  
  /* WT initiate */ 
  WT_Init();
	/* INT initiate */      
	INT_Init();
	
	
        
}



/*********************************************************************
**  void Clock_Init(void);
*********************************************************************/
void Clock_Init(void)
{
    PCC = 0B01000000;
    RCM = 0;
    MCM = 0X01;
    ClrIORBit(OSCCTL, 0x20);		/* XT1 input mode */
    SetIORBit(OSCCTL, 0x10);
    MOC = 0X80;
    PCC = 0;
}  


/*********************************************************************
**  void Clock_Init(void);
*********************************************************************/
void PORT_Init( void )
{
	/* initialize the port registers */
	P0 = PORT_P0;
	P1 = PORT_P1;
	P2 = PORT_P2;
	P3 = PORT_P3;
	P4 = PORT_P4;
	P6 = PORT_P6;
	P7 = PORT_P7;
	P12 = PORT_P12;

	/* initialize the Pull-up resistor option registers */
	PU0 = PORT_PU0;
	PU1 = PORT_PU1;
	PU3 = PORT_PU3;
	PU4 = PORT_PU4;
	PU7 = PORT_PU7;
	PU12 = PORT_PU12;

	/* initialize the mode registers */
	PM0 = PORT_PM0;
	PM1 = PORT_PM1;
	PM2 = PORT_PM2;
	ADPC = PORT_ADPC;
	PM3 = PORT_PM3;
	PM4 = PORT_PM4;
	PM6 = PORT_PM6;
	PM7 = PORT_PM7;
	PM12 = PORT_PM12;
}


/*********************************************************************
**  void Clock_Init(void);
*********************************************************************/
void INT_Init( void )
{
	EGP = 0b00100100;
	EGN = 0b00000100;                       //INT5 ,raise eage interrupt!!
	
	PM1.6 = 1;				/* set P16 input mode */
	PM3.1 = 1;
	
	PPR5 = 0;
	PIF5 = 0;
	PMK5 = 0;				/* enable INTP5 */
	
	PPR2 = 0;
	PIF2 = 0;
	PMK2 = 0;				/* enable INTP5 */
}


/*********************************************************************
**  void Clock_Init(void);
*********************************************************************/
void WT_Init( void )
{
	WTM = 0;                 //CLOSE
	WTM = 0B10110000;
	
	WTMK = 0;
	WTIMK = 0;
	WTM |=0x03;     // open 
}

/*********************************************************************
**  void Clock_Init(void);
*********************************************************************/
void UART0_Init( void )
{
	pin_IRTXD = 1;
	PM1.1 = 0;
	ASIM0 = 0;
	ASIM0 = 0b00011101;    // data length  8 bits
                         // stop length  1 bits
                         // even parity mode
	BRGC0 = UART0_TM50_DIVISION_VALUE;
	SRIF0 = 0;
	STIF0 = 0;
	
	SRMK0 = 0;                //receive end interrupt enable
	STMK0 = 0;                //transfer end interrupt enable 

  ASIM0.7 =1;
  ASIM0.6 =1;
}

/*********************************************************************
**  void Clock_Init(void);
*********************************************************************/
void AD_Init( void )
{
	ADPC = AD_ADPC;
	ADS = 0;
	ADM = 0;
}
  
/*********************************************************************
**  void Clock_Init(void);
*********************************************************************/
void WaitFor750ms( void )
{
        Delay_ms(250);
        WDTE=0xAC;                 // clr WDT
        NOP();  
        Delay_ms(250);
        WDTE=0xAC;                 // clr WDT
        NOP();  
        Delay_ms(250);
        WDTE=0xAC;                 // clr WDT
        NOP(); 
}  

/*********************************************************************
**  void Clock_Init(void);
*********************************************************************/
void UART6_Init( void )
{
	  ASIM6 = 0;
	  pin_485TXD = 1;
	  PM1.3 = 0;

    CKSR6=0x04;         // set f = fxp/32   (fxp = 8MHZ)
    BRGC6=208;          // set 1200 bps
    ASICL6=0x2;	        //LSB frist
    
    POWER6 = 1;             //enable internal clock operation

    ASIM6 |= 0b01111101;    //enable transmission
                            //enable reception
                            //even parity
                            //character lenght of data = 8-bits
                            //number of stop bits = 1
                            //“INTSR6” occurs in case of error (at this time, INTSRE6 does not occur).
}


/*********************************************************************
**  void Clock_Init(void);
*********************************************************************/
void TM00_Init(void)
{
	TMC00=0x00;
	
} 

/*********************************************************************
**  
*********************************************************************/
void TM50_Init( void )
{
	  TCE50 = 0;
	  TCL50 = TM_TM50_CLOCK;			//  Fprs/4 = 2M,
	  TMC50 = 02;
	  CR50 = TM_TM50_INTERVALVALUE;  	  /* TM50 interval */
	   
    TCE50 = 1;
}

/*********************************************************************
**  
*********************************************************************/
void TM51_Init( void )
{
	TCE51 = 0;
	TCL51 = TM_TM51_CLOCK;			/* internal countclock */
	/* TM51 squarewave output */
	P3.3 = 0;
	PM3.3 =0;
	TMC51 =0x07;
	CR51 = TM_TM51_SQUAREWIDTH;
}

/*********************************************************************
**  
*********************************************************************/
void TMH0_Init( void )
{
	TMHE0 = 0;     //close
	 		/* internal countclock */
	TMHMD0 = 0b00101001;         /* TMH0 PWM output */
	
	P1.5 = 0;
	PM1.5 = 0;
	CMP00 = TM_TMH0_PWMCYCLE;
	CMP10 = TM_TMH0_PWMDELAY;
	TMHE0 = 1;     //
}

/*********************************************************************
**  void Clock_Init(void);
*********************************************************************/
void TMH1_Init( void )
{
	ClrIORBit(TMHMD1, 0x80);
	//TMHMD1 |= (TM_TMH1_CLOCK << 4);
  //      CMP01 = TM_TMH1_INTERVALVALUE;	
}

/*********************************************************************
**  
*********************************************************************/
void TMH1_User_Init(uchar cnt)
{  
		TMHE1 = 0; ;//Close H1
	  TMHMD1|=(0x01<<4);//CLK Set;2M speed
	  CMP01=cnt;    // Time Set
	  TMIFH1 = 0;
}


/*********************************************************************
**  void Clock_Init(void);
*********************************************************************/
void LVI_Init( void )
{
	PM12.0 =1;
	LVION = 0;
	NOP();
	LVIMK = 1;
	LVISEL = 1;
	LVIS = 0x0e;    //limit is 2.04V
	LVION =1;
	NOP();
	NOP();
  NOP();
  NOP();
	NOP();
	NOP();	
  NOP();	
}

/*********************************************************************
**  void Clock_Init(void);
*********************************************************************/
void UserRAM_init( void )
{
    MEM_Read(E2P_TENDEC, (uchar*)&Sram.T_ENdec, 0x05);   // get energy decimal data and  low pluse count
    MEM_Read(E2P_EADJ, (uchar*)&Sram.Factor[0], 0x02);   //  
    CheckSystemSub();
    Comm.status = COMM_STATUS_INIT;
    LCDStatus_Trig(DISTG_RESERT); 
    
    MDLoad.ptr = 0;
    MDLoad.mpower[0] = 0;
    MDLoad.mpower[1] = 0;
    MDLoad.mpower[2] = 0;
    MDLoad.buff[0] = 0;
    MDLoad.buff[1] = 0;
    MDLoad.buff[2] = 0;
    MDLoad.buff[3] = 0;
    MDLoad.buff[4] = 0;
    MDLoad.status =0x00;	

    Relay.status = 0;
    Relay.tmr_oprea = 0;
    Relay.tmr_status = 0;
    
    Sram.SYSErr_status = SYSERR_OK;

    Sram.creditSTU = 0xff;
    Flag.even = 0;
    Flag.run = 0;
    	     
}

⌨️ 快捷键说明

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