⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2.4g+̤

📁 2.4G无线模块资料
💻 4G+̤
📖 第 1 页 / 共 5 页
字号:
 017E           ; /**************************************************/
 017E           ; unsigned char SPI_RW_Reg(unsigned char reg, unsigned char value)
 017E           ; {
 017E                   .dbline 300
 017E           ;       unsigned char status;
 017E           ;       nRF24L01_CSNL;
 017E 5E98              cbi 0xb,6
 0180                   .dbline 301
 0180           ;       delay();
 0180 CBDF              rcall _delay
 0182                   .dbline 302
 0182           ;       status = SPI_RW(reg);      // select register
 0182 042F              mov R16,R20
 0184 E1DF              rcall _SPI_RW
 0186 402F              mov R20,R16
 0188                   .dbline 303
 0188           ;       SPI_RW(value);             // ..and write value to it..
 0188 062F              mov R16,R22
 018A DEDF              rcall _SPI_RW
 018C                   .dbline 304
 018C           ;       nRF24L01_CSNH;
 018C 5E9A              sbi 0xb,6
 018E                   .dbline 305
 018E           ;       delay();
 018E C4DF              rcall _delay
 0190                   .dbline 306
 0190           ;       return(status);            // return nRF24L01 status byte
 0190 042F              mov R16,R20
 0192                   .dbline -2
 0192           L42:
 0192 00D0              rcall pop_gset2
 0194                   .dbline 0 ; func end
 0194 0895              ret
 0196                   .dbsym r status 20 c
 0196                   .dbsym r value 22 c
 0196                   .dbsym r reg 20 c
 0196                   .dbend
 0196                   .dbfunc e SPI_Read _SPI_Read fc
 0196           ;        reg_val -> R20
 0196           ;            reg -> R20
                        .even
 0196           _SPI_Read::
 0196 00D0              rcall push_gset1
 0198 402F              mov R20,R16
 019A                   .dbline -1
 019A                   .dbline 315
 019A           ; }
 019A           ; /**************************************************
 019A           ; Function: SPI_Read();
 019A           ; 
 019A           ; Description:
 019A           ;   Read one byte from nRF24L01 register, 'reg'  */
 019A           ; /**************************************************/
 019A           ; unsigned char SPI_Read(unsigned char reg)
 019A           ; {
 019A                   .dbline 317
 019A           ;       unsigned char reg_val;
 019A           ;       nRF24L01_CSNL;
 019A 5E98              cbi 0xb,6
 019C                   .dbline 318
 019C           ;       delay();
 019C BDDF              rcall _delay
 019E                   .dbline 319
 019E           ;       SPI_RW(reg);            // Select register to read from..
 019E 042F              mov R16,R20
 01A0 D3DF              rcall _SPI_RW
 01A2                   .dbline 320
 01A2           ;       reg_val = SPI_RW(0);    // ..then read registervalue
 01A2 0027              clr R16
 01A4 D1DF              rcall _SPI_RW
 01A6 402F              mov R20,R16
 01A8                   .dbline 321
 01A8           ;       nRF24L01_CSNH;
 01A8 5E9A              sbi 0xb,6
 01AA                   .dbline 322
 01AA           ;       delay();
 01AA B6DF              rcall _delay
 01AC                   .dbline 323
 01AC           ;       return(reg_val);        // return register value
 01AC 042F              mov R16,R20
 01AE                   .dbline -2
 01AE           L43:
 01AE 00D0              rcall pop_gset1
 01B0                   .dbline 0 ; func end
 01B0 0895              ret
 01B2                   .dbsym r reg_val 20 c
 01B2                   .dbsym r reg 20 c
 01B2                   .dbend
 01B2                   .dbfunc e SPI_Read_Buf _SPI_Read_Buf fc
 01B2           ;         status -> R20
 01B2           ;       byte_ctr -> R22
 01B2           ;          bytes -> R10
 01B2           ;           pBuf -> R12,R13
 01B2           ;            reg -> R20
                        .even
 01B2           _SPI_Read_Buf::
 01B2 00D0              rcall push_gset4
 01B4 6901              movw R12,R18
 01B6 402F              mov R20,R16
 01B8 A884              ldd R10,y+8
 01BA                   .dbline -1
 01BA                   .dbline 333
 01BA           ; }
 01BA           ; /**************************************************
 01BA           ; Function: SPI_Read_Buf();
 01BA           ; 
 01BA           ; Description:
 01BA           ;   Reads 'bytes' #of bytes from register 'reg'
 01BA           ;   Typically used to read RX payload, Rx/Tx address */
 01BA           ; /**************************************************/
 01BA           ; unsigned char SPI_Read_Buf(unsigned char reg, unsigned char *pBuf, unsigned char bytes)
 01BA           ; {
 01BA                   .dbline 335
 01BA           ;       unsigned char status,byte_ctr;
 01BA           ;       nRF24L01_CSNL;
 01BA 5E98              cbi 0xb,6
 01BC                   .dbline 336
 01BC           ;       delay();
 01BC ADDF              rcall _delay
 01BE                   .dbline 337
 01BE           ;       status = SPI_RW(reg);                   // Select register to write to and read status byte
 01BE 042F              mov R16,R20
 01C0 C3DF              rcall _SPI_RW
 01C2 402F              mov R20,R16
 01C4                   .dbline 338
 01C4           ;       for(byte_ctr=0;byte_ctr<bytes;byte_ctr++)
 01C4 6627              clr R22
 01C6 08C0              rjmp L48
 01C8           L45:
 01C8                   .dbline 339
 01C8 0027              clr R16
 01CA BEDF              rcall _SPI_RW
 01CC E62F              mov R30,R22
 01CE FF27              clr R31
 01D0 EC0D              add R30,R12
 01D2 FD1D              adc R31,R13
 01D4 0083              std z+0,R16
 01D6           L46:
 01D6                   .dbline 338
 01D6 6395              inc R22
 01D8           L48:
 01D8                   .dbline 338
 01D8 6A15              cp R22,R10
 01DA B0F3              brlo L45
 01DC                   .dbline 340
 01DC           ;       pBuf[byte_ctr] = SPI_RW(0);    // Perform SPI_RW to read byte from nRF24L01
 01DC           ;       nRF24L01_CSNH;
 01DC 5E9A              sbi 0xb,6
 01DE                   .dbline 341
 01DE           ;       delay();
 01DE 9CDF              rcall _delay
 01E0                   .dbline 342
 01E0           ;       return(status);                    // return nRF24L01 status byte
 01E0 042F              mov R16,R20
 01E2                   .dbline -2
 01E2           L44:
 01E2 00D0              rcall pop_gset4
 01E4                   .dbline 0 ; func end
 01E4 0895              ret
 01E6                   .dbsym r status 20 c
 01E6                   .dbsym r byte_ctr 22 c
 01E6                   .dbsym r bytes 10 c
 01E6                   .dbsym r pBuf 12 pc
 01E6                   .dbsym r reg 20 c
 01E6                   .dbend
 01E6                   .dbfunc e SPI_Write_Buf _SPI_Write_Buf fc
 01E6           ;         status -> R20
 01E6           ;       byte_ctr -> R22
 01E6           ;          bytes -> R10
 01E6           ;           pBuf -> R12,R13
 01E6           ;            reg -> R20
                        .even
 01E6           _SPI_Write_Buf::
 01E6 00D0              rcall push_gset4
 01E8 6901              movw R12,R18
 01EA 402F              mov R20,R16
 01EC A884              ldd R10,y+8
 01EE                   .dbline -1
 01EE                   .dbline 352
 01EE           ; }
 01EE           ; /**************************************************
 01EE           ; Function: SPI_Write_Buf();
 01EE           ; 
 01EE           ; Description:
 01EE           ;   Writes contents of buffer '*pBuf' to nRF24L01
 01EE           ;   Typically used to write TX payload, Rx/Tx address */
 01EE           ; /**************************************************/
 01EE           ; unsigned char SPI_Write_Buf(unsigned char reg, unsigned char *pBuf, unsigned char bytes)
 01EE           ; {
 01EE                   .dbline 354
 01EE           ;       unsigned char status,byte_ctr;
 01EE           ;       nRF24L01_CSNL;                                  // Set nRF24L01_CSN low, init SPI tranaction
 01EE 5E98              cbi 0xb,6
 01F0                   .dbline 355
 01F0           ;       delay();
 01F0 93DF              rcall _delay
 01F2                   .dbline 356
 01F2           ;       status = SPI_RW(reg);                                           // Select register to write to and read status byte
 01F2 042F              mov R16,R20
 01F4 A9DF              rcall _SPI_RW
 01F6 402F              mov R20,R16
 01F8                   .dbline 357
 01F8           ;       for(byte_ctr=0; byte_ctr<bytes; byte_ctr++) // then write all byte in buffer(*pBuf)
 01F8 6627              clr R22
 01FA 06C0              rjmp L53
 01FC           L50:
 01FC                   .dbline 358
 01FC F601              movw R30,R12
 01FE 0191              ld R16,Z+
 0200 6F01              movw R12,R30
 0202 A2DF              rcall _SPI_RW
 0204 402F              mov R20,R16
 0206           L51:
 0206                   .dbline 357
 0206 6395              inc R22
 0208           L53:
 0208                   .dbline 357
 0208 6A15              cp R22,R10
 020A C0F3              brlo L50
 020C                   .dbline 359
 020C           ;       status = SPI_RW(*pBuf++);            
 020C           ;       nRF24L01_CSNH;                                                          // Set nRF24L01_CSN high again
 020C 5E9A              sbi 0xb,6
 020E                   .dbline 360
 020E           ;       delay();
 020E 84DF              rcall _delay
 0210                   .dbline 361
 0210           ;       return(status);                                                 // return nRF24L01 status byte
 0210 042F              mov R16,R20
 0212                   .dbline -2
 0212           L49:
 0212 00D0              rcall pop_gset4
 0214                   .dbline 0 ; func end
 0214 0895              ret
 0216                   .dbsym r status 20 c
 0216                   .dbsym r byte_ctr 22 c
 0216                   .dbsym r bytes 10 c
 0216                   .dbsym r pBuf 12 pc
 0216                   .dbsym r reg 20 c
 0216                   .dbend
 0216                   .dbfunc e RX_Mode _RX_Mode fV
                        .even
 0216           _RX_Mode::
 0216 2197              sbiw R28,1
 0218                   .dbline -1
 0218                   .dbline 374
 0218           ; }
 0218           ; /**************************************************
 0218           ; Function: RX_Mode();
 0218           ; 
 0218           ; Description:
 0218           ;   This function initializes one nRF24L01 device to
 0218           ;   RX Mode, set RX address, writes RX payload width,
 0218           ;   select RF channel, datarate & LNA HCURR.
 0218           ;   After init, CE is toggled high, which means that
 0218           ;   this device is now ready to receive a datapacket. */
 0218           ; /**************************************************/
 0218           ; void RX_Mode(void)
 0218           ; {
 0218                   .dbline 375
 0218           ;       nRF24L01_CEL;
 0218 5D98              cbi 0xb,5
 021A                   .dbline 376
 021A           ;       delay();
 021A 7EDF              rcall _delay
 021C                   .dbline 377
 021C           ;       SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // Use the same address on the RX device as the TX device
 021C 85E0              ldi R24,5
 021E 8883              std y+0,R24
 0220 20E0              ldi R18,<_TX_ADDRESS
 0222 30E0              ldi R19,>_TX_ADDRESS
 0224 0AE2              ldi R16,42
 0226 DFDF              rcall _SPI_Write_Buf
 0228                   .dbline 379
 0228           ; 
 0228           ;       SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);      // Enable Auto.Ack:Pipe0
 0228 21E0              ldi R18,1
 022A 01E2              ldi R16,33
 022C A5DF              rcall _SPI_RW_Reg
 022E                   .dbline 380
 022E           ;       SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);  // Enable Pipe0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -