📄 2.4g+̤
字号:
0114 ; }
0114 ; void nrf24l01init(void)
0114 ; {
0114 .dbline 228
0114 ; nRF24L01_IRQ_DIR;
0114 2298 cbi 0x4,2
0116 .dbline 229
0116 ; nRF24L01_MISO_DIR;
0116 2198 cbi 0x4,1
0118 .dbline 230
0118 ; nRF24L01_CE_DIR;
0118 559A sbi 0xa,5
011A .dbline 231
011A ; nRF24L01_SCK_DIR;
011A 579A sbi 0xa,7
011C .dbline 232
011C ; nRF24L01_CSN_DIR;
011C 569A sbi 0xa,6
011E .dbline 233
011E ; nRF24L01_MOSI_DIR;
011E 209A sbi 0x4,0
0120 .dbline -2
0120 L28:
0120 .dbline 0 ; func end
0120 0895 ret
0122 .dbend
0122 .dbfunc e init_CPU _init_CPU fV
.even
0122 _init_CPU::
0122 .dbline -1
0122 .dbline 240
0122 ; }
0122 ; /*-----------------------------------------------------------------------------
0122 ; Module: init_CPU
0122 ; Function: Initialization of CPU
0122 ; ------------------------------------------------------------------------------*/
0122 ; void init_CPU (void)
0122 ; {
0122 .dbline 241
0122 ; MCUCR = 0x00; //
0122 2224 clr R2
0124 25BE out 0x35,R2
0126 .dbline 242
0126 ; EICRA = 0x00; //extended ext ints
0126 20926900 sts 105,R2
012A .dbline 243
012A ; EIMSK = 0x00;
012A 2DBA out 0x1d,R2
012C .dbline 245
012C ;
012C ; TIMSK0 = 0x01; //timer 0 interrupt sources
012C 81E0 ldi R24,1
012E 80936E00 sts 110,R24
0132 .dbline 246
0132 ; TIMSK1 = 0x00; //timer 1 interrupt sources
0132 20926F00 sts 111,R2
0136 .dbline 247
0136 ; TIMSK2 = 0x00; //timer 2 interrupt sources
0136 20927000 sts 112,R2
013A .dbline 248
013A ; CLI(); //disable all interrupts
013A F894 cli
013C .dbline 249
013C ; NOP();
013C 0000 nop
013E .dbline 250
013E ; PORTB = 0x01;
013E 85B9 out 0x5,R24
0140 .dbline 251
0140 ; DDRB = 0xf3;
0140 83EF ldi R24,243
0142 84B9 out 0x4,R24
0144 .dbline 252
0144 ; PORTD = 0x80;
0144 80E8 ldi R24,128
0146 8BB9 out 0xb,R24
0148 .dbline 253
0148 ; DDRD = 0xE3;
0148 83EE ldi R24,227
014A 8AB9 out 0xa,R24
014C .dbline 254
014C ; PORTC = 0x80;
014C 80E8 ldi R24,128
014E 88B9 out 0x8,R24
0150 .dbline 255
0150 ; DDRC = 0x40;
0150 80E4 ldi R24,64
0152 87B9 out 0x7,R24
0154 .dbline 256
0154 ; nrf24l01init();
0154 DFDF rcall _nrf24l01init
0156 .dbline 257
0156 ; nRF24L01_CEL;
0156 5D98 cbi 0xb,5
0158 .dbline 258
0158 ; delay();
0158 05D0 rcall _delay
015A .dbline 259
015A ; nRF24L01_CSNH; // Spi disable
015A 5E9A sbi 0xb,6
015C .dbline 260
015C ; delay();
015C 03D0 rcall _delay
015E .dbline 261
015E ; nRF24L01_SCKL;
015E 5F98 cbi 0xb,7
0160 .dbline 262
0160 ; delay();
0160 01D0 rcall _delay
0162 .dbline -2
0162 L29:
0162 .dbline 0 ; func end
0162 0895 ret
0164 .dbend
0164 .dbfunc e delay _delay fV
.even
0164 _delay::
0164 .dbline -1
0164 .dbline 265
0164 ; }
0164 ; void delay(void)//
0164 ; {
0164 .dbline 266
0164 ; NOP();
0164 0000 nop
0166 .dbline 267
0166 ; NOP();
0166 0000 nop
0168 .dbline 268
0168 ; NOP();
0168 0000 nop
016A .dbline 269
016A ; NOP();
016A 0000 nop
016C .dbline 270
016C ; NOP();
016C 0000 nop
016E .dbline 271
016E ; NOP();
016E 0000 nop
0170 .dbline -2
0170 L30:
0170 .dbline 0 ; func end
0170 0895 ret
0172 .dbend
0172 .dbfunc e delayms _delayms fV
0172 ; dly -> R16,R17
.even
0172 _delayms::
0172 .dbline -1
0172 .dbline 274
0172 ; }
0172 ; void delayms(unsigned short dly)//
0172 ; {
0172 .dbline 275
0172 02C0 rjmp L35
0174 L32:
0174 .dbline 275
0174 L33:
0174 .dbline 275
0174 0150 subi R16,1
0176 1040 sbci R17,0
0178 L35:
0178 .dbline 275
0178 ; for(;dly>0;dly--) ;
0178 0030 cpi R16,0
017A 0107 cpc R16,R17
017C D9F7 brne L32
017E X1:
017E .dbline -2
017E L31:
017E .dbline 0 ; func end
017E 0895 ret
0180 .dbsym r dly 16 s
0180 .dbend
0180 .dbfunc e clear_buf _clear_buf fV
0180 ; number -> R18
0180 ; ptr -> R16,R17
.even
0180 _clear_buf::
0180 .dbline -1
0180 .dbline 279
0180 ; }
0180 ;
0180 ; void clear_buf(unsigned char *ptr,unsigned char number)//清零buffer,指定字节个数
0180 ; {
0180 .dbline 280
0180 05C0 rjmp L40
0182 L37:
0182 .dbline 280
0182 2224 clr R2
0184 F801 movw R30,R16
0186 2192 st Z+,R2
0188 8F01 movw R16,R30
018A L38:
018A .dbline 280
018A 2A95 dec R18
018C L40:
018C .dbline 280
018C ; for (;number>0;number--) *ptr++=0;
018C 2224 clr R2
018E 2216 cp R2,R18
0190 C0F3 brlo L37
0192 .dbline -2
0192 L36:
0192 .dbline 0 ; func end
0192 0895 ret
0194 .dbsym r number 18 c
0194 .dbsym r ptr 16 pc
0194 .dbend
0194 .dbfunc e SPI_RW _SPI_RW fc
0194 ; bit_ctr -> R20
0194 ; byte -> R22
.even
0194 _SPI_RW::
0194 00D0 rcall push_gset2
0196 602F mov R22,R16
0198 .dbline -1
0198 .dbline 291
0198 ; }
0198 ; //------------------------------------------------------
0198 ; /**************************************************
0198 ; Function: SPI_RW();
0198 ;
0198 ; Description:
0198 ; Writes one byte to nRF24L01, and return the byte read
0198 ; from nRF24L01 during write, according to SPI protocol */
0198 ; /**************************************************/
0198 ; unsigned char SPI_RW(unsigned char byte)
0198 ; {
0198 .dbline 293
0198 ; unsigned char bit_ctr;
0198 ; for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
0198 4427 clr R20
019A 0FC0 rjmp L45
019C L42:
019C .dbline 294
019C ; {
019C .dbline 295
019C ; if(byte & 0x80)
019C 67FF sbrs R22,7
019E 02C0 rjmp L46
01A0 .dbline 296
01A0 ; nRF24L01_MOSIH;
01A0 289A sbi 0x5,0
01A2 01C0 rjmp L47
01A4 L46:
01A4 .dbline 298
01A4 ; else
01A4 ; nRF24L01_MOSIL;
01A4 2898 cbi 0x5,0
01A6 L47:
01A6 .dbline 299
01A6 ; delay();
01A6 DEDF rcall _delay
01A8 .dbline 300
01A8 ; byte = (byte << 1); // shift next bit into MSB..
01A8 660F lsl R22
01AA .dbline 301
01AA ; nRF24L01_SCKH;
01AA 5F9A sbi 0xb,7
01AC .dbline 302
01AC ; delay();
01AC DBDF rcall _delay
01AE .dbline 303
01AE ; if(PINB&nRF24L01_MISO) byte |= 1;
01AE 199B sbis 0x3,1
01B0 01C0 rjmp L48
01B2 .dbline 303
01B2 6160 ori R22,1
01B4 L48:
01B4 .dbline 304
01B4 5F98 cbi 0xb,7
01B6 .dbline 305
01B6 D6DF rcall _delay
01B8 .dbline 306
01B8 L43:
01B8 .dbline 293
01B8 4395 inc R20
01BA L45:
01BA .dbline 293
01BA 4830 cpi R20,8
01BC 78F3 brlo L42
01BE .dbline 307
01BE ; nRF24L01_SCKL;
01BE ; delay();
01BE ; }
01BE ; return(byte); // return read byte
01BE 062F mov R16,R22
01C0 .dbline -2
01C0 L41:
01C0 00D0 rcall pop_gset2
01C2 .dbline 0 ; func end
01C2 0895 ret
01C4 .dbsym r bit_ctr 20 c
01C4 .dbsym r byte 22 c
01C4 .dbend
01C4 .dbfunc e SPI_RW_Reg _SPI_RW_Reg fc
01C4 ; status -> R20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -