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

📄 mcu_init.c

📁 C8051F340读写SD卡,带文件系统
💻 C
字号:
#include "c8051f340.h"
#include "mcu_init.h"

/*************************** c8051f340硬件初始化 *******************************/
void Port_IO_Init(void)//端口配置
{
   P0MDOUT = 0x1D;     		 // enable TX0,SCK,MOSI as a push-pull
   P2MDOUT = 0x02;			 //	enable P2.1 as a push-pull
   XBR0    = 0x03;    		 // UART0 TX and RX pins enabled, SPI enabled
   XBR1    = 0xC0;  // Enable crossbar, disable weak pull-up
}

/*------------------------------------------------------------------------------------*/
void Oscillator_Init()//系统时钟配置
{
	//48M
	int i = 0;
    FLSCL     = 0x90;
    CLKMUL    = 0x80;
    for (i = 0; i < 20; i++);    // Wait 5us for initialization
    CLKMUL    |= 0xC0;
    while ((CLKMUL & 0x20) == 0);
    CLKSEL    = 0x03;
}

/*------------------------------------------------------------------------------------*/
void UART0_Init(void)//串口配置
{
   int xdata sbrl ;

   sbrl =  (0xFFFF - (SYSCLK/BAUDRATE/2)) + 1;
   SCON0 = 0x10;                   

   if (SYSCLK/BAUDRATE/2/256 < 1) 
   {
      TH1 = -(SYSCLK/BAUDRATE/2);
      CKCON |=  0x08;                  // T1M = 1; SCA1:0 = xx
   } 
   else if (SYSCLK/BAUDRATE/2/256 < 4) 
   {
      TH1 = -(SYSCLK/BAUDRATE/2/4);
      CKCON &= ~0x0B;                  
      CKCON |=  0x01;                  // T1M = 0; SCA1:0 = 01
   } 
   else if (SYSCLK/BAUDRATE/2/256 < 12) 
   {
      TH1 = -(SYSCLK/BAUDRATE/2/12);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 00
   } 
   else 
   {
      TH1 = -(SYSCLK/BAUDRATE/2/48);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 10
      CKCON |=  0x02;
   }

   TL1 = TH1;                          // init Timer1
   TMOD &= ~0xf0;                      // TMOD: timer 1 in 8-bit autoreload
   TMOD |=  0x20;
   TR1 = 1;                            // START Timer1
   TI0 = 1;                            // Indicate TX0 ready
}

/*------------------------------------------------------------------------------------*/
void SPI_Init (void)//SPI总线配置
{
	SPI0CFG = 0x70;              // data sampled on rising edge, clk
                                 // active low,
                                 // 8-bit data words, master mode;

	SPI0CN = 0x0F;               // 4-wire mode; SPI enabled; flags cleared
	SPI0CKR = 0xef; 			 // 48m, SPI clk = 100k
}

/*------------------------------------------------------------------------------------*/
//call this routine to initialize all peripherals
void Init_Devices(void)
{
    Port_IO_Init();
    Oscillator_Init();
	UART0_Init();
	SPI_Init();
}

⌨️ 快捷键说明

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