📄 nrf905.lis
字号:
01F0 ; SET(PORTD,PWR);
01F0 959A sbi 0x12,5
01F2 .dbline 216
01F2 ; CLR(PORTD,TX_EN);//maybe first
01F2 9798 cbi 0x12,7
01F4 .dbline 217
01F4 ; SET(PORTD,TRXCE);
01F4 969A sbi 0x12,6
01F6 .dbline -2
01F6 .dbline 218
01F6 ; }
01F6 L20:
01F6 .dbline 0 ; func end
01F6 0895 ret
01F8 .dbend
01F8 .dbfunc e nrf905_TxSend _nrf905_TxSend fV
.even
01F8 _nrf905_TxSend::
01F8 .dbline -1
01F8 .dbline 221
01F8 ; //->ShockBurst Send
01F8 ; void nrf905_TxSend(void)
01F8 ; {
01F8 .dbline 222
01F8 ; SET(PORTD,TRXCE);
01F8 969A sbi 0x12,6
01FA .dbline 223
01FA ; delay_us(20);//>10us
01FA 04E1 ldi R16,20
01FC 10E0 ldi R17,0
01FE 00D0 rcall _delay_us
0200 .dbline 224
0200 ; CLR(PORTD,TRXCE);//只发送一次
0200 9698 cbi 0x12,6
0202 .dbline -2
0202 .dbline 226
0202 ;
0202 ; }
0202 L21:
0202 .dbline 0 ; func end
0202 0895 ret
0204 .dbend
0204 .dbfunc e nrf905_TxOn _nrf905_TxOn fV
.even
0204 _nrf905_TxOn::
0204 .dbline -1
0204 .dbline 232
0204 ;
0204 ; /*-----------------------------------------------
0204 ; 设置为发送模式
0204 ; ------------------------------------------------*/
0204 ; void nrf905_TxOn(void)
0204 ; {
0204 .dbline 233
0204 ; SET(PORTD,PWR);
0204 959A sbi 0x12,5
0206 .dbline 234
0206 ; SET(PORTD,TX_EN);
0206 979A sbi 0x12,7
0208 .dbline 235
0208 ; CLR(PORTD,TRXCE);
0208 9698 cbi 0x12,6
020A .dbline -2
020A .dbline 236
020A ; }
020A L22:
020A .dbline 0 ; func end
020A 0895 ret
020C .dbend
020C .dbfunc e nrf905_Init _nrf905_Init fV
.even
020C _nrf905_Init::
020C .dbline -1
020C .dbline 240
020C ;
020C ; //初始化nrf905
020C ; void nrf905_Init(void)
020C ; {
020C .dbline 241
020C ; nrf905_StandBy();
020C EBDF rcall _nrf905_StandBy
020E .dbline 242
020E ; delay_10ms(2);//!!!must >3ms
020E 02E0 ldi R16,2
0210 10E0 ldi R17,0
0212 00D0 rcall _delay_10ms
0214 .dbline 243
0214 ; nrf905_Config();
0214 .dbline -2
0214 .dbline 247
0214 ;
0214 ; // nrf905_SpiTest();//test... 测试:通过读配置,判断SPI操作是否正确
0214 ; // nrf905_RxOn();//enable nrf905接收
0214 ; }
0214 L23:
0214 .dbline 0 ; func end
0214 7CCF rjmp _nrf905_Config
0216 .dbend
0216 .dbfunc e nrf905_SpiTest _nrf905_SpiTest fV
0216 ; i -> R20
.even
0216 _nrf905_SpiTest::
0216 00D0 rcall push_gset1
0218 .dbline -1
0218 .dbline 252
0218 ;
0218 ;
0218 ; //测试:通过读配置,判断SPI操作是否正确
0218 ; void nrf905_SpiTest(void)
0218 ; {
0218 .dbline 254
0218 ; uchar i;
0218 ; CLR(PORTB,CSN);
0218 C298 cbi 0x18,2
021A .dbline 255
021A ; nrf905_SpiRW(RC); //读配置
021A 00E1 ldi R16,16
021C DBDF rcall _nrf905_SpiRW
021E .dbline 256
021E ; for (i=0;i<10;i++)
021E 4427 clr R20
0220 0AC0 rjmp L28
0222 L25:
0222 .dbline 257
0222 .dbline 258
0222 0027 clr R16
0224 D7DF rcall _nrf905_SpiRW
0226 80E0 ldi R24,<_Rx_Buf
0228 90E0 ldi R25,>_Rx_Buf
022A E42F mov R30,R20
022C FF27 clr R31
022E E80F add R30,R24
0230 F91F adc R31,R25
0232 0083 std z+0,R16
0234 .dbline 259
0234 L26:
0234 .dbline 256
0234 4395 inc R20
0236 L28:
0236 .dbline 256
0236 4A30 cpi R20,10
0238 A0F3 brlo L25
023A .dbline 260
023A ; {
023A ; Rx_Buf[i]=nrf905_SpiRW(0);//read from nrf905
023A ; }
023A ; SET(PORTB,CSN);
023A C29A sbi 0x18,2
023C .dbline -2
023C .dbline 262
023C ;
023C ; }
023C L24:
023C 00D0 rcall pop_gset1
023E .dbline 0 ; func end
023E 0895 ret
0240 .dbsym r i 20 c
0240 .dbend
0240 .dbfunc e nrf905_SetTxAddr _nrf905_SetTxAddr fV
.even
0240 _nrf905_SetTxAddr::
0240 00D0 rcall push_gset2
0242 .dbline -1
0242 .dbline 267
0242 ;
0242 ;
0242 ; //写Tx地址
0242 ; void nrf905_SetTxAddr(void)
0242 ; {
0242 .dbline 268
0242 ; CLR(PORTB,CSN);
0242 C298 cbi 0x18,2
0244 .dbline 269
0244 ; nrf905_SpiRW(WTA); //写Tx地址
0244 02E2 ldi R16,34
0246 C6DF rcall _nrf905_SpiRW
0248 .dbline 270
0248 ; nrf905_SpiRW(TX_ADDRESS_0);
0248 88E1 ldi R24,24
024A 90E0 ldi R25,0
024C 40900600 lds R4,_TX_ADDRESS+2
0250 50900700 lds R5,_TX_ADDRESS+2+1
0254 20900400 lds R2,_TX_ADDRESS
0258 30900500 lds R3,_TX_ADDRESS+1
025C 8A93 st -y,R24
025E 8101 movw R16,R2
0260 9201 movw R18,R4
0262 00D0 rcall lsr32
0264 B7DF rcall _nrf905_SpiRW
0266 .dbline 271
0266 ; nrf905_SpiRW(TX_ADDRESS_1);
0266 4FEF ldi R20,255
0268 50E0 ldi R21,0
026A 60E0 ldi R22,0
026C 70E0 ldi R23,0
026E 40900600 lds R4,_TX_ADDRESS+2
0272 50900700 lds R5,_TX_ADDRESS+2+1
0276 20900400 lds R2,_TX_ADDRESS
027A 30900500 lds R3,_TX_ADDRESS+1
027E 1201 movw R2,R4
0280 4424 clr R4
0282 5524 clr R5
0284 2422 and R2,R20
0286 3522 and R3,R21
0288 4622 and R4,R22
028A 5722 and R5,R23
028C 022D mov R16,R2
028E A2DF rcall _nrf905_SpiRW
0290 .dbline 272
0290 ; nrf905_SpiRW(TX_ADDRESS_2);
0290 88E0 ldi R24,8
0292 90E0 ldi R25,0
0294 40900600 lds R4,_TX_ADDRESS+2
0298 50900700 lds R5,_TX_ADDRESS+2+1
029C 20900400 lds R2,_TX_ADDRESS
02A0 30900500 lds R3,_TX_ADDRESS+1
02A4 8A93 st -y,R24
02A6 8101 movw R16,R2
02A8 9201 movw R18,R4
02AA 00D0 rcall lsr32
02AC 1801 movw R2,R16
02AE 2901 movw R4,R18
02B0 4FEF ldi R20,255
02B2 50E0 ldi R21,0
02B4 60E0 ldi R22,0
02B6 70E0 ldi R23,0
02B8 2422 and R2,R20
02BA 3522 and R3,R21
02BC 4622 and R4,R22
02BE 5722 and R5,R23
02C0 022D mov R16,R2
02C2 88DF rcall _nrf905_SpiRW
02C4 .dbline 273
02C4 ; nrf905_SpiRW(TX_ADDRESS_3);
02C4 4FEF ldi R20,255
02C6 50E0 ldi R21,0
02C8 60E0 ldi R22,0
02CA 70E0 ldi R23,0
02CC 40900600 lds R4,_TX_ADDRESS+2
02D0 50900700 lds R5,_TX_ADDRESS+2+1
02D4 20900400 lds R2,_TX_ADDRESS
02D8 30900500 lds R3,_TX_ADDRESS+1
02DC 2422 and R2,R20
02DE 3522 and R3,R21
02E0 4622 and R4,R22
02E2 5722 and R5,R23
02E4 022D mov R16,R2
02E6 76DF rcall _nrf905_SpiRW
02E8 .dbline 274
02E8 ; SET(PORTB,CSN);
02E8 C29A sbi 0x18,2
02EA .dbline -2
02EA .dbline 275
02EA ; }
02EA L29:
02EA 00D0 rcall pop_gset2
02EC .dbline 0 ; func end
02EC 0895 ret
02EE .dbend
02EE .dbfunc e nrf905_SetData _nrf905_SetData fV
02EE ; i -> R20
.even
02EE _nrf905_SetData::
02EE 00D0 rcall push_gset1
02F0 .dbline -1
02F0 .dbline 279
02F0 ;
02F0 ; //写Tx数据
02F0 ; void nrf905_SetData(void)
02F0 ; {uchar i;
02F0 .dbline 281
02F0 ;
02F0 ; CLR(PORTB,CSN);
02F0 C298 cbi 0x18,2
02F2 .dbline 282
02F2 ; nrf905_SpiRW(WTP); //写TxPayload
02F2 00E2 ldi R16,32
02F4 6FDF rcall _nrf905_SpiRW
02F6 .dbline 283
02F6 ; for (i=0;i<SIZE;i++)
02F6 4427 clr R20
02F8 09C0 rjmp L34
02FA L31:
02FA .dbline 284
02FA .dbline 285
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -