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

📄 2.4g+̤

📁 2.4G无线模块资料
💻 4G+̤
📖 第 1 页 / 共 5 页
字号:
 01C4           ;          value -> R22
 01C4           ;            reg -> R20
                        .even
 01C4           _SPI_RW_Reg::
 01C4 00D0              rcall push_gset2
 01C6 622F              mov R22,R18
 01C8 402F              mov R20,R16
 01CA                   .dbline -1
 01CA                   .dbline 316
 01CA           ; }
 01CA           ; /**************************************************
 01CA           ; Function: SPI_RW_Reg();
 01CA           ; 
 01CA           ; Description:
 01CA           ;   Writes value 'value' to register 'reg' */
 01CA           ; /**************************************************/
 01CA           ; unsigned char SPI_RW_Reg(unsigned char reg, unsigned char value)
 01CA           ; {
 01CA                   .dbline 318
 01CA           ;       unsigned char status;
 01CA           ;       nRF24L01_CSNL;
 01CA 5E98              cbi 0xb,6
 01CC                   .dbline 319
 01CC           ;       delay();
 01CC CBDF              rcall _delay
 01CE                   .dbline 320
 01CE           ;       status = SPI_RW(reg);      // select register
 01CE 042F              mov R16,R20
 01D0 E1DF              rcall _SPI_RW
 01D2 402F              mov R20,R16
 01D4                   .dbline 321
 01D4           ;       SPI_RW(value);             // ..and write value to it..
 01D4 062F              mov R16,R22
 01D6 DEDF              rcall _SPI_RW
 01D8                   .dbline 322
 01D8           ;       nRF24L01_CSNH;
 01D8 5E9A              sbi 0xb,6
 01DA                   .dbline 323
 01DA           ;       delay();
 01DA C4DF              rcall _delay
 01DC                   .dbline 324
 01DC           ;       return(status);            // return nRF24L01 status byte
 01DC 042F              mov R16,R20
 01DE                   .dbline -2
 01DE           L50:
 01DE 00D0              rcall pop_gset2
 01E0                   .dbline 0 ; func end
 01E0 0895              ret
 01E2                   .dbsym r status 20 c
 01E2                   .dbsym r value 22 c
 01E2                   .dbsym r reg 20 c
 01E2                   .dbend
 01E2                   .dbfunc e SPI_Read _SPI_Read fc
 01E2           ;        reg_val -> R20
 01E2           ;            reg -> R20
                        .even
 01E2           _SPI_Read::
 01E2 00D0              rcall push_gset1
 01E4 402F              mov R20,R16
 01E6                   .dbline -1
 01E6                   .dbline 333
 01E6           ; }
 01E6           ; /**************************************************
 01E6           ; Function: SPI_Read();
 01E6           ; 
 01E6           ; Description:
 01E6           ;   Read one byte from nRF24L01 register, 'reg'  */
 01E6           ; /**************************************************/
 01E6           ; unsigned char SPI_Read(unsigned char reg)
 01E6           ; {
 01E6                   .dbline 335
 01E6           ;       unsigned char reg_val;
 01E6           ;       nRF24L01_CSNL;
 01E6 5E98              cbi 0xb,6
 01E8                   .dbline 336
 01E8           ;       delay();
 01E8 BDDF              rcall _delay
 01EA                   .dbline 337
 01EA           ;       SPI_RW(reg);            // Select register to read from..
 01EA 042F              mov R16,R20
 01EC D3DF              rcall _SPI_RW
 01EE                   .dbline 338
 01EE           ;       reg_val = SPI_RW(0);    // ..then read registervalue
 01EE 0027              clr R16
 01F0 D1DF              rcall _SPI_RW
 01F2 402F              mov R20,R16
 01F4                   .dbline 339
 01F4           ;       nRF24L01_CSNH;
 01F4 5E9A              sbi 0xb,6
 01F6                   .dbline 340
 01F6           ;       delay();
 01F6 B6DF              rcall _delay
 01F8                   .dbline 341
 01F8           ;       return(reg_val);        // return register value
 01F8 042F              mov R16,R20
 01FA                   .dbline -2
 01FA           L51:
 01FA 00D0              rcall pop_gset1
 01FC                   .dbline 0 ; func end
 01FC 0895              ret
 01FE                   .dbsym r reg_val 20 c
 01FE                   .dbsym r reg 20 c
 01FE                   .dbend
 01FE                   .dbfunc e SPI_Read_Buf _SPI_Read_Buf fc
 01FE           ;         status -> R20
 01FE           ;       byte_ctr -> R22
 01FE           ;          bytes -> R10
 01FE           ;           pBuf -> R12,R13
 01FE           ;            reg -> R20
                        .even
 01FE           _SPI_Read_Buf::
 01FE 00D0              rcall push_gset4
 0200 6901              movw R12,R18
 0202 402F              mov R20,R16
 0204 A884              ldd R10,y+8
 0206                   .dbline -1
 0206                   .dbline 351
 0206           ; }
 0206           ; /**************************************************
 0206           ; Function: SPI_Read_Buf();
 0206           ; 
 0206           ; Description:
 0206           ;   Reads 'bytes' #of bytes from register 'reg'
 0206           ;   Typically used to read RX payload, Rx/Tx address */
 0206           ; /**************************************************/
 0206           ; unsigned char SPI_Read_Buf(unsigned char reg, unsigned char *pBuf, unsigned char bytes)
 0206           ; {
 0206                   .dbline 353
 0206           ;       unsigned char status,byte_ctr;
 0206           ;       nRF24L01_CSNL;
 0206 5E98              cbi 0xb,6
 0208                   .dbline 354
 0208           ;       delay();
 0208 ADDF              rcall _delay
 020A                   .dbline 355
 020A           ;       status = SPI_RW(reg);                   // Select register to write to and read status byte
 020A 042F              mov R16,R20
 020C C3DF              rcall _SPI_RW
 020E 402F              mov R20,R16
 0210                   .dbline 356
 0210           ;       for(byte_ctr=0;byte_ctr<bytes;byte_ctr++)
 0210 6627              clr R22
 0212 08C0              rjmp L56
 0214           L53:
 0214                   .dbline 357
 0214 0027              clr R16
 0216 BEDF              rcall _SPI_RW
 0218 E62F              mov R30,R22
 021A FF27              clr R31
 021C EC0D              add R30,R12
 021E FD1D              adc R31,R13
 0220 0083              std z+0,R16
 0222           L54:
 0222                   .dbline 356
 0222 6395              inc R22
 0224           L56:
 0224                   .dbline 356
 0224 6A15              cp R22,R10
 0226 B0F3              brlo L53
 0228                   .dbline 358
 0228           ;       pBuf[byte_ctr] = SPI_RW(0);    // Perform SPI_RW to read byte from nRF24L01
 0228           ;       nRF24L01_CSNH;
 0228 5E9A              sbi 0xb,6
 022A                   .dbline 359
 022A           ;       delay();
 022A 9CDF              rcall _delay
 022C                   .dbline 360
 022C           ;       return(status);                    // return nRF24L01 status byte
 022C 042F              mov R16,R20
 022E                   .dbline -2
 022E           L52:
 022E 00D0              rcall pop_gset4
 0230                   .dbline 0 ; func end
 0230 0895              ret
 0232                   .dbsym r status 20 c
 0232                   .dbsym r byte_ctr 22 c
 0232                   .dbsym r bytes 10 c
 0232                   .dbsym r pBuf 12 pc
 0232                   .dbsym r reg 20 c
 0232                   .dbend
 0232                   .dbfunc e SPI_Write_Buf _SPI_Write_Buf fc
 0232           ;         status -> R20
 0232           ;       byte_ctr -> R22
 0232           ;          bytes -> R10
 0232           ;           pBuf -> R12,R13
 0232           ;            reg -> R20
                        .even
 0232           _SPI_Write_Buf::
 0232 00D0              rcall push_gset4
 0234 6901              movw R12,R18
 0236 402F              mov R20,R16
 0238 A884              ldd R10,y+8
 023A                   .dbline -1
 023A                   .dbline 370
 023A           ; }
 023A           ; /**************************************************
 023A           ; Function: SPI_Write_Buf();
 023A           ; 
 023A           ; Description:
 023A           ;   Writes contents of buffer '*pBuf' to nRF24L01
 023A           ;   Typically used to write TX payload, Rx/Tx address */
 023A           ; /**************************************************/
 023A           ; unsigned char SPI_Write_Buf(unsigned char reg, unsigned char *pBuf, unsigned char bytes)
 023A           ; {
 023A                   .dbline 372
 023A           ;       unsigned char status,byte_ctr;
 023A           ;       nRF24L01_CSNL;                                  // Set nRF24L01_CSN low, init SPI tranaction
 023A 5E98              cbi 0xb,6
 023C                   .dbline 373
 023C           ;       delay();
 023C 93DF              rcall _delay
 023E                   .dbline 374
 023E           ;       status = SPI_RW(reg);                                           // Select register to write to and read status byte
 023E 042F              mov R16,R20
 0240 A9DF              rcall _SPI_RW
 0242 402F              mov R20,R16
 0244                   .dbline 375
 0244           ;       for(byte_ctr=0; byte_ctr<bytes; byte_ctr++) // then write all byte in buffer(*pBuf)
 0244 6627              clr R22
 0246 06C0              rjmp L61
 0248           L58:
 0248                   .dbline 376
 0248 F601              movw R30,R12
 024A 0191              ld R16,Z+
 024C 6F01              movw R12,R30
 024E A2DF              rcall _SPI_RW
 0250 402F              mov R20,R16
 0252           L59:
 0252                   .dbline 375
 0252 6395              inc R22
 0254           L61:
 0254                   .dbline 375
 0254 6A15              cp R22,R10
 0256 C0F3              brlo L58
 0258                   .dbline 377
 0258           ;       status = SPI_RW(*pBuf++);            
 0258           ;       nRF24L01_CSNH;                                                          // Set nRF24L01_CSN high again
 0258 5E9A              sbi 0xb,6
 025A                   .dbline 378
 025A           ;       delay();
 025A 84DF              rcall _delay
 025C                   .dbline 379
 025C           ;       return(status);                                                 // return nRF24L01 status byte
 025C 042F              mov R16,R20
 025E                   .dbline -2
 025E           L57:
 025E 00D0              rcall pop_gset4
 0260                   .dbline 0 ; func end
 0260 0895              ret
 0262                   .dbsym r status 20 c
 0262                   .dbsym r byte_ctr 22 c
 0262                   .dbsym r bytes 10 c
 0262                   .dbsym r pBuf 12 pc
 0262                   .dbsym r reg 20 c
 0262                   .dbend
 0262                   .dbfunc e RX_Mode _RX_Mode fV
                        .even
 0262           _RX_Mode::
 0262 2197              sbiw R28,1
 0264                   .dbline -1
 0264                   .dbline 392
 0264           ; }
 0264           ; /**************************************************
 0264           ; Function: RX_Mode();
 0264           ; 
 0264           ; Description:
 0264           ;   This function initializes one nRF24L01 device to
 0264           ;   RX Mode, set RX address, writes RX payload width,
 0264           ;   select RF channel, datarate & LNA HCURR.
 0264           ;   After init, CE is toggled high, which means that
 0264           ;   this device is now ready to receive a datapacket. */
 0264           ; /**************************************************/
 0264           ; void RX_Mode(void)
 0264           ; {
 0264                   .dbline 393
 0264           ;       nRF24L01_CEL;
 0264 5D98              cbi 0xb,5
 0266                   .dbline 394
 0266           ;       delay();
 0266 7EDF              rcall _delay
 0268                   .dbline 395
 0268           ;       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
 0268 85E0              ldi R24,5
 026A 8883              std y+0,R24
 026C 20E0              ldi R18,<_TX_ADDRESS
 026E 30E0              ldi R19,>_TX_ADDRESS
 0270 0AE2              ldi R16,42
 0272 DFDF              rcall _SPI_Write_Buf
 0274                   .dbline 397
 0274           ; 
 0274           ;       SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);      // Enable Auto.Ack:Pipe0
 0274 21E0              ldi R18,1
 0276 01E2              ldi R16,33
 0278 A5DF              rcall _SPI_RW_Reg
 027A                   .dbline 398
 027A           ;       SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);  // Enable Pipe0
 027A 21E0              ldi R18,1
 027C 02E2              ldi R16,34
 027E A2DF              rcall _SPI_RW_Reg

⌨️ 快捷键说明

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