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

📄 nrf905.lis

📁 本代码实现了两块无线收发模块prt8000(核心芯片nrf905)的通信功能
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00D2                   .dbline 213
 00D2           ;   nrf905_SpiRW(TX_ADDRESS_0);
 00D2 02E1              ldi R16,18
 00D4 C1DF              xcall _nrf905_SpiRW
 00D6                   .dbline 214
 00D6           ;   nrf905_SpiRW(TX_ADDRESS_1);
 00D6 04E3              ldi R16,52
 00D8 BFDF              xcall _nrf905_SpiRW
 00DA                   .dbline 215
 00DA           ;   nrf905_SpiRW(TX_ADDRESS_2);
 00DA 06E5              ldi R16,86
 00DC BDDF              xcall _nrf905_SpiRW
 00DE                   .dbline 216
 00DE           ;   nrf905_SpiRW(TX_ADDRESS_3);
 00DE 08E7              ldi R16,120
 00E0 BBDF              xcall _nrf905_SpiRW
 00E2                   .dbline 217
 00E2           ;   SET(PORTB,CSN);  
 00E2 C49A              sbi 0x18,4
 00E4                   .dbline -2
 00E4           L17:
 00E4                   .dbline 0 ; func end
 00E4 0895              ret
 00E6                   .dbend
 00E6                   .dbfunc e nrf905_SetData _nrf905_SetData fV
 00E6           ;              i -> R20
                        .even
 00E6           _nrf905_SetData::
 00E6 4A93              st -y,R20
 00E8                   .dbline -1
 00E8                   .dbline 222
 00E8           ; }
 00E8           ; 
 00E8           ; //写Tx数据
 00E8           ; void nrf905_SetData()
 00E8           ; {uchar i;
 00E8                   .dbline 224
 00E8           ; 
 00E8           ;   CLR(PORTB,CSN);                   
 00E8 C498              cbi 0x18,4
 00EA                   .dbline 225
 00EA           ;   nrf905_SpiRW(WTP);  //写TxPayload 
 00EA 00E2              ldi R16,32
 00EC B5DF              xcall _nrf905_SpiRW
 00EE                   .dbline 226
 00EE           ;   for (i=0;i<SIZE;i++)
 00EE 4427              clr R20
 00F0 09C0              xjmp L22
 00F2           L19:
 00F2                   .dbline 227
 00F2           ;   { 
 00F2                   .dbline 228
 00F2           ;     nrf905_SpiRW(TxBuf[i]);
 00F2 80E0              ldi R24,<_TxBuf
 00F4 90E0              ldi R25,>_TxBuf
 00F6 E42F              mov R30,R20
 00F8 FF27              clr R31
 00FA E80F              add R30,R24
 00FC F91F              adc R31,R25
 00FE 0081              ldd R16,z+0
 0100 ABDF              xcall _nrf905_SpiRW
 0102                   .dbline 229
 0102           ;   }
 0102           L20:
 0102                   .dbline 226
 0102 4395              inc R20
 0104           L22:
 0104                   .dbline 226
 0104 4032              cpi R20,32
 0106 A8F3              brlo L19
 0108           X2:
 0108                   .dbline 231
 0108           ;   
 0108           ;   SET(PORTB,CSN);  
 0108 C49A              sbi 0x18,4
 010A                   .dbline -2
 010A           L18:
 010A                   .dbline 0 ; func end
 010A 4991              ld R20,y+
 010C 0895              ret
 010E                   .dbsym r i 20 c
 010E                   .dbend
 010E                   .dbfunc e nrf905_WaitSended _nrf905_WaitSended fV
                        .even
 010E           _nrf905_WaitSended::
 010E                   .dbline -1
 010E                   .dbline 236
 010E           ; }
 010E           ; 
 010E           ; //等待发送结束
 010E           ; void nrf905_WaitSended()
 010E           ; {
 010E           L24:
 010E                   .dbline 237
 010E           ;    while ((PIND&(1<<DR))==0);
 010E           L25:
 010E                   .dbline 237
 010E 849B              sbis 0x10,4
 0110 FECF              rjmp L24
 0112           X3:
 0112                   .dbline -2
 0112           L23:
 0112                   .dbline 0 ; func end
 0112 0895              ret
 0114                   .dbend
 0114                   .dbfunc e nrf905_SendData _nrf905_SendData fV
                        .even
 0114           _nrf905_SendData::
 0114                   .dbline -1
 0114                   .dbline 242
 0114           ; }
 0114           ; 
 0114           ; //发送TxBuf中的数据
 0114           ; void nrf905_SendData()
 0114           ; {
 0114                   .dbline 243
 0114           ;    nrf905_TxOn();//切换到发送模式
 0114 AFDF              xcall _nrf905_TxOn
 0116                   .dbline 244
 0116           ;    nrf905_SetTxAddr();//写发送地址
 0116 DADF              xcall _nrf905_SetTxAddr
 0118                   .dbline 245
 0118           ;    nrf905_SetData();//写数据
 0118 E6DF              xcall _nrf905_SetData
 011A                   .dbline 246
 011A           ;    nrf905_TxSend();//启动发送
 011A B0DF              xcall _nrf905_TxSend
 011C                   .dbline 247
 011C           ;    nrf905_WaitSended();//等待发送结束
 011C F8DF              xcall _nrf905_WaitSended
 011E                   .dbline -2
 011E           L27:
 011E                   .dbline 0 ; func end
 011E 0895              ret
 0120                   .dbend
 0120                   .dbfunc e nrf905_SendAgain _nrf905_SendAgain fV
                        .even
 0120           _nrf905_SendAgain::
 0120                   .dbline -1
 0120                   .dbline 253
 0120           ;    
 0120           ; }
 0120           ; 
 0120           ; //测试直接重新发送上次写入的数据
 0120           ; void nrf905_SendAgain()
 0120           ; {
 0120                   .dbline 254
 0120           ;    nrf905_TxOn();
 0120 A9DF              xcall _nrf905_TxOn
 0122                   .dbline 255
 0122           ;    nrf905_TxSend();
 0122 ACDF              xcall _nrf905_TxSend
 0124                   .dbline 256
 0124           ;    nrf905_WaitSended();
 0124 F4DF              xcall _nrf905_WaitSended
 0126                   .dbline -2
 0126           L28:
 0126                   .dbline 0 ; func end
 0126 0895              ret
 0128                   .dbend
 0128                   .dbfunc e nrf905_ReadData _nrf905_ReadData fV
 0128           ;              i -> R20
                        .even
 0128           _nrf905_ReadData::
 0128 4A93              st -y,R20
 012A                   .dbline -1
 012A                   .dbline 262
 012A           ;    
 012A           ; }
 012A           ; 
 012A           ; //读出接收到的数据
 012A           ; void nrf905_ReadData()
 012A           ; {
 012A                   .dbline 265
 012A           ;   uchar i;
 012A           ; 
 012A           ;   CLR(PORTB,CSN);                   
 012A C498              cbi 0x18,4
 012C                   .dbline 266
 012C           ;   nrf905_SpiRW(RRP);  //读RxPayload 
 012C 04E2              ldi R16,36
 012E 94DF              xcall _nrf905_SpiRW
 0130                   .dbline 267
 0130           ;   for (i=0;i<SIZE;i++)
 0130 4427              clr R20
 0132 0AC0              xjmp L33
 0134           L30:
 0134                   .dbline 268
 0134           ;   { 
 0134                   .dbline 269
 0134           ;     RxBuf[i]=nrf905_SpiRW(0);//read...
 0134 0027              clr R16
 0136 90DF              xcall _nrf905_SpiRW
 0138 80E0              ldi R24,<_RxBuf
 013A 90E0              ldi R25,>_RxBuf
 013C E42F              mov R30,R20
 013E FF27              clr R31
 0140 E80F              add R30,R24
 0142 F91F              adc R31,R25
 0144 0083              std z+0,R16
 0146                   .dbline 270
 0146           ;   }
 0146           L31:
 0146                   .dbline 267
 0146 4395              inc R20
 0148           L33:
 0148                   .dbline 267
 0148 4032              cpi R20,32
 014A A0F3              brlo L30
 014C           X4:
 014C                   .dbline 272
 014C           ;   
 014C           ;   SET(PORTB,CSN);  
 014C C49A              sbi 0x18,4
 014E                   .dbline -2
 014E           L29:
 014E                   .dbline 0 ; func end
 014E 4991              ld R20,y+
 0150 0895              ret
 0152                   .dbsym r i 20 c
 0152                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\无线通信\nRF905\ptr8000\nrf905.C
 0000           _RxBuf::
 0000                   .blkb 32
 0020                   .dbsym e RxBuf _RxBuf A[32:32]c
 0020           _TxBuf::
 0020                   .blkb 32
 0040                   .dbsym e TxBuf _TxBuf A[32:32]c
 0040           ; 
 0040           ; }

⌨️ 快捷键说明

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