文档介绍://Demo程序适用范围:Si4431F13,Si4432F20,Si4431F27//RF模块的参数设置为:FSK,,,+/-10PPM,频偏:30KHz,调制带宽:// 使能AFC,使能CRC,PH+FIFO模式//每秒钟发射的固定测试数据为:0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x6d,//0x6d=(0x41+0x42+0x43+0x44+0x45+0x46+0x47+0x48+0x49)//MCU:Microchiphighperformance8bitMCU:PIC16F689#include<>#include<>constunsignedchartx_test_data[10]={0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x6d};//每秒发射的固定内容的测试信号,第10个数据是前9个数据的校验和#defineSI4432_PWRSTATE_READY 01 //模块Ready状态定义#defineSI4432_PWRSTATE_TX 0x09 //模块发射状态定义#defineSI4432_PWRSTATE_RX 05 //模块接收状态定义#defineSI4432_PACKET_SENT_INTERRUPT 04 //模块发射完成中断#defineSI4432_Rx_packet_received_interrupt0x02//模块收到数据包中断#X1_RX0 spi_rw(0x0e|0x80,0x01) //发射状态的天线开关定义#X0_RX1 spi_rw(0x0e|0x80,0x02) //接收状态的天线开关定义#X0_RX0 spi_rw(0x0e|0x80,0x00)//非发射,接收状态的天线开关定义#definenIRQ RC0 //MCU输入口#defineSDO RC1 //MCU输入口#definenSEL RC2 //MCU输出口#defineSDI RC3 //MCU输出口#defineSCK RC4 //MCU输出口#defineSDN RC5 //MCU输出口#definenIRQ_set TRISC0 //设置IO口的输入,数出的寄存器#defineSDO_set TRISC1 //设置IO口的输入,数出的寄存器#definenSEL_set TRISC2 //设置IO口的输入,数出的寄存器#defineSDI_set TRISC3 //设置IO口的输入,数出的寄存器#defineSCK_set TRISC4 //设置IO口的输入,数出的寄存器 #defineSDN_set TRISC5 //设置IO口的输入,数出的寄存器#defineINPUT 1#defineOUTPUT 0unsignedcharcount_50hz;unsignedcharItStatus1,ItStatus2;unsignedcharrf_timeout;unsignedcharrx_buf[15];typedefstruct{ unsignedcharreach_1s :1; unsignedcharrf_reach_timeout :1; unsignedcharis_tx :1; } FlagType;FlagType Flag;voidrx_data(void);voidtx_data(void);unsignedcharspi_byte(unsignedchardata);unsignedcharspi_rw(unsignedcharaddr,unsignedchardata);voidSI4432_init(void);voiddelay_1ms(unsignedchartime);voidport_init(void);voidtimer_init(void);voidmain(){ unsignedchari,j,chksum; ON=0X70; //使用内部晶振,8Mcrystal WDTCON=0X00;//看门狗设置 port_init(); //IO口初始化 SDN=1; delay_1ms(10); //RF模块复位 SDN=0; delay_1ms(200); //延时150msRF模块进入工作状态 SI4432_init();//RF模块初始化 TX0_RX0; //天线开关不在发射,接收状态 timer_init(); count_50hz=0; =0; INTCON=0xc0;//enableinterrupt while(1) { if() { Fl