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

📄 nrf905.lis

📁 这是用C编的nrf905的通讯程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0156 4606              cpc R4,R22
 0158 5706              cpc R5,R23
 015A 39F4              brne L34
 015C                   .dbline 229
 015C 80E8              ldi R24,128
 015E 90E0              ldi R25,0
 0160 22B2              in R2,0x12
 0162 3324              clr R3
 0164 2826              eor R2,R24
 0166 3926              eor R3,R25
 0168 22BA              out 0x12,R2
 016A           L34:
 016A                   .dbline 234
 016A           ;   //if(RxBuf[7]==RX_ADDRESS_2)CPL(PORTD,LED); 
 016A           ;   //if(RxBuf[8]==RX_ADDRESS_3)CPL(PORTD,LED); 
 016A           ;   //if(RxBuf[9]==(CRC16_EN | XOF_16MHz))CPL(PORTD,LED); 
 016A           ;   
 016A           ;   }
 016A                   .dbline 235
 016A           ;   SET(PORTB,CSN);  
 016A C49A              sbi 0x18,4
 016C                   .dbline -2
 016C           L12:
 016C 0E940000          xcall pop_gset3
 0170                   .dbline 0 ; func end
 0170 0895              ret
 0172                   .dbsym r i 10 c
 0172                   .dbend
 0172                   .dbfunc e nrf905_SetTxAddr _nrf905_SetTxAddr fV
                        .even
 0172           _nrf905_SetTxAddr::
 0172                   .dbline -1
 0172                   .dbline 240
 0172           ; }
 0172           ; 
 0172           ; //写Tx地址
 0172           ; void nrf905_SetTxAddr()
 0172           ; {
 0172                   .dbline 241
 0172           ;   CLR(PORTB,CSN);                   
 0172 C498              cbi 0x18,4
 0174                   .dbline 242
 0174           ;   nrf905_SpiRW(WTA);  //写Tx地址  
 0174 02E2              ldi R16,34
 0176 5DDF              xcall _nrf905_SpiRW
 0178                   .dbline 243
 0178           ;   nrf905_SpiRW(TX_ADDRESS_0);
 0178 07E8              ldi R16,135
 017A 5BDF              xcall _nrf905_SpiRW
 017C                   .dbline 244
 017C           ;   nrf905_SpiRW(TX_ADDRESS_1);
 017C 05E6              ldi R16,101
 017E 59DF              xcall _nrf905_SpiRW
 0180                   .dbline 245
 0180           ;   nrf905_SpiRW(TX_ADDRESS_2);
 0180 03E4              ldi R16,67
 0182 57DF              xcall _nrf905_SpiRW
 0184                   .dbline 246
 0184           ;   nrf905_SpiRW(TX_ADDRESS_3);
 0184 01E2              ldi R16,33
 0186 55DF              xcall _nrf905_SpiRW
 0188                   .dbline 247
 0188           ;   SET(PORTB,CSN);  
 0188 C49A              sbi 0x18,4
 018A                   .dbline -2
 018A           L37:
 018A                   .dbline 0 ; func end
 018A 0895              ret
 018C                   .dbend
 018C                   .dbfunc e nrf905_SetData _nrf905_SetData fV
 018C           ;              i -> R20
                        .even
 018C           _nrf905_SetData::
 018C 0E940000          xcall push_gset1
 0190                   .dbline -1
 0190                   .dbline 252
 0190           ; }
 0190           ; 
 0190           ; //写Tx数据
 0190           ; void nrf905_SetData()
 0190           ; {uchar i;
 0190                   .dbline 254
 0190           ; 
 0190           ;   CLR(PORTB,CSN);                   
 0190 C498              cbi 0x18,4
 0192                   .dbline 255
 0192           ;   nrf905_SpiRW(WTP);  //写TxPayload 
 0192 00E2              ldi R16,32
 0194 4EDF              xcall _nrf905_SpiRW
 0196                   .dbline 256
 0196           ;   for (i=0;i<SIZE;i++)
 0196 4427              clr R20
 0198 09C0              xjmp L42
 019A           L39:
 019A                   .dbline 257
 019A                   .dbline 258
 019A 80E0              ldi R24,<_TxBuf
 019C 90E0              ldi R25,>_TxBuf
 019E E42F              mov R30,R20
 01A0 FF27              clr R31
 01A2 E80F              add R30,R24
 01A4 F91F              adc R31,R25
 01A6 0081              ldd R16,z+0
 01A8 44DF              xcall _nrf905_SpiRW
 01AA                   .dbline 259
 01AA           L40:
 01AA                   .dbline 256
 01AA 4395              inc R20
 01AC           L42:
 01AC                   .dbline 256
 01AC 4032              cpi R20,32
 01AE A8F3              brlo L39
 01B0                   .dbline 261
 01B0           ;   { 
 01B0           ;     nrf905_SpiRW(TxBuf[i]);
 01B0           ;   }
 01B0           ;   
 01B0           ;   SET(PORTB,CSN);  
 01B0 C49A              sbi 0x18,4
 01B2                   .dbline -2
 01B2           L38:
 01B2 0E940000          xcall pop_gset1
 01B6                   .dbline 0 ; func end
 01B6 0895              ret
 01B8                   .dbsym r i 20 c
 01B8                   .dbend
 01B8                   .dbfunc e nrf905_WaitSended _nrf905_WaitSended fV
                        .even
 01B8           _nrf905_WaitSended::
 01B8                   .dbline -1
 01B8                   .dbline 266
 01B8           ; }
 01B8           ; 
 01B8           ; //等待发送结束
 01B8           ; void nrf905_WaitSended()
 01B8           ; {
 01B8           L44:
 01B8                   .dbline 267
 01B8           L45:
 01B8                   .dbline 267
 01B8           ;    while ((PINB&(1<<DR))==0);
 01B8 B39B              sbis 0x16,3
 01BA FECF              rjmp L44
 01BC                   .dbline -2
 01BC           L43:
 01BC                   .dbline 0 ; func end
 01BC 0895              ret
 01BE                   .dbend
 01BE                   .dbfunc e nrf905_SendData _nrf905_SendData fV
                        .even
 01BE           _nrf905_SendData::
 01BE                   .dbline -1
 01BE                   .dbline 272
 01BE           ; }
 01BE           ; 
 01BE           ; //发送TxBuf中的数据
 01BE           ; void nrf905_SendData()
 01BE           ; {
 01BE                   .dbline 273
 01BE           ;    nrf905_TxOn();//切换到发送模式
 01BE 49DF              xcall _nrf905_TxOn
 01C0                   .dbline 275
 01C0           ;    
 01C0           ;    nrf905_SetTxAddr();//写发送地址
 01C0 D8DF              xcall _nrf905_SetTxAddr
 01C2                   .dbline 276
 01C2           ;    nrf905_SetData();//写数据
 01C2 E4DF              xcall _nrf905_SetData
 01C4                   .dbline 277
 01C4           ;    nrf905_TxSend();//启动发送
 01C4 4ADF              xcall _nrf905_TxSend
 01C6                   .dbline 278
 01C6           ;    nrf905_WaitSended();//等待发送结束
 01C6 F8DF              xcall _nrf905_WaitSended
 01C8                   .dbline -2
 01C8           L47:
 01C8                   .dbline 0 ; func end
 01C8 0895              ret
 01CA                   .dbend
 01CA                   .dbfunc e nrf905_SendAgain _nrf905_SendAgain fV
                        .even
 01CA           _nrf905_SendAgain::
 01CA                   .dbline -1
 01CA                   .dbline 284
 01CA           ;    
 01CA           ; }
 01CA           ; 
 01CA           ; //测试直接重新发送上次写入的数据
 01CA           ; void nrf905_SendAgain()
 01CA           ; {
 01CA                   .dbline 285
 01CA           ;    nrf905_TxOn();
 01CA 43DF              xcall _nrf905_TxOn
 01CC                   .dbline 286
 01CC           ;    nrf905_TxSend();
 01CC 46DF              xcall _nrf905_TxSend
 01CE                   .dbline 287
 01CE           ;    nrf905_WaitSended();
 01CE F4DF              xcall _nrf905_WaitSended
 01D0                   .dbline -2
 01D0           L48:
 01D0                   .dbline 0 ; func end
 01D0 0895              ret
 01D2                   .dbend
 01D2                   .dbfunc e nrf905_ReadData _nrf905_ReadData fV
 01D2           ;              i -> R20
                        .even
 01D2           _nrf905_ReadData::
 01D2 0E940000          xcall push_gset1
 01D6                   .dbline -1
 01D6                   .dbline 293
 01D6           ;    
 01D6           ; }
 01D6           ; 
 01D6           ; //读出接收到的数据
 01D6           ; void nrf905_ReadData()
 01D6           ; {
 01D6                   .dbline 296
 01D6           ;   uchar i;
 01D6           ; 
 01D6           ;   CLR(PORTB,CSN);                   
 01D6 C498              cbi 0x18,4
 01D8                   .dbline 297
 01D8           ;   nrf905_SpiRW(RRP);  //读RxPayload 
 01D8 04E2              ldi R16,36
 01DA 2BDF              xcall _nrf905_SpiRW
 01DC                   .dbline 298
 01DC           ;   for (i=0;i<SIZE;i++)
 01DC 4427              clr R20
 01DE 0AC0              xjmp L53
 01E0           L50:
 01E0                   .dbline 299
 01E0                   .dbline 300
 01E0 0027              clr R16
 01E2 27DF              xcall _nrf905_SpiRW
 01E4 80E0              ldi R24,<_RxBuf
 01E6 90E0              ldi R25,>_RxBuf
 01E8 E42F              mov R30,R20
 01EA FF27              clr R31
 01EC E80F              add R30,R24
 01EE F91F              adc R31,R25
 01F0 0083              std z+0,R16
 01F2                   .dbline 301
 01F2           L51:
 01F2                   .dbline 298
 01F2 4395              inc R20
 01F4           L53:
 01F4                   .dbline 298
 01F4 4032              cpi R20,32
 01F6 A0F3              brlo L50
 01F8                   .dbline 303
 01F8           ;   { 
 01F8           ;     RxBuf[i]=nrf905_SpiRW(0);//read...
 01F8           ;   }
 01F8           ;   
 01F8           ;   SET(PORTB,CSN);  
 01F8 C49A              sbi 0x18,4
 01FA                   .dbline -2
 01FA           L49:
 01FA 0E940000          xcall pop_gset1
 01FE                   .dbline 0 ; func end
 01FE 0895              ret
 0200                   .dbsym r i 20 c
 0200                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\charon\MYDOCU~1\AVR\NRF905\nrf905.C
 0000           _RxBuf::
 0000                   .blkb 100
 0064                   .dbsym e RxBuf _RxBuf A[100:100]c
 0064           _TxBuf::
 0064                   .blkb 100
 00C8                   .dbsym e TxBuf _TxBuf A[100:100]c
 00C8           _key:
 00C8                   .blkb 1
 00C9                   .dbfile C:\DOCUME~1\charon\MYDOCU~1\AVR\NRF905/config.h
 00C9                   .dbsym s key _key c

⌨️ 快捷键说明

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