📄 initial.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 + -