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

📄 020_initialize.c

📁 基于C8051F020单片机的
💻 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();
}

⌨️ 快捷键说明

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