|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2012-12-2 08:50:53
|
显示全部楼层
这是涉及到的一些代码,大家看看有什么问题吗
/**************************************************/
// 功能:RF中断服务子程序
/**************************************************/
void RF_IRQ(void) interrupt INTERRUPT_RFIRQ
{
EA=0;
sta=SPI_Read(STATUS); // 保存寄存器状态值
if(RX_DR)
{
RFCE=0;
RD_PAYLOAD(); //读取接收到的信息到缓冲区
// receive_flag=1;
// LED1=0;
receive_show(); //显示接收到的信息
}
else
{
receive_flag=0;
}
SPI_RW_Reg(WRITE_REG+STATUS,0x70); // 清除所有中断标志
RFCE=1;
EA=1;
}
void receive_show()
{
unsigned char i=1,j=0;
LCD_P8x16Str(0,0,"Total:0"); //7*8=56
j=rx_buf[0];
LCD_Pchar8x16(48,0,j+0X30);
while(j--)
{
LCD_Pchar8x16( 0,i*2,rx_buf[(i-1)*4+1]);
LCD_Pchar8x16( 8,i*2,rx_buf[(i-1)*4+2]);
LCD_Pchar8x16(16,i*2,rx_buf[(i-1)*4+3]);
LCD_Pchar8x16(24,i*2,rx_buf[(i-1)*4+4]);
i++;
}
}
void RD_PAYLOAD(void)
{
uint8_t i;
RFCSN=0; // 进入SPI操作
SPI_RW(RD_RX_PLOAD); // 写入命令
for (i=0;i<TX_PLOAD_WIDTH;i++)
{
rx_buf[rx_start] = SPI_RW(0); // 读出数据
rx_start++; // 改变指针
rx_start&=0x3f;
rx_num++; // 接收数据总数加一
}
RFCSN=1; // 结束SPI操作
RFCSN=0; // 进入SPI操作
SPI_RW_Reg(FLUSH_RX,0); // 清除接收缓冲区
RFCSN=1; // 进入SPI操作
} |
|