www.pudn.com > fm31256.rar > 020_initialize.C


///////////////////////////////////// 
//  Generated Initialization File  // 
///////////////////////////////////// 
 
#include "c8051F020.h" 
//#include "ram_manage.h" 
 
// Peripheral specific initialization functions, 
// Called from the Init_Device() function 
#define   CRYSTAL_FREQUENCY  22118400 
#define   T0_INT_TIMES_PER_SEC    10 
#define   T3_INT_TIMES_PER_SEC     30 
void Reset_Sources_Init() 
{ 
    WDTCN     = 0xDE; 
    WDTCN     = 0xAD; 
} 
 
void Timer_Init() 
{ 
    CKCON     = 0x20; 
    TCON      = 0x50; 
    TMOD      = 0x21; 
    TH0       = 0x38; 
    TH1       = 0xFB; 
    TMR3CN    = 0x04; 
    TMR3RLH   = 0x10; 
    TMR3H     = 0x10; 
	//中断次数设定 
	TH0 	  = ( 65536 - (CRYSTAL_FREQUENCY/12/T0_INT_TIMES_PER_SEC) ) / 256; 
	TL0 	  = ( 65536 - (CRYSTAL_FREQUENCY/12/T0_INT_TIMES_PER_SEC) ) % 256; 
 
	TMR3RLL   = ( 65536 - (CRYSTAL_FREQUENCY/12/T3_INT_TIMES_PER_SEC) ) % 256; 
    TMR3RLH   = ( 65536 - (CRYSTAL_FREQUENCY/12/T3_INT_TIMES_PER_SEC) ) / 256; 
    TMR3L     = ( 65536 - (CRYSTAL_FREQUENCY/12/T3_INT_TIMES_PER_SEC) ) % 256; 
    TMR3H     = ( 65536 - (CRYSTAL_FREQUENCY/12/T3_INT_TIMES_PER_SEC) ) / 256; 
} 
 
void UART_Init() 
{ 
    SCON0     = 0x50; 
    SCON1     = 0x50; 
} 
 
void SPI_Init() 
{ 
    SPI0CFG   = 0xC0; 
    SPI0CN    = 0x03; 
    SPI0CKR   = 0x4F; 
} 
 
void Port_IO_Init() 
{ 
    // P0.0  -  TX0 (UART0), Push-Pull,  Digital 
    // P0.1  -  RX0 (UART0), Push-Pull,  Digital 
    // P0.2  -  SCK  (SPI0), Push-Pull,  Digital 
    // P0.3  -  MISO (SPI0), Push-Pull,  Digital 
    // P0.4  -  MOSI (SPI0), Push-Pull,  Digital 
    // P0.5  -  NSS  (SPI0), Push-Pull,  Digital 
    // P0.6  -  SDA (SMBus), Push-Pull,  Digital 
    // P0.7  -  SCL (SMBus), Push-Pull,  Digital 
 
    // P1.0  -  TX1 (UART1), Push-Pull,  Digital 
    // P1.1  -  RX1 (UART1), Push-Pull,  Digital 
    // P1.2  -  INT0 (Tmr0), Push-Pull,  Digital 
    // P1.3  -  Unassigned,  Push-Pull,  Digital 
    // P1.4  -  Unassigned,  Push-Pull,  Digital 
    // P1.5  -  Unassigned,  Push-Pull,  Digital 
    // P1.6  -  Unassigned,  Push-Pull,  Digital 
    // P1.7  -  Unassigned,  Push-Pull,  Digital 
 
    // P2.0  -  Unassigned,  Push-Pull,  Digital 
    // P2.1  -  Unassigned,  Push-Pull,  Digital 
    // P2.2  -  Unassigned,  Push-Pull,  Digital 
    // P2.3  -  Unassigned,  Push-Pull,  Digital 
    // P2.4  -  Unassigned,  Push-Pull,  Digital 
    // P2.5  -  Unassigned,  Push-Pull,  Digital 
    // P2.6  -  Unassigned,  Push-Pull,  Digital 
    // P2.7  -  Unassigned,  Push-Pull,  Digital 
 
    // P3.0  -  Unassigned,  Push-Pull,  Digital 
    // P3.1  -  Unassigned,  Push-Pull,  Digital 
    // P3.2  -  Unassigned,  Push-Pull,  Digital 
    // P3.3  -  Unassigned,  Push-Pull,  Digital 
    // P3.4  -  Unassigned,  Push-Pull,  Digital 
    // P3.5  -  Unassigned,  Push-Pull,  Digital 
    // P3.6  -  Unassigned,  Push-Pull,  Digital 
    // P3.7  -  Unassigned,  Push-Pull,  Digital 
 
    P0MDOUT   = 0xFF; 
    P1MDOUT   = 0xFF; 
    P2MDOUT   = 0xFF; 
    P3MDOUT   = 0xFF; 
    P74OUT    = 0xE0; 
    XBR0      = 0x07; 
    XBR1      = 0x04; 
    XBR2      = 0x44; 
} 
 
void Oscillator_Init() 
{ 
    int i = 0; 
    OSCXCN    = 0x67; 
    for (i = 0; i < 3000; i++);  // Wait 1ms for initialization 
    while ((OSCXCN & 0x80) == 0); 
    OSCICN    = 0x0F; 
} 
 
void Interrupts_Init() 
{ 
    IE        = 0x92; 
    EIE2      = 0x01; 
} 
 
// Initialization function for device, 
// Call Init_Device() from your main program 
void Init_Device(void) 
{ 
    Reset_Sources_Init(); 
    Timer_Init(); 
    UART_Init(); 
    SPI_Init(); 
    Port_IO_Init(); 
    Oscillator_Init(); 
    Interrupts_Init(); 
}