求24L01源程序,能收发的,我一直调不通呀,谢谢了
最佳回复
确实发不了那么多字符,你发个邮箱过来,我给你发过去
需求发布人评语: 谢谢没有完整的么?
有,好像这个有字数限制
//C51模拟 #include #define BYTE_BIT0 0x01 #define BYTE_BIT1 0x02 #define BYTE_BIT2 0x04 #define BYTE_BIT3 0x08 #define BYTE_BIT4 0x10 #define BYTE_BIT5 0x20 #define BYTE_BIT6 0x40 #define BYTE_BIT7 0x80 //RF2401对应的引脚 sbit PWR_UP=P1^6; sbit CE =P1^2; // sbit DR2 =P3^5; //暂时没用到 // sbit CLK2=P3^4; // sbit OUT2=P3^3; sbit CS =P1^1; sbit DR1 =P1^0; sbit CLK1 =P3^7; sbit DATA =P3^3; sbit LED0 =P3^4; sbit LED1 =P3^5; sbit KEY0 =P3^0; sbit KEY1 =P3^1; /* RF2401 configuration 保存2401的配置信息 芯片测试用,无需修改 */ #define TEST_2 0x8E //MSB D143--D136 #define TEST_1 0x08 //MSB D135--D128 #define TEST_0 0x1C //MSB D127--D120 /* 注意DATAx_W + ADDRx_W + CRC的值必须小于256! 单个数据包的大小必须小于32字节(256位) */ #define DATA2_W 0x10 //0x10=2字节 频道2发送/接收数据长度(单位:Bit) #define DATA1_W 0xE0 //0xE0=28字节 频道1发送/接收数据长度(单位:Bit) /* 注意:2401忽略ADDR中超过ADDR_W设定宽度的那些位,同时地址不能全部设置为0 //频道2接收地址 频道2未启用 */ #define ADDR2_4 0x00 #define ADDR2_3 0x1C #define ADDR2_2 0xCC #define ADDR2_1 0xCC #define ADDR2_0 0xCC //频道1接收地址(当前模块地址) 只用到频道1 #define ADDR1_4 0x00 #define ADDR1_3 0xCC #define ADDR1_2 0xCC #define ADDR1_1 0xCC #define ADDR1_0 0xCC #define ADDR_W 0x10 //0x10=2字节 发送/接收地址宽度(单位:Bit) #define CRC_L 0x01 //CRC模式:0:8位,1:16位 #define CRC_EN 0x01 //CRC校验:0:禁用,1:启用 #define RX2_EN 0x00 //双频道功能 0:禁用,1:启用 #define CM 0x01 //0:Direct mode 1:ShockBurst mode #define RFDR_SB 0x00 //传输速率 0:250kbps,1:1Mbps (250kbps距离较远) #define XO_F 0x03 //16M RF2401晶振频率 /* D12 D11 D10 晶振频率(MHZ) 0 0 0 4 0 0 1 8 0 1 0 12 0 1 1 16 1 0 0 20 */ #define RF_PWR 0x03 //信号发射功率 /* D9 D8 P[dBm] 0 0 -20 0 1 -10 1 0 -5 1 1 0 */ #define RF_CH 0x02 //Channel RF频率设置 Channel=2400MHZ+RF_CH*1.0MHZ #define RXEN 0x00 //0:Tx,1:Rx 程序会通过SetTxMode/SetRxMode重新设置此参数 //将设置信息组合成每个字节的数据信息 #define RFConfig_Bit0 TEST_2 #define RFConfig_Bit1 TEST_1 #define RFConfig_Bit2 TEST_0 #define RFConfig_Bit3 DATA2_W #define RFConfig_Bit4 DATA1_W #define RFConfig_Bit5 ADDR2_4 #define RFConfig_Bit6 ADDR2_3 #define RFConfig_Bit7 ADDR2_2 #define RFConfig_Bit8 ADDR2_1 #define RFConfig_Bit9 ADDR2_0 #define RFConfig_Bit10 ADDR1_4 #define RFConfig_Bit11 ADDR1_3 #define RFConfig_Bit12 ADDR1_2 #define RFConfig_Bit13 ADDR1_1 #define RFConfig_Bit14 ADDR1_0 #define RFConfig_Bit15 (ADDR_W0) { led0_count--; LED0=0; } else LED0=1; if(led1_count0) { led1_count--; LED1=0; } else LED1=1; } //end while(1) } /*可用最长数据字节数说明: ShockBurest RF数据包不能超过32字节,有效字节数=32-ADDR_W-CRC,在 本演示程序中,ADDR_W为2字节(0x10),CRC为2字节,所以DATA1_W=0xE0,即28字节,如果需要更宽的地址, 可以增加地址宽度,减少数据宽度*/