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

📄 initial.c

📁 epsondriver 驱动源代码
💻 C
字号:
/**********************************************************************************************************
							Sincere Techonlogy
							 Shanghai.China
			(c) Copyright 2005,Sincere Technology,Shanghai China
							All Rights Reserved



File name         : Initial.c
Author            : Neil
Description       : Include initial functions  
Target            : C8051F023
Data              : 2005-3
**********************************************************************************************************/


#include "Include.h"


/********************************************************************************************************
--------------------------------------------------------------------------------------------------------
                                     void SYSCLK_Init (void)
									 Author            : Neil
									 Data              : 2005-3
--------------------------------------------------------------------------------------------------------

 This routine initializes the system clock to use an over 16MHz crystal
 as its clock source.
*********************************************************************************************************/
void SYSCLK_Init (void)
{
   int i;                              // delay counter

   OSCXCN = 0x67;	                   // start external oscillator with	
   for (i = 0; i < 255; i++) ;            // wait for osc to start   while ( (OSCXCN & 0x80) == 0 );        // wait for xtal to stabilize

   OSCICN = 0x88;                      // select external oscillator as SYSCLK
                                       // source and enable missing clock
                                       // detector
}




/*********************************************************************************************************
---------------------------------------------------------------------------------------------------------
                                      void MEMORY_Init (void)
									  Author            : Neil
									  Data              : 2005-3
---------------------------------------------------------------------------------------------------------
 This routine initializes the MCU use internal memory only, ALE hight and ALE low 
 pluse width=1 SYSCLK cycle.
 ********************************************************************************************************/
void  MEMORY_Init (void)
{
 	EMI0CF = 0x00;    // External Memory Configuration Register
}





/*********************************************************************************************************
----------------------------------------------------------------------------------------------------------
										void PERIAL_Init (void)
										Author            : Neil
										Data              : 2005-3
----------------------------------------------------------------------------------------------------------
This routine initializes the digital peripherals.UART0,SMBUS are enable.
		// P0.0 = UART TX0        (Push-Pull Output)		// P0.1 = UART RX0        (Open-Drain Output/Input)		// P0.2 = SMBus SDA       (Open-Drain Output/Input)		// P0.3 = SMBus SCL       (Open-Drain Output/Input)
*********************************************************************************************************/
void PERIAL_Init (void)
{
 	XBR0 = 0x05;	
	XBR1 = 0x00;	
	XBR2 = 0x40;
}




/*********************************************************************************************************
---------------------------------------------------------------------------------------------------------
                                      void PORT_Init (void)
									  Author            : Neil
									  Data              : 2005-3
---------------------------------------------------------------------------------------------------------
 This routine initializes the MCU'ports.

 ********************************************************************************************************/
void PORT_Init (void)
{
	P0MDOUT |= 0x11;     // P0.0                   (Push-Pull Output)
						 // P0.4                   (Push-Pull Output)          (SCS)
	
	P1MDOUT |= 0xE3;     // P1.0                   (Push-Pull Output)(Digital) 
		                 // P1.1                   (Push-Pull Output)(Digital)
						 // P1.5                   (Push-Pull Output)(Digital) (SCS61B)
						 // P1.6                   (Push-Pull Output)(Digital) (SCS61G)
						 // P1.7                   (Push-Pull Output)(Digital) (SCS61R)
}




/*********************************************************************************************************
---------------------------------------------------------------------------------------------------------
                                      void INTERRUPT_Init (void)
									  Author            : Neil
									  Data              : 2005-4
---------------------------------------------------------------------------------------------------------
 This routine initializes the MCU's interrupts.

 ********************************************************************************************************/
void INTERRUPT_Init (void)
{
	IE = 0x90;		    //Enable UART0 Interrupt,and global interrupt
	IP = 0x00;		    //Interrupt Priority
	EIE1 = 0x02;		//Extended SMBus Interrupt
	EIE2 = 0x00;		//Extended Interrupt Enable 2
	EIP1 = 0x00;		//Extended Interrupt Priority 1
	EIP2 = 0x00;		//Extended Interrupt Priority 2
}





/*********************************************************************************************************
---------------------------------------------------------------------------------------------------------
                                      void SMBUS_Init (void)
									  Author            : Neil
									  Data              : 2005-4
---------------------------------------------------------------------------------------------------------
SMBus Configuration

 ********************************************************************************************************/
void SMBUS_Init (void)
{


	SMB0CN = 0x40;	// Enable SMBus 
	SMB0ADR = 0x00;	// SMBus Address Register
	SMB0CR = 0xE7;	// SMBus Clock Rate @ 400000bps
}





/*********************************************************************************************************
---------------------------------------------------------------------------------------------------------
                                      void UART0_Init (void)
									  Author            : Neil
									  Data              : 2005-4
---------------------------------------------------------------------------------------------------------
Configure the UART0 using Timer1, for <baudrate> and 8-N-1.

 ********************************************************************************************************/

void UART0_Init (void)
{
  
   SCON0   = 0x50;                     // SCON0: mode 1, 8-bit UART, enable RX
   TMOD    = 0x20;                     // TMOD: timer 1, mode 2, 8-bit auto reload
   TH1    = -(SYSCLK/BAUDRATE/16);     // set Timer1 reload value for baudrate
   TR1    = 1;                         // Enable Timer1
   CKCON |= 0x10;                      // Timer1 uses SYSCLK as time base
   PCON  |= 0x80;                      // SMOD00 = 1
}

⌨️ 快捷键说明

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