//SPI1口发数
void spi1senddata(uint8 data)
{
IO0CLR = le58_ctrl_cs; // 片选
S1PDR = data;
while(0==(S1PSR&0x80)); // 等待SPIF置位,即等待数据发送完毕
IO0SET = le58_ctrl_cs;
}
/****************************************************************************
* 名称:UART0_Init()
* 功能:串口工作参数设置。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void UART0_Init(void)
{ uint16 Fdiv;
U0LCR = 0x03; //8位字长度,1位停止位,无校验,禁止间隔发送单个字符。
U0FCR = 0x00; // 不使能FIFO,并设置触发点为4字节。
// 设置波特率
U0LCR = 0x83; //DLAB =1,允许访问分频器
Fdiv = (Fpclk / 16) / UART0_BAUD;
U0DLM = TRUCT_MSB8(Fdiv);
U0DLL = TRUCT_LSB8(Fdiv);
U0LCR = 0x03; //DLAB =0,才允许访问U0RBR和U0THR
U0IER = 0x01; //只允许RBR中断(即接收中断和接收FIFO超时中断)
}
/****************************************************************************
串口0发送字节
****************************************************************************/
void UART0_SendByte(uint8 data)
{
U0THR = data; // 发送数据
while( (U0LSR&0x20)==0 ); // 等待数据发送完毕
}
/****************************************************************************
* 名称:IRQ_UART0()
* 功能:串口UART0接收中断。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void __irq IRQ_UART0(void)
{
if( 0x04==(U0IIR&0x0E) ) // RDA标志
{
receive_data=U0RBR;
rcv_new=1;
ready=1;
}
else if(0x0C==(U0IIR&0x0E) ) // CTI标志
{
while(U0LSR & 0x01) //读数据,直到FIFO为空
{
receive_data=U0RBR;
rcv_new=1;
ready=1;
}
}
VICVectAddr = 0x00; // 中断处理结束
}
/****************************************************************************
* 名称:UART1_Init()
* 功能:串口工作参数设置。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void UART1_Init(void)
{ uint16 Fdiv;
U1LCR = 0x03; //8位字长度,1位停止位,无校验,禁止间隔发送单个字符。
U1FCR = 0x00; // 不使能FIFO,并设置触发点为4字节。
// 设置波特率
U1LCR = 0x83; //DLAB =1,允许访问分频器
Fdiv = (Fpclk / 16) / UART1_BAUD;
U1DLM = TRUCT_MSB8(Fdiv);
U1DLL = TRUCT_LSB8(Fdiv);
U1LCR = 0x03; //DLAB =0,才允许访问U1RBR和U1THR
U1IER = 0x01; //只允许RBR中断(即接收中断和接收FIFO超时中断)
}
/****************************************************************************
串口1发送字节
****************************************************************************/
void UART1_SendByte(uint8 data)
{
U1THR = data; // 发送数据
while( (U1LSR&0x20)==0 ); // 等待数据发送完毕
}
/****************************************************************************
* 名称:spi1_Init()
* 功能:串口工作参数设置。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void spi1_init(void)
{
S1PCCR = 0x52; // 设置SPI时钟分频
S1PCR = 0x20; // 设置SPI接口模式,MSTR=1,CPOL=0,CPHA=0,LSBF=0
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』