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

📄 nrf905.lis

📁 嵌入式单片机控制温度传感的无线收发方案!
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 02FA 80E0              ldi R24,<_Tx_Buf
 02FC 90E0              ldi R25,>_Tx_Buf
 02FE E42F              mov R30,R20
 0300 FF27              clr R31
 0302 E80F              add R30,R24
 0304 F91F              adc R31,R25
 0306 0081              ldd R16,z+0
 0308 65DF              rcall _nrf905_SpiRW
 030A                   .dbline 286
 030A           L32:
 030A                   .dbline 283
 030A 4395              inc R20
 030C           L34:
 030C                   .dbline 283
 030C 4032              cpi R20,32
 030E A8F3              brlo L31
 0310                   .dbline 288
 0310           ;   { 
 0310           ;     nrf905_SpiRW(Tx_Buf[i]);
 0310           ;   }
 0310           ;   
 0310           ;   SET(PORTB,CSN);  
 0310 C29A              sbi 0x18,2
 0312                   .dbline -2
 0312                   .dbline 290
 0312           ;  
 0312           ; }
 0312           L30:
 0312 00D0              rcall pop_gset1
 0314                   .dbline 0 ; func end
 0314 0895              ret
 0316                   .dbsym r i 20 c
 0316                   .dbend
 0316                   .dbfunc e nrf905_WaitSended _nrf905_WaitSended fV
                        .even
 0316           _nrf905_WaitSended::
 0316                   .dbline -1
 0316                   .dbline 294
 0316           ; 
 0316           ; //等待发送结束
 0316           ; void nrf905_WaitSended(void)
 0316           ; {
 0316           L36:
 0316                   .dbline 295
 0316           L37:
 0316                   .dbline 295
 0316           ;    while ((PIND&(1<<DR))==0);
 0316 829B              sbis 0x10,2
 0318 FECF              rjmp L36
 031A                   .dbline -2
 031A                   .dbline 296
 031A           ; }
 031A           L35:
 031A                   .dbline 0 ; func end
 031A 0895              ret
 031C                   .dbend
 031C                   .dbfunc e nrf905_SendData _nrf905_SendData fV
                        .even
 031C           _nrf905_SendData::
 031C                   .dbline -1
 031C                   .dbline 300
 031C           ; 
 031C           ; //发送TxBuf中的数据
 031C           ; void nrf905_SendData(void)
 031C           ; {
 031C                   .dbline 301
 031C           ;    nrf905_TxOn();//切换到发送模式
 031C 73DF              rcall _nrf905_TxOn
 031E                   .dbline 302
 031E           ;    delay_10ms(2);
 031E 02E0              ldi R16,2
 0320 10E0              ldi R17,0
 0322 00D0              rcall _delay_10ms
 0324                   .dbline 303
 0324           ;    nrf905_SetTxAddr();//写发送地址WTA
 0324 8DDF              rcall _nrf905_SetTxAddr
 0326                   .dbline 304
 0326           ;    nrf905_SetData();//写数据WTP
 0326 E3DF              rcall _nrf905_SetData
 0328                   .dbline 305
 0328           ;    nrf905_TxSend();//启动发送
 0328 67DF              rcall _nrf905_TxSend
 032A                   .dbline 306
 032A           ;   nrf905_WaitSended();//等待发送结束
 032A                   .dbline -2
 032A                   .dbline 308
 032A           ;    
 032A           ; }
 032A           L39:
 032A                   .dbline 0 ; func end
 032A F5CF              rjmp _nrf905_WaitSended
 032C                   .dbend
 032C                   .dbfunc e nrf905_SendAgain _nrf905_SendAgain fV
                        .even
 032C           _nrf905_SendAgain::
 032C                   .dbline -1
 032C                   .dbline 312
 032C           ; 
 032C           ; //测试直接重新发送上次写入的数据
 032C           ; void nrf905_SendAgain(void)
 032C           ; {
 032C                   .dbline 313
 032C           ;    nrf905_TxOn();
 032C 6BDF              rcall _nrf905_TxOn
 032E                   .dbline 314
 032E           ;    nrf905_TxSend();
 032E 64DF              rcall _nrf905_TxSend
 0330                   .dbline 315
 0330           ;    nrf905_WaitSended();
 0330                   .dbline -2
 0330                   .dbline 317
 0330           ;    
 0330           ; }
 0330           L40:
 0330                   .dbline 0 ; func end
 0330 F2CF              rjmp _nrf905_WaitSended
 0332                   .dbend
 0332                   .dbfunc e RfSendProc _RfSendProc fV
                        .even
 0332           _RfSendProc::
 0332                   .dbline -1
 0332                   .dbline 323
 0332           ; 
 0332           ; 
 0332           ; 
 0332           ; //发送测试
 0332           ; void RfSendProc(void)
 0332           ; {
 0332                   .dbline 325
 0332           ;   // puts_hh("Into send process code");
 0332           ;    nrf905_SendData();//发送测试数据
 0332 F4DF              rcall _nrf905_SendData
 0334                   .dbline 326
 0334           ;    nrf905_Off();//断开电源
 0334 5BDF              rcall _nrf905_Off
 0336                   .dbline 327
 0336           ;    nrf905_RxOn();
 0336                   .dbline -2
 0336                   .dbline 329
 0336           ;    
 0336           ; }
 0336           L41:
 0336                   .dbline 0 ; func end
 0336 5CCF              rjmp _nrf905_RxOn
 0338                   .dbend
 0338                   .dbfunc e nrf905_ReadData _nrf905_ReadData fV
 0338           ;              i -> R20
                        .even
 0338           _nrf905_ReadData::
 0338 00D0              rcall push_gset1
 033A                   .dbline -1
 033A                   .dbline 335
 033A           ; 
 033A           ; //读出接收到的数据
 033A           ; //读出的数据Rx_Buf[0]是子机地址,Rx_Buf[2]和Rx_Buf[3]是温度数据,
 033A           ; //Rx_Buf[4]和Rx_Buf[5]是子机电源电压数据,Rx_Buf[1]是命令字
 033A           ; void nrf905_ReadData(void)
 033A           ; {
 033A                   .dbline 338
 033A           ;   uchar i;
 033A           ;   
 033A           ;   clear_Rx_Buf();//先清空接收缓冲
 033A 72DE              rcall _clear_Rx_Buf
 033C                   .dbline 339
 033C           ;   CLR(PORTD,TRXCE);
 033C 9698              cbi 0x12,6
 033E                   .dbline 340
 033E           ;   CLR(PORTB,CSN);                   
 033E C298              cbi 0x18,2
 0340                   .dbline 341
 0340           ;   nrf905_SpiRW(RRP);  //读RxPayload 
 0340 04E2              ldi R16,36
 0342 48DF              rcall _nrf905_SpiRW
 0344                   .dbline 342
 0344           ;   for (i=0;i<SIZE;i++)
 0344 4427              clr R20
 0346 0AC0              rjmp L46
 0348           L43:
 0348                   .dbline 343
 0348                   .dbline 344
 0348 0027              clr R16
 034A 44DF              rcall _nrf905_SpiRW
 034C 80E0              ldi R24,<_Rx_Buf
 034E 90E0              ldi R25,>_Rx_Buf
 0350 E42F              mov R30,R20
 0352 FF27              clr R31
 0354 E80F              add R30,R24
 0356 F91F              adc R31,R25
 0358 0083              std z+0,R16
 035A                   .dbline 345
 035A           L44:
 035A                   .dbline 342
 035A 4395              inc R20
 035C           L46:
 035C                   .dbline 342
 035C 4032              cpi R20,32
 035E A0F3              brlo L43
 0360                   .dbline 347
 0360           ;   { 
 0360           ;     Rx_Buf[i]=nrf905_SpiRW(0);//read...
 0360           ;   }
 0360           ;   
 0360           ;   delay_10ms(2);
 0360 02E0              ldi R16,2
 0362 10E0              ldi R17,0
 0364 00D0              rcall _delay_10ms
 0366                   .dbline 348
 0366           ;     SET(PORTB,CSN);  
 0366 C29A              sbi 0x18,2
 0368                   .dbline -2
 0368                   .dbline 350
 0368           ;   
 0368           ; }
 0368           L42:
 0368 00D0              rcall pop_gset1
 036A                   .dbline 0 ; func end
 036A 0895              ret
 036C                   .dbsym r i 20 c
 036C                   .dbend
 036C                   .dbfunc e RfRecvProc _RfRecvProc fV
 036C           ;              i -> <dead>
                        .even
 036C           _RfRecvProc::
 036C                   .dbline -1
 036C                   .dbline 353
 036C           ; //接收处理
 036C           ; void RfRecvProc(void)
 036C           ; {
 036C                   .dbline 357
 036C           ;     uchar i;
 036C           ;       
 036C           ; 
 036C           ;    if ((PIND&(1<<AM))==0) return;//一般先AM=1指示地址匹配对  
 036C 8399              sbic 0x10,3
 036E 01C0              rjmp L48
 0370                   .dbline 357
 0370 08C0              rjmp L47
 0372           L48:
 0372                   .dbline 358
 0372           ;    if ((PIND&(1<<DR))==0) return;//DR=1时表示数据接收对而且Crc正确
 0372 8299              sbic 0x10,2
 0374 01C0              rjmp L50
 0376                   .dbline 358
 0376 05C0              rjmp L47
 0378           L50:
 0378                   .dbline 361
 0378           ;    
 0378           ;    //已经接收到数据
 0378           ;    nrf905_ReadData();//读出...
 0378 DFDF              rcall _nrf905_ReadData
 037A                   .dbline 370
 037A           ;  //  for (i=0;i<32;i++)  //校检
 037A           ;   // { if (Rx_Buf[i]!=(i+i)) 
 037A           ;     //    return; }
 037A           ;    
 037A           ;    //从机回送数据包,这样双方都能指示是否收到有效数据包
 037A           ;   // #ifndef MASTER
 037A           ;     // RfSendProc();
 037A           ;  //  #endif
 037A           ;    delay_10ms(2);
 037A 02E0              ldi R16,2
 037C 10E0              ldi R17,0
 037E 00D0              rcall _delay_10ms
 0380                   .dbline 371
 0380           ;    nrf905_RxOn();//使nrf905重新进入接收状态
 0380 37DF              rcall _nrf905_RxOn
 0382                   .dbline -2
 0382                   .dbline 372
 0382           ; }
 0382           L47:
 0382                   .dbline 0 ; func end
 0382 0895              ret
 0384                   .dbsym l i 1 c
 0384                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\公司用\atmega8l\final\new\nrf905_receive\nrf905.c
 0000           _Rx_Buf::
 0000                   .blkb 32
 0020                   .dbsym e Rx_Buf _Rx_Buf A[32:32]c
 0020           _Tx_Buf::
 0020                   .blkb 32
 0040                   .dbsym e Tx_Buf _Tx_Buf A[32:32]c

⌨️ 快捷键说明

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