#include
#define SYSCLK 22118400 // 系统时钟频率22.1184MHz
#define BAUDRATE 115200 // BAUDRATE
#define TIMER2_RELOAD 0x0000
sfr16 RCAP2 = 0xCA;// Timer2 Reload Register
sfr16 TMR2 = 0xCC; // Timer2 Register
/*******************
振荡器初始化
********************/
void OSCILLATOR_Init (void)
{
int i;/*延时计数器*/
OSCXCN = 0x67; /*打开外部晶体振荡器*/
for (i=0; i < 256; i++) ; /*延时,等待振荡器启动(>1ms)*/
while (!(OSCXCN & 0x80)) ; /*查询外部晶体是否稳定起振*/
OSCICN = 0x88; /*用外部晶体作为系统时钟,并使能时钟丢失检测*/
}
/**************************************
端口的初始化
***************************************/
void PORT_Init()
{
XBR0 = 0x04; //使能UART0EN(XBAR0.2),p0.0=TX0,p0.1=RX0
XBR2 = 0x40; //XBARE置1
}
//-----------------------------------------------------------------------------
// UART0_Init
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters : None
//
// Configure the UART1 using Timer1, for and 8-N-1.
//
//-----------------------------------------------------------------------------
void UART0_Init (void)
{
SCON0 = 0x50; // SCON0: mode 1, 8-bit UART, enable RX
TMOD = 0x21; // TMOD: timer 1, mode 2, 8-bit reload
TH1 = -(SYSCLK/BAUDRATE/16); // set Timer1 reload value for baudrate
TR1 = 1; // start Timer1
CKCON |= 0x10; // Timer1 uses SYSCLK as time base
PCON|= 0x90; // SMOD00 = 1
//TI0 = 1; // Indicate TX0 ready
}
void UART1_Init (void)
{
SCON1=0x50;
T4CON=0x34;
CKCON |= 0x50;
PCON|= 0x90;
TH4=0XFF;
TL4=0XFA;
RCAP4L=0XFA;
RCAP4H=0XFF;
}
/*
T0初始化
*/
void T1_initial(void)
{
TMOD=0x21;
//CKCON |= 0x08;
//TH0=0x70;
//TL0=0x00;
TH0=0x70;
TL0=0x00;
TR0=1;
}
/*
T2初始化
*/
void T2_initial(void)
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………