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

📄 2.4g+̤

📁 2.4G无线模块资料
💻 4G+̤
📖 第 1 页 / 共 5 页
字号:
 0280                   .dbline 399
 0280           ;       SPI_RW_Reg(WRITE_REG + RF_CH, 40);        // Select RF channel 40
 0280 28E2              ldi R18,40
 0282 05E2              ldi R16,37
 0284 9FDF              rcall _SPI_RW_Reg
 0286                   .dbline 400
 0286           ;       SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH); // Select same RX payload width as TX Payload width
 0286 24E1              ldi R18,20
 0288 01E3              ldi R16,49
 028A 9CDF              rcall _SPI_RW_Reg
 028C                   .dbline 401
 028C           ;       SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);   // TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR
 028C 27E0              ldi R18,7
 028E 06E2              ldi R16,38
 0290 99DF              rcall _SPI_RW_Reg
 0292                   .dbline 402
 0292           ;       SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f);     // Set PWR_UP bit, enable CRC(2 bytes) & Prim:RX. RX_DR enabled..
 0292 2FE0              ldi R18,15
 0294 00E2              ldi R16,32
 0296 96DF              rcall _SPI_RW_Reg
 0298                   .dbline 403
 0298           ;       nRF24L01_CEH;
 0298 5D9A              sbi 0xb,5
 029A                   .dbline 404
 029A           ;       delay();
 029A 64DF              rcall _delay
 029C                   .dbline -2
 029C           L62:
 029C 2196              adiw R28,1
 029E                   .dbline 0 ; func end
 029E 0895              ret
 02A0                   .dbend
 02A0                   .dbfunc e TX_Mode _TX_Mode fV
                        .even
 02A0           _TX_Mode::
 02A0 2197              sbiw R28,1
 02A2                   .dbline -1
 02A2                   .dbline 424
 02A2           ;       //  This device is now ready to receive one packet of 16 bytes payload from a TX device sending to address
 02A2           ;   //  '3443101001', with auto acknowledgment, retransmit count of 10, RF channel 40 and datarate = 2Mbps.
 02A2           ; 
 02A2           ; }
 02A2           ; /**************************************************/
 02A2           ; 
 02A2           ; /**************************************************
 02A2           ; Function: TX_Mode();
 02A2           ; 
 02A2           ; Description:
 02A2           ;   This function initializes one nRF24L01 device to
 02A2           ;   TX mode, set TX address, set RX address for auto.ack,
 02A2           ;   fill TX payload, select RF channel, datarate & TX pwr.
 02A2           ;   PWR_UP is set, CRC(2 bytes) is enabled, & PRIM:TX.
 02A2           ; 
 02A2           ;   ToDo: One high pulse(>10us) on CE will now send this
 02A2           ;   packet and expext an acknowledgment from the RX device. */
 02A2           ; /**************************************************/
 02A2           ; void TX_Mode(void)
 02A2           ; {
 02A2                   .dbline 425
 02A2           ;       nRF24L01_CEL;
 02A2 5D98              cbi 0xb,5
 02A4                   .dbline 426
 02A4           ;       delay();
 02A4 5FDF              rcall _delay
 02A6                   .dbline 427
 02A6           ;       SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);    // Writes TX_Address to nRF24L01
 02A6 85E0              ldi R24,5
 02A8 8883              std y+0,R24
 02AA 20E0              ldi R18,<_TX_ADDRESS
 02AC 30E0              ldi R19,>_TX_ADDRESS
 02AE 00E3              ldi R16,48
 02B0 C0DF              rcall _SPI_Write_Buf
 02B2                   .dbline 428
 02B2           ;       SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // RX_Addr0 same as TX_Adr for Auto.Ack
 02B2 85E0              ldi R24,5
 02B4 8883              std y+0,R24
 02B6 20E0              ldi R18,<_TX_ADDRESS
 02B8 30E0              ldi R19,>_TX_ADDRESS
 02BA 0AE2              ldi R16,42
 02BC BADF              rcall _SPI_Write_Buf
 02BE                   .dbline 429
 02BE           ;       SPI_Write_Buf(WR_TX_PLOAD, Buffer, TX_PLOAD_WIDTH); // Writes data to TX payload
 02BE 84E1              ldi R24,20
 02C0 8883              std y+0,R24
 02C2 20E0              ldi R18,<_Buffer
 02C4 30E0              ldi R19,>_Buffer
 02C6 00EA              ldi R16,160
 02C8 B4DF              rcall _SPI_Write_Buf
 02CA                   .dbline 431
 02CA           ; 
 02CA           ;       SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);      // Enable Auto.Ack:Pipe0
 02CA 21E0              ldi R18,1
 02CC 01E2              ldi R16,33
 02CE 7ADF              rcall _SPI_RW_Reg
 02D0                   .dbline 432
 02D0           ;       SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);  // Enable Pipe0
 02D0 21E0              ldi R18,1
 02D2 02E2              ldi R16,34
 02D4 77DF              rcall _SPI_RW_Reg
 02D6                   .dbline 433
 02D6           ;       SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1a); // 500us + 86us, 10 retrans...
 02D6 2AE1              ldi R18,26
 02D8 04E2              ldi R16,36
 02DA 74DF              rcall _SPI_RW_Reg
 02DC                   .dbline 434
 02DC           ;       SPI_RW_Reg(WRITE_REG + RF_CH, 40);        // Select RF channel 40
 02DC 28E2              ldi R18,40
 02DE 05E2              ldi R16,37
 02E0 71DF              rcall _SPI_RW_Reg
 02E2                   .dbline 435
 02E2           ;       SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);   // TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR
 02E2 27E0              ldi R18,7
 02E4 06E2              ldi R16,38
 02E6 6EDF              rcall _SPI_RW_Reg
 02E8                   .dbline 436
 02E8           ;       SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);     // Set PWR_UP bit, enable CRC(2 bytes) & Prim:TX. MAX_RT & TX_DS enabled..
 02E8 2EE0              ldi R18,14
 02EA 00E2              ldi R16,32
 02EC 6BDF              rcall _SPI_RW_Reg
 02EE                   .dbline 437
 02EE           ;       nRF24L01_CEH;
 02EE 5D9A              sbi 0xb,5
 02F0                   .dbline 438
 02F0           ;       delay();
 02F0 39DF              rcall _delay
 02F2                   .dbline -2
 02F2           L63:
 02F2 2196              adiw R28,1
 02F4                   .dbline 0 ; func end
 02F4 0895              ret
 02F6                   .dbend
 02F6                   .dbfunc e timer0_init _timer0_init fV
                        .even
 02F6           _timer0_init::
 02F6                   .dbline -1
 02F6                   .dbline 443
 02F6           ;       
 02F6           ; }
 02F6           ; //------------------------------------------------------
 02F6           ; void timer0_init(void)
 02F6           ; {
 02F6                   .dbline 444
 02F6           ;  TCCR0B = 0x00; //stop
 02F6 2224              clr R2
 02F8 25BC              out 0x25,R2
 02FA                   .dbline 445
 02FA           ;  TCNT0 = 0x06; //set count
 02FA 86E0              ldi R24,6
 02FC 86BD              out 0x26,R24
 02FE                   .dbline 446
 02FE           ;  TCCR0A = 0x00; 
 02FE 24BC              out 0x24,R2
 0300                   .dbline 447
 0300           ;  TCCR0B = 0x02; //start timer
 0300 82E0              ldi R24,2
 0302 85BD              out 0x25,R24
 0304                   .dbline -2
 0304           L64:
 0304                   .dbline 0 ; func end
 0304 0895              ret
 0306                   .dbend
                        .area vector(rom, abs)
                        .org 32
 0020 83C1              rjmp _timer0_ovf_isr
                        .area text(rom, con, rel)
 0306                   .dbfile E:\项目\PS2无~1\progamme\sendavrnrf24l01\sendavrnrf24l01\main.c
 0306                   .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
                        .even
 0306           _timer0_ovf_isr::
 0306 2A92              st -y,R2
 0308 3A92              st -y,R3
 030A 8A93              st -y,R24
 030C 9A93              st -y,R25
 030E 2FB6              in R2,0x3f
 0310 2A92              st -y,R2
 0312                   .dbline -1
 0312                   .dbline 451
 0312           ; }
 0312           ; #pragma interrupt_handler timer0_ovf_isr:17
 0312           ; void timer0_ovf_isr(void)             // 5ms
 0312           ; {
 0312                   .dbline 453
 0312           ; 
 0312           ;       TCNT0 = 0x06; //reload counter value
 0312 86E0              ldi R24,6
 0314 86BD              out 0x26,R24
 0316                   .dbline 455
 0316           ; 
 0316           ;       if((--t20ms)==0)
 0316 80911A00          lds R24,_t20ms
 031A 8150              subi R24,1
 031C 282E              mov R2,R24
 031E 20921A00          sts _t20ms,R2
 0322 8823              tst R24
 0324 09F0              breq X2
 0326 03C2              rjmp L66
 0328           X2:
 0328                   .dbline 456
 0328           ;               {
 0328                   .dbline 457
 0328           ;               set(flag,bit20ms);
 0328                   .dbline 457
 0328 80911900          lds R24,_flag
 032C 8160              ori R24,1
 032E 80931900          sts _flag,R24
 0332                   .dbline 457
 0332                   .dbline 457
 0332                   .dbline 458
 0332           ;               t20ms=t20msC;
 0332 84E1              ldi R24,20
 0334 80931A00          sts _t20ms,R24
 0338                   .dbline 459
 0338           ;               if(PIND& key1)
 0338 4C9B              sbis 0x9,4
 033A 09C0              rjmp L68
 033C                   .dbline 460
 033C           ;               {
 033C                   .dbline 461
 033C           ;                       key1_pulse<<=1;
 033C 20901800          lds R2,_key1_pulse
 0340 220C              lsl R2
 0342 20921800          sts _key1_pulse,R2
 0346                   .dbline 462
 0346           ;               key1_pulse&=0xfe;
 0346 822D              mov R24,R2
 0348 8E7F              andi R24,254
 034A 80931800          sts _key1_pulse,R24
 034E                   .dbline 463
 034E           ;               }
 034E           L68:
 034E                   .dbline 464
 034E           ;               if(!(PIND& key1))
 034E 4C99              sbic 0x9,4
 0350 09C0              rjmp L70
 0352                   .dbline 465
 0352           ;               {
 0352                   .dbline 466
 0352           ;                       key1_pulse<<=1;
 0352 20901800          lds R2,_key1_pulse
 0356 220C              lsl R2
 0358 20921800          sts _key1_pulse,R2
 035C                   .dbline 467
 035C           ;               key1_pulse|=0x01;
 035C 822D              mov R24,R2
 035E 8160              ori R24,1
 0360 80931800          sts _key1_pulse,R24
 0364                   .dbline 468
 0364           ;               }
 0364           L70:
 0364                   .dbline 469
 0364           ;               if(key1_pulse==0x0f)
 0364 80911800          lds R24,_key1_pulse
 0368 8F30              cpi R24,15
 036A 59F4              brne L72
 036C                   .dbline 470
 036C           ;               {
 036C                   .dbline 471
 036C           ;                       key1_flag=1;
 036C 81E0              ldi R24,1
 036E 80931000          sts _key1_flag,R24
 0372                   .dbline 472
 0372           ;                       send_flag=1;    
 0372 80934600          sts _send_flag,R24
 0376                   .dbline 473
 0376           ;                       accept_time=0;
 0376 2224              clr R2
 0378 3324              clr R3
 037A 30924800          sts _accept_time+1,R3
 037E 20924700          sts _accept_time,R2
 0382                   .dbline 474
 0382           ;               }
 0382           L72:
 0382                   .dbline 475
 0382           ;               if(key1_pulse==0xff)
 0382 80911800          lds R24,_key1_pulse
 0386 8F3F              cpi R24,255
 0388 B9F4              brne L74
 038A                   .dbline 476
 038A           ;               {
 038A                   .dbline 477
 038A           ;                   key1_time++;
 038A 80910700          lds R24,_key1_time
 038E 8F5F              subi R24,255    ; addi 1
 0390 80930700          sts _key1_time,R24
 0394                   .dbline 478
 0394           ;                       if(key1_time>10)
 0394 8AE0              ldi R24,10
 0396 20900700          lds R2,_key1_time
 039A 8215              cp R24,R2
 039C 68F4              brsh L76
 039E                   .dbline 479
 039E           ;                       {
 039E                   .dbline 480
 039E           ;                         key1_time=0;
 039E 2224              

⌨️ 快捷键说明

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