无线监控小车课程设计报告(编辑修改稿)内容摘要:

fine SETUP_RETR 0x04 // 39。 Setup Auto. Retrans39。 register address define RF_CH 0x05 // 39。 RF channel39。 register address define RF_SETUP 0x06 // 39。 RF setup39。 register address define STATUS 0x07 // 39。 Status39。 register address define OBSERVE_TX 0x08 // 39。 Observe TX39。 register address define CD 0x09 // 39。 Carrier Detect39。 register address 21 define RX_ADDR_P0 0x0A // 频道 0 接收数据地址 define RX_ADDR_P1 0x0B // 39。 RX address pipe139。 register address define RX_ADDR_P2 0x0C // 39。 RX address pipe239。 register address define RX_ADDR_P3 0x0D // 39。 RX address pipe339。 register address define RX_ADDR_P4 0x0E // 39。 RX address pipe439。 register address define RX_ADDR_P5 0x0F // 39。 RX address pipe539。 register address define TX_ADDR 0x10 // 39。 TX address39。 register address define RX_PW_P0 0x11 // 接收频道 0 接收数据长度 define RX_PW_P1 0x12 // 39。 RX payload width, pipe139。 register address define RX_PW_P2 0x13 // 39。 RX payload width, pipe239。 register address define RX_PW_P3 0x14 // 39。 RX payload width, pipe339。 register address define RX_PW_P4 0x15 // 39。 RX payload width, pipe439。 register address define RX_PW_P5 0x16 // 39。 RX payload width, pipe539。 register address define FIFO_STATUS 0x17 // 39。 FIFO Status Register39。 register address //extern void StartUART( void )。 //串行口初始化 22 //extern void R_S_Byte(uchar R_Byte)。 //通过串口发送一个字节给 PC extern void init_io(void)。 extern void delay_ms(uchar x)。 extern uchar SPI_RW(uchar byte)。 extern uchar SPI_RW_Reg(uchar reg, uchar value)。 extern uchar SPI_Read(uchar reg)。 extern uchar SPI_Read_Buf(uchar reg, uchar * pBuf, uchar bytes)。 extern uchar SPI_Write_Buf(uchar reg, uchar * pBuf, uchar bytes)。 extern void RX_Mode(void)。 extern void TX_Mode(uchar * BUF)。 extern uchar Check_ACK(bit clear)。 extern void CheckButtons()。 endif /* _API_DEF_ */ include //uchar code TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01}。 // 定义一个静态发送地址 23 uchar code TX_ADDRESS[TX_ADR_WIDTH] = {0xb1,0xb2,0xb3,0xb4,0x01}。 //uchar code TX_ADDRESS[TX_ADR_WIDTH] = {0x02,0xb4,0xb3,0xb2,0xb1}。 uchar code RX_ADDRESS1[TX_ADR_WIDTH] = {0xb0,0xb2,0xb3,0xb4,0x01}。 uchar RX_BUF[TX_PLOAD_WIDTH]。 /*uchar TX_BUF[TX_PLOAD_WIDTH]= { 0xfe }。 */ // uchar TX_BUF=0x00。 uchar flag,status。 uchar DATA = 0x01。 uchar bdata sta。 sbit RX_DR = sta^6。 sbit TX_DS = sta^5。 sbit MAX_RT = sta^4。 /**************************************************/ 24 /************************************************** 函数 : init_io() 描述 : 初始化 IO /**************************************************/ void init_io(void) { CE = 0。 // 待机 CSN = 1。 // SPI 禁止 SCK = 0。 // SPI 时钟置低 IRQ = 1。 // 中断复位 // LED = 0x00。 // 关闭指示灯 } /**************************************************/ /************************************************** 函数: delay_ms() 描述: 延迟 x 毫秒 25 /**************************************************/ void delay_ms(uchar x) { uchar i, j。 i = 0。 for(i=0。 ix。 i++) { j = while(j)。 j = while(j)。 } } /**************************************************/ /************************************************** 函数: SPI_RW() 描述: 根据 SPI 协议,写一字节数据到 nRF24L01,同时从 nRF24L01 读出一字节 /**************************************************/ 26 uchar SPI_RW(uchar byte) { uchar i。 for(i=0。 i8。 i++) // 循环 8 次 { MOSI = (byte amp。 0x80)。 // byte 最高位输出到 MOSI byte = 1。 // 低一位移位到最高位 SCK = 1。 // 拉高 SCK, nRF24L01 从MOSI 读入 1 位数据,同时从 MISO 输出 1 位数据 byte |= MISO。 // 读 MISO 到 byte 最低位 SCK = 0。 // SCK 置低 } return(byte)。 // 返回读出的一字节 } /**************************************************/ /************************************************** 函数: SPI_RW_Reg() 描述: 写数据 value 到 reg 寄存器 /**************************************************/ 27 uchar SPI_RW_Reg(uchar reg, uchar value) { uchar status。 CSN = 0。 // CSN 置低,开始传输数据 status = SPI_RW(reg)。 // 选择寄存器,同时返回状态字 SPI_RW(value)。 // 然后写数据到该寄存器 CSN = 1。 // CSN 拉高,结束数据传输 return(status)。 // 返回状态寄存器 } /**************************************************/ /************************************************** 函数: SPI_Read() 描述: 从 reg 寄存器读一字节 /**************************************************/ uchar SPI_Read(uchar reg) { uchar reg_val。 CSN = 0。 // CSN 置低,开始传输数据 SPI_RW(reg)。 // 选择寄存器 28 reg_val = SPI_RW(0)。 // 然后从该寄存器读数据 CSN = 1。 // CSN 拉高,结束数据传输 return(reg_val)。 // 返回寄存器数据 } /**************************************************/ /************************************************** 函数: SPI_Read_Buf() 描述: 从 reg 寄存器读出 bytes 个字节,通常用来读取接收通道 数据或接收 /发送地址 /**************************************************/ uchar SPI_Read_Buf(uchar reg, uchar * pBuf, uchar bytes) { uchar status, i。 CSN = 0。 // CSN 置低,开始传输数据 status = SPI_RW(reg)。 // 选择寄存器,同时返回状态字 for(i=0。 ibytes。 i++) pBuf[i] = SPI_RW(0)。 // 逐个字节从 nRF24L01 读出 CSN = 1。 // CSN 拉高,结束数据传输 return(status)。 // 返回状态寄存器 29 } /**************************************************/ /************************************************** 函数: SPI_Write_Buf() 描述: 把 pBuf 缓存中的数据写入到 nRF24L01,通常用来写入发 射通道数据或接收 /发送地址 /**************************************************/ uchar SPI_Write_Buf(uchar reg, uchar * pBuf, uchar bytes) { uchar stat。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。