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

📄 main.lis

📁 nRF24L01详细编程资料
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0134                   .dbline -2
 0134           L22:
 0134                   .dbline 0 ; func end
 0134 0895              ret
 0136                   .dbend
 0136                   .dbfunc e delay _delay fV
                        .even
 0136           _delay::
 0136                   .dbline -1
 0136                   .dbline 208
 0136           ; }
 0136           ; void delay(void)//
 0136           ; {
 0136                   .dbline 209
 0136           ;       NOP();
 0136 0000              nop
 0138                   .dbline 210
 0138           ;       NOP();
 0138 0000              nop
 013A                   .dbline 211
 013A           ;       NOP();
 013A 0000              nop
 013C                   .dbline 212
 013C           ;       NOP();
 013C 0000              nop
 013E                   .dbline 213
 013E           ;       NOP();
 013E 0000              nop
 0140                   .dbline 214
 0140           ;       NOP();
 0140 0000              nop
 0142                   .dbline -2
 0142           L23:
 0142                   .dbline 0 ; func end
 0142 0895              ret
 0144                   .dbend
 0144                   .dbfunc e delayms _delayms fV
 0144           ;            dly -> R16,R17
                        .even
 0144           _delayms::
 0144                   .dbline -1
 0144                   .dbline 217
 0144           ; }
 0144           ; void delayms(unsigned short   dly)//
 0144           ; {
 0144                   .dbline 218
 0144           ;       for(;dly>0;dly--) ;
 0144 02C0              rjmp L28
 0146           L25:
 0146                   .dbline 218
 0146           L26:
 0146                   .dbline 218
 0146 0150              subi R16,1
 0148 1040              sbci R17,0
 014A           L28:
 014A                   .dbline 218
 014A 0030              cpi R16,0
 014C 0107              cpc R16,R17
 014E D9F7              brne L25
 0150           X9:
 0150                   .dbline -2
 0150           L24:
 0150                   .dbline 0 ; func end
 0150 0895              ret
 0152                   .dbsym r dly 16 s
 0152                   .dbend
 0152                   .dbfunc e clear_buf _clear_buf fV
 0152           ;         number -> R18
 0152           ;            ptr -> R16,R17
                        .even
 0152           _clear_buf::
 0152                   .dbline -1
 0152                   .dbline 222
 0152           ; }
 0152           ; 
 0152           ; void clear_buf(unsigned char  *ptr,unsigned char number)//清零buffer,指定字节个数
 0152           ; {
 0152                   .dbline 223
 0152           ;       for (;number>0;number--) *ptr++=0;
 0152 05C0              rjmp L33
 0154           L30:
 0154                   .dbline 223
 0154 2224              clr R2
 0156 F801              movw R30,R16
 0158 2192              st Z+,R2
 015A 8F01              movw R16,R30
 015C           L31:
 015C                   .dbline 223
 015C 2A95              dec R18
 015E           L33:
 015E                   .dbline 223
 015E 80E0              ldi R24,0
 0160 8217              cp R24,R18
 0162 C0F3              brlo L30
 0164           X10:
 0164                   .dbline -2
 0164           L29:
 0164                   .dbline 0 ; func end
 0164 0895              ret
 0166                   .dbsym r number 18 c
 0166                   .dbsym r ptr 16 pc
 0166                   .dbend
 0166                   .dbfunc e SPI_RW _SPI_RW fc
 0166           ;        bit_ctr -> R22
 0166           ;           byte -> R20
                        .even
 0166           _SPI_RW::
 0166 00D0              rcall push_xgsetF000
 0168 402F              mov R20,R16
 016A                   .dbline -1
 016A                   .dbline 234
 016A           ; }
 016A           ; //------------------------------------------------------
 016A           ; /**************************************************
 016A           ; Function: SPI_RW();
 016A           ; 
 016A           ; Description:
 016A           ;   Writes one byte to nRF24L01, and return the byte read
 016A           ;   from nRF24L01 during write, according to SPI protocol  */
 016A           ; /**************************************************/
 016A           ; unsigned char SPI_RW(unsigned char byte)
 016A           ; {
 016A                   .dbline 236
 016A           ;       unsigned char  bit_ctr; 
 016A           ;       for(bit_ctr=0;bit_ctr<8;bit_ctr++)      // output 8-bit
 016A 6627              clr R22
 016C 0FC0              rjmp L38
 016E           L35:
 016E                   .dbline 237
 016E           ;       {
 016E                   .dbline 238
 016E           ;               if(byte & 0x80) 
 016E 47FF              sbrs R20,7
 0170 02C0              rjmp L39
 0172           X11:
 0172                   .dbline 239
 0172           ;                       nRF24L01_MOSIH;
 0172 289A              sbi 0x5,0
 0174 01C0              rjmp L40
 0176           L39:
 0176                   .dbline 241
 0176           ;               else 
 0176           ;                       nRF24L01_MOSIL;
 0176 2898              cbi 0x5,0
 0178           L40:
 0178                   .dbline 242
 0178           ;               delay();
 0178 DEDF              rcall _delay
 017A                   .dbline 243
 017A           ;               byte = (byte << 1);                     // shift next bit into MSB..
 017A 440F              lsl R20
 017C                   .dbline 244
 017C           ;               nRF24L01_SCKH;
 017C 299A              sbi 0x5,1
 017E                   .dbline 245
 017E           ;               delay();
 017E DBDF              rcall _delay
 0180                   .dbline 246
 0180           ;               if(PINB&0x08) byte |= 1;
 0180 1B9B              sbis 0x3,3
 0182 01C0              rjmp L41
 0184           X12:
 0184                   .dbline 246
 0184 4160              ori R20,1
 0186           L41:
 0186                   .dbline 247
 0186           ;               nRF24L01_SCKL;
 0186 2998              cbi 0x5,1
 0188                   .dbline 248
 0188           ;               delay();
 0188 D6DF              rcall _delay
 018A                   .dbline 249
 018A           ;       }
 018A           L36:
 018A                   .dbline 236
 018A 6395              inc R22
 018C           L38:
 018C                   .dbline 236
 018C 6830              cpi R22,8
 018E 78F3              brlo L35
 0190           X13:
 0190                   .dbline 250
 0190           ;     return(byte);                                     // return read byte
 0190 042F              mov R16,R20
 0192                   .dbline -2
 0192           L34:
 0192                   .dbline 0 ; func end
 0192 00C0              rjmp pop_xgsetF000
 0194                   .dbsym r bit_ctr 22 c
 0194                   .dbsym r byte 20 c
 0194                   .dbend
 0194                   .dbfunc e SPI_RW_Reg _SPI_RW_Reg fc
 0194           ;         status -> R10
 0194           ;          value -> R12
 0194           ;            reg -> R10
                        .even
 0194           _SPI_RW_Reg::
 0194 00D0              rcall push_xgset003C
 0196 C22E              mov R12,R18
 0198 A02E              mov R10,R16
 019A                   .dbline -1
 019A                   .dbline 259
 019A           ; }
 019A           ; /**************************************************
 019A           ; Function: SPI_RW_Reg();
 019A           ; 
 019A           ; Description:
 019A           ;   Writes value 'value' to register 'reg' */
 019A           ; /**************************************************/
 019A           ; unsigned char SPI_RW_Reg(unsigned char reg, unsigned char value)
 019A           ; {
 019A                   .dbline 261
 019A           ;       unsigned char status;
 019A           ;       nRF24L01_CSNL;
 019A 5E98              cbi 0xb,6
 019C                   .dbline 262
 019C           ;       delay();
 019C CCDF              rcall _delay
 019E                   .dbline 263
 019E           ;       status = SPI_RW(reg);      // select register
 019E 0A2D              mov R16,R10
 01A0 E2DF              rcall _SPI_RW
 01A2 A02E              mov R10,R16
 01A4                   .dbline 264
 01A4           ;       SPI_RW(value);             // ..and write value to it..
 01A4 0C2D              mov R16,R12
 01A6 DFDF              rcall _SPI_RW
 01A8                   .dbline 265
 01A8           ;       nRF24L01_CSNH;
 01A8 5E9A              sbi 0xb,6
 01AA                   .dbline 266
 01AA           ;       delay();
 01AA C5DF              rcall _delay
 01AC                   .dbline 267
 01AC           ;       return(status);            // return nRF24L01 status byte
 01AC 0A2D              mov R16,R10
 01AE                   .dbline -2
 01AE           L43:
 01AE                   .dbline 0 ; func end
 01AE 00C0              rjmp pop_xgset003C
 01B0                   .dbsym r status 10 c
 01B0                   .dbsym r value 12 c
 01B0                   .dbsym r reg 10 c
 01B0                   .dbend
 01B0                   .dbfunc e SPI_Read _SPI_Read fc
 01B0           ;        reg_val -> R10
 01B0           ;            reg -> R10
                        .even
 01B0           _SPI_Read::
 01B0 AA92              st -y,R10
 01B2 BA92              st -y,R11
 01B4 A02E              mov R10,R16
 01B6                   .dbline -1
 01B6                   .dbline 276
 01B6           ; }
 01B6           ; /**************************************************
 01B6           ; Function: SPI_Read();
 01B6           ; 
 01B6           ; Description:
 01B6           ;   Read one byte from nRF24L01 register, 'reg'  */
 01B6           ; /**************************************************/
 01B6           ; unsigned char SPI_Read(unsigned char reg)
 01B6           ; {
 01B6                   .dbline 278
 01B6           ;       unsigned char reg_val;
 01B6           ;       nRF24L01_CSNL;
 01B6 5E98              cbi 0xb,6
 01B8                   .dbline 279
 01B8           ;       delay();
 01B8 BEDF              rcall _delay
 01BA                   .dbline 280
 01BA           ;       SPI_RW(reg);            // Select register to read from..
 01BA 0A2D              mov R16,R10
 01BC D4DF              rcall _SPI_RW
 01BE                   .dbline 281
 01BE           ;       reg_val = SPI_RW(0);    // ..then read registervalue
 01BE 0027              clr R16
 01C0 D2DF              rcall _SPI_RW
 01C2 A02E              mov R10,R16
 01C4                   .dbline 282
 01C4           ;       nRF24L01_CSNH;
 01C4 5E9A              sbi 0xb,6
 01C6                   .dbline 283
 01C6           ;       delay();
 01C6 B7DF              rcall _delay
 01C8                   .dbline 284
 01C8           ;       return(reg_val);        // return register value
 01C8 0A2D              mov R16,R10
 01CA                   .dbline -2
 01CA           L44:
 01CA                   .dbline 0 ; func end
 01CA B990              ld R11,y+
 01CC A990              ld R10,y+
 01CE 0895              ret
 01D0                   .dbsym r reg_val 10 c
 01D0                   .dbsym r reg 10 c
 01D0                   .dbend
 01D0                   .dbfunc e SPI_Read_Buf _SPI_Read_Buf fc
 01D0           ;         status -> R10
 01D0           ;       byte_ctr -> R12
 01D0           ;          bytes -> y+6
 01D0           ;           pBuf -> R14,R15
 01D0           ;            reg -> R10
                        .even
 01D0           _SPI_Read_Buf::
 01D0 00D0              rcall push_xgset00FC
 01D2 7901              movw R14,R18
 01D4 A02E              mov R10,R16
 01D6                   .dbline -1
 01D6                   .dbline 294
 01D6           ; }
 01D6           ; /**************************************************
 01D6           ; Function: SPI_Read_Buf();
 01D6           ; 
 01D6           ; Description:
 01D6           ;   Reads 'bytes' #of bytes from register 'reg'
 01D6           ;   Typically used to read RX payload, Rx/Tx address */

⌨️ 快捷键说明

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