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

📄 main.lis

📁 nRF24L01详细编程资料
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0170                   .dbline 215
 0170           ;        CLI(); //disable all interrupts
 0170 F894              cli
 0172                   .dbline 216
 0172           ;        NOP();
 0172 0000              nop
 0174                   .dbline 217
 0174           ;       PORTB = 0x81;
 0174 81E8              ldi R24,129
 0176 85B9              out 0x5,R24
 0178                   .dbline 218
 0178           ;       DDRB  = 0xf3;
 0178 83EF              ldi R24,243
 017A 84B9              out 0x4,R24
 017C                   .dbline 219
 017C           ;       PORTD = 0x80;
 017C 80E8              ldi R24,128
 017E 8BB9              out 0xb,R24
 0180                   .dbline 220
 0180           ;       DDRD  = 0xff;
 0180 8FEF              ldi R24,255
 0182 8AB9              out 0xa,R24
 0184                   .dbline 221
 0184           ;       PORTC = 0x80;
 0184 80E8              ldi R24,128
 0186 88B9              out 0x8,R24
 0188                   .dbline 222
 0188           ;       DDRC  = 0x78;
 0188 88E7              ldi R24,120
 018A 87B9              out 0x7,R24
 018C                   .dbline 223
 018C           ;     nRF24L01_CEL;
 018C 5F98              cbi 0xb,7
 018E                   .dbline 224
 018E           ;       delay();
 018E 05D0              rcall _delay
 0190                   .dbline 225
 0190           ;       nRF24L01_CSNH;                  // Spi disable
 0190 5E9A              sbi 0xb,6
 0192                   .dbline 226
 0192           ;       delay();
 0192 03D0              rcall _delay
 0194                   .dbline 227
 0194           ;       nRF24L01_SCKL;  
 0194 2998              cbi 0x5,1
 0196                   .dbline 228
 0196           ;       delay();
 0196 01D0              rcall _delay
 0198                   .dbline -2
 0198           L32:
 0198                   .dbline 0 ; func end
 0198 0895              ret
 019A                   .dbend
 019A                   .dbfunc e delay _delay fV
                        .even
 019A           _delay::
 019A                   .dbline -1
 019A                   .dbline 231
 019A           ; }
 019A           ; void delay(void)//
 019A           ; {
 019A                   .dbline 232
 019A           ;       NOP();
 019A 0000              nop
 019C                   .dbline 233
 019C           ;       NOP();
 019C 0000              nop
 019E                   .dbline 234
 019E           ;       NOP();
 019E 0000              nop
 01A0                   .dbline 235
 01A0           ;       NOP();
 01A0 0000              nop
 01A2                   .dbline 236
 01A2           ;       NOP();
 01A2 0000              nop
 01A4                   .dbline 237
 01A4           ;       NOP();
 01A4 0000              nop
 01A6                   .dbline -2
 01A6           L33:
 01A6                   .dbline 0 ; func end
 01A6 0895              ret
 01A8                   .dbend
 01A8                   .dbfunc e delayms _delayms fV
 01A8           ;            dly -> R16,R17
                        .even
 01A8           _delayms::
 01A8                   .dbline -1
 01A8                   .dbline 240
 01A8           ; }
 01A8           ; void delayms(unsigned short   dly)//
 01A8           ; {
 01A8                   .dbline 241
 01A8           ;       for(;dly>0;dly--) ;
 01A8 02C0              rjmp L38
 01AA           L35:
 01AA                   .dbline 241
 01AA           L36:
 01AA                   .dbline 241
 01AA 0150              subi R16,1
 01AC 1040              sbci R17,0
 01AE           L38:
 01AE                   .dbline 241
 01AE 0030              cpi R16,0
 01B0 0107              cpc R16,R17
 01B2 D9F7              brne L35
 01B4           X15:
 01B4                   .dbline -2
 01B4           L34:
 01B4                   .dbline 0 ; func end
 01B4 0895              ret
 01B6                   .dbsym r dly 16 s
 01B6                   .dbend
 01B6                   .dbfunc e clear_buf _clear_buf fV
 01B6           ;         number -> R18
 01B6           ;            ptr -> R16,R17
                        .even
 01B6           _clear_buf::
 01B6                   .dbline -1
 01B6                   .dbline 245
 01B6           ; }
 01B6           ; 
 01B6           ; void clear_buf(unsigned char  *ptr,unsigned char number)//清零buffer,指定字节个数
 01B6           ; {
 01B6                   .dbline 246
 01B6           ;       for (;number>0;number--) *ptr++=0;
 01B6 05C0              rjmp L43
 01B8           L40:
 01B8                   .dbline 246
 01B8 2224              clr R2
 01BA F801              movw R30,R16
 01BC 2192              st Z+,R2
 01BE 8F01              movw R16,R30
 01C0           L41:
 01C0                   .dbline 246
 01C0 2A95              dec R18
 01C2           L43:
 01C2                   .dbline 246
 01C2 80E0              ldi R24,0
 01C4 8217              cp R24,R18
 01C6 C0F3              brlo L40
 01C8           X16:
 01C8                   .dbline -2
 01C8           L39:
 01C8                   .dbline 0 ; func end
 01C8 0895              ret
 01CA                   .dbsym r number 18 c
 01CA                   .dbsym r ptr 16 pc
 01CA                   .dbend
 01CA                   .dbfunc e SPI_RW _SPI_RW fc
 01CA           ;        bit_ctr -> R22
 01CA           ;           byte -> R20
                        .even
 01CA           _SPI_RW::
 01CA 00D0              rcall push_xgsetF000
 01CC 402F              mov R20,R16
 01CE                   .dbline -1
 01CE                   .dbline 257
 01CE           ; }
 01CE           ; //------------------------------------------------------
 01CE           ; /**************************************************
 01CE           ; Function: SPI_RW();
 01CE           ; 
 01CE           ; Description:
 01CE           ;   Writes one byte to nRF24L01, and return the byte read
 01CE           ;   from nRF24L01 during write, according to SPI protocol  */
 01CE           ; /**************************************************/
 01CE           ; unsigned char SPI_RW(unsigned char byte)
 01CE           ; {
 01CE                   .dbline 259
 01CE           ;       unsigned char  bit_ctr; 
 01CE           ;       for(bit_ctr=0;bit_ctr<8;bit_ctr++)      // output 8-bit
 01CE 6627              clr R22
 01D0 0FC0              rjmp L48
 01D2           L45:
 01D2                   .dbline 260
 01D2           ;       {
 01D2                   .dbline 261
 01D2           ;               if(byte & 0x80) 
 01D2 47FF              sbrs R20,7
 01D4 02C0              rjmp L49
 01D6           X17:
 01D6                   .dbline 262
 01D6           ;                       nRF24L01_MOSIH;
 01D6 289A              sbi 0x5,0
 01D8 01C0              rjmp L50
 01DA           L49:
 01DA                   .dbline 264
 01DA           ;               else 
 01DA           ;                       nRF24L01_MOSIL;
 01DA 2898              cbi 0x5,0
 01DC           L50:
 01DC                   .dbline 265
 01DC           ;               delay();
 01DC DEDF              rcall _delay
 01DE                   .dbline 266
 01DE           ;               byte = (byte << 1);                     // shift next bit into MSB..
 01DE 440F              lsl R20
 01E0                   .dbline 267
 01E0           ;               nRF24L01_SCKH;
 01E0 299A              sbi 0x5,1
 01E2                   .dbline 268
 01E2           ;               delay();
 01E2 DBDF              rcall _delay
 01E4                   .dbline 269
 01E4           ;               if(PINB&0x08) byte |= 1;
 01E4 1B9B              sbis 0x3,3
 01E6 01C0              rjmp L51
 01E8           X18:
 01E8                   .dbline 269
 01E8 4160              ori R20,1
 01EA           L51:
 01EA                   .dbline 270
 01EA           ;               nRF24L01_SCKL;
 01EA 2998              cbi 0x5,1
 01EC                   .dbline 271
 01EC           ;               delay();
 01EC D6DF              rcall _delay
 01EE                   .dbline 272
 01EE           ;       }
 01EE           L46:
 01EE                   .dbline 259
 01EE 6395              inc R22
 01F0           L48:
 01F0                   .dbline 259
 01F0 6830              cpi R22,8
 01F2 78F3              brlo L45
 01F4           X19:
 01F4                   .dbline 273
 01F4           ;     return(byte);                                     // return read byte
 01F4 042F              mov R16,R20
 01F6                   .dbline -2
 01F6           L44:
 01F6                   .dbline 0 ; func end
 01F6 00C0              rjmp pop_xgsetF000
 01F8                   .dbsym r bit_ctr 22 c
 01F8                   .dbsym r byte 20 c
 01F8                   .dbend
 01F8                   .dbfunc e SPI_RW_Reg _SPI_RW_Reg fc
 01F8           ;         status -> R10
 01F8           ;          value -> R12
 01F8           ;            reg -> R10
                        .even
 01F8           _SPI_RW_Reg::
 01F8 00D0              rcall push_xgset003C
 01FA C22E              mov R12,R18
 01FC A02E              mov R10,R16
 01FE                   .dbline -1
 01FE                   .dbline 282
 01FE           ; }
 01FE           ; /**************************************************
 01FE           ; Function: SPI_RW_Reg();
 01FE           ; 
 01FE           ; Description:
 01FE           ;   Writes value 'value' to register 'reg' */
 01FE           ; /**************************************************/
 01FE           ; unsigned char SPI_RW_Reg(unsigned char reg, unsigned char value)
 01FE           ; {
 01FE                   .dbline 284
 01FE           ;       unsigned char status;
 01FE           ;       nRF24L01_CSNL;
 01FE 5E98              cbi 0xb,6
 0200                   .dbline 285
 0200           ;       delay();
 0200 CCDF              rcall _delay
 0202                   .dbline 286
 0202           ;       status = SPI_RW(reg);      // select register
 0202 0A2D              mov R16,R10
 0204 E2DF              rcall _SPI_RW
 0206 A02E              mov R10,R16
 0208                   .dbline 287
 0208           ;       SPI_RW(value);             // ..and write value to it..
 0208 0C2D              mov R16,R12
 020A DFDF              rcall _SPI_RW
 020C                   .dbline 288
 020C           ;       nRF24L01_CSNH;
 020C 5E9A              sbi 0xb,6
 020E                   .dbline 289
 020E           ;       delay();
 020E C5DF              rcall _delay
 0210                   .dbline 290
 0210           ;       return(status);            // return nRF24L01 status byte
 0210 0A2D              mov R16,R10
 0212                   .dbline -2
 0212           L53:
 0212                   .dbline 0 ; func end
 0212 00C0              rjmp pop_xgset003C
 0214                   .dbsym r status 10 c
 0214                   .dbsym r value 12 c
 0214                   .dbsym r reg 10 c
 0214                   .dbend
 0214                   .dbfunc e SPI_Read _SPI_Read fc
 0214           ;        reg_val -> R10
 0214           ;            reg -> R10
                        .even
 0214           _SPI_Read::
 0214 AA92              st -y,R10
 0216 BA92              st -y,R11
 0218 A02E              mov R10,R16
 021A                   .dbline -1
 021A                   .dbline 299
 021A           ; }
 021A           ; /**************************************************
 021A           ; Function: SPI_Read();
 021A           ; 
 021A           ; Description:
 021A           ;   Read one byte from nRF24L01 register, 'reg'  */
 021A           ; /**************************************************/
 021A           ; unsigned char SPI_Read(unsigned char reg)
 021A           ; {
 021A                   .dbline 301
 021A           ;       unsigned char reg_val;
 021A           ;       nRF24L01_CSNL;
 021A 5E98              cbi 0xb,6
 021C                   .dbline 302
 021C           ;       delay();
 021C BEDF              rcall _delay
 021E                   .dbline 303
 021E           ;       SPI_RW(reg);            // Select register to read from..
 021E 0A2D              mov R16,R10
 0220 D4DF              rcall _SPI_RW
 0222                   .dbline 304
 0222           ;       reg_val = SPI_RW(0);    // ..then read registervalue
 0222 0027              clr R16
 0224 D2DF              rcall _SPI_RW
 0226 A02E              mov R10,R16
 0228                   .dbline 305
 0228           ;       nRF24L01_CSNH;
 0228 5E9A              sbi 0xb,6
 022A                   .dbline 306
 022A           ;       delay();
 022A B7DF              rcall _delay
 022C                   .dbline 307
 022C           ;       return(reg_val);        // return register value
 022C 0A2D              mov R16,R10
 022E                   .dbline -2
 022E           L54:
 022E                   .dbline 0 ; func end
 022E B990              ld R11,y+
 0230 A990              ld R10,y+

⌨️ 快捷键说明

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