xs128,SCI初始化代码

/*
//程序说明:练习使用XS128的SCI的串口通信功能,为下一步观察摄像头采集到的80×80的图像做做准备
//时间;2011-02-24
//作者:行兴
*/
#include /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#include "SCI.h"//传输





//----------------------------向下看,我是SCI0------------------------------//



/**************************************
//功 能:初始化SCI0
//入口参数:void
//出口参数:void
***************************************/
void SCI_0Init(void)
{
SCI0BD=260; //9600bps Baud Rate=BusClock/(16*SCIBD)
//采用16M晶振 总线时钟40M 9600 = 40M/(16*260)

SCI0CR1=0x0; //正常8位模式,无奇偶校验
//LOOPS = 0;SCISWAI = 0;RSRC = 0;M = 0;
//WAKE = 0;ILT = 0;PE = 0;PT = 0
SCI0CR2=0x2C; //发送允许 接受中断允许
//TIE = 0;TCIE = 0;RIE = 0;ILIE = 0;
//TE = 1;RE = 1;RWU = 0;SBK = 0

}

/**************************************
//功 能:读SCI0数据
//入口参数void
//出口参数:unsigned char
***************************************/
unsigned char SCI_0Read(void)
{
if(SCI0SR1_RDRF==1) //表明数据从位移寄存器传输到SCI数据寄存器
{
SCI0SR1_RDRF=1; //读取数据寄存器会将RDRF清除 重新置位
return SCI0DRL; //返回数据寄存器的数据
}
}


/**************************************
//功 能:写SCI0数据
//入口参数:unsigned char sendchar
//出口参数:void
***************************************/
void SCI_0Write(unsigned char sendchar)
{
while (!SCI0SR1_TDRE); //发送数据寄存器空 0表示没有数据传输到发送移位寄存器
SCI0DRH=0;
SCI0DRL= sendchar;
}




//-----------------------------向下看,我是SCI1-------------------------------------//




/**************************************
//功 能:初始化SCI1
//入口参数:void
//出口参数:void
***************************************/
void SCI_1Init(void)
{
SCI1BD=260; //9600bps Baud Rate=BusClock/(16*SCIBD)
//采用16M晶振 总线时钟32M 9600 = 8m/(16*60)

SCI1CR1=0x0; //正常8位模式,无奇偶校验
//LOOPS = 0;SCISWAI = 0;RSRC = 0;M = 0;
//WAKE = 0;ILT = 0;PE = 0;PT = 0
SCI1CR2=0x2C; //发送允许 接受中断允许
//TIE = 0;TCIE = 0;RIE = 0;ILIE = 0;
//TE = 1;RE = 1;RWU = 0;SBK = 0

}

/**************************************
//功 能:读SCI1数据
//入口参数void
//

出口参数:unsigned char
***************************************/
unsigned char SCI_1Read(void)
{
if(SCI1SR1_RDRF==1) //表明数据从位移寄存器传输到SCI数据寄存器
{
SCI1SR1_RDRF=1; //读取数据寄存器会将RDRF清除 重新置位
return SCI1DRL; //返回数据寄存器的数据
}
}


/**************************************
//功 能:写SCI1数据
//入口参数:unsigned char sendchar
//出口参数:void
***************************************/
void SCI_1Write(unsigned char sendchar)
{
while (!SCI1SR1_TDRE); //发送数据寄存器空 0表示没有数据传输到发送移位寄存器
SCI1DRH=0;
SCI1DRL= sendchar;
}



//---------------------------接收中断函数-----------------------//

/*
#pragma CODE_SEG NON_BANKED
void interrupt 20 SCI0_get(void)
{
unsigned char ch;
ch = SCI_0Read();
SCI_0Write(ch);
}




#pragma CODE_SEG NON_BANKED
void interrupt 21 SCI1_get(void)
{
unsigned char ch;
ch = SCI_0Read();
SCI_0Write(ch);
}
*/











相关文档
最新文档