📄 nrf905.s
字号:
sbi 0x12,5
.dbline 183
; SET(PORTD,TX_EN);
sbi 0x12,7
.dbline 184
; CLR(PORTD,TRXCE);
cbi 0x12,6
.dbline -2
.dbline 185
; }
L15:
.dbline 0 ; func end
ret
.dbend
.dbfunc e nrf905_TxSend _nrf905_TxSend fV
.even
_nrf905_TxSend::
.dbline -1
.dbline 189
;
; //->ShockBurst Send
; void nrf905_TxSend(void)
; {
.dbline 190
; SET(PORTD,TRXCE);
sbi 0x12,6
.dbline 191
; delay_us(20);//>10us
ldi R16,20
ldi R17,0
rcall _delay_us
.dbline 192
; CLR(PORTD,TRXCE);//只发送一次
cbi 0x12,6
.dbline -2
.dbline 194
;
; }
L16:
.dbline 0 ; func end
ret
.dbend
.dbfunc e nrf905_Init _nrf905_Init fV
.even
_nrf905_Init::
.dbline -1
.dbline 200
;
;
;
; //初始化nrf905
; void nrf905_Init(void)
; {
.dbline 201
; nrf905_StandBy();
rcall _nrf905_StandBy
.dbline 202
; delay_10ms(2);//!!!must >3ms
ldi R16,2
ldi R17,0
rcall _delay_10ms
.dbline 203
; nrf905_Config();
.dbline -2
.dbline 207
;
; // nrf905_SpiTest();//test... 测试:通过读配置,判断SPI操作是否正确
; // nrf905_RxOn();//enable nrf905接收
; }
L17:
.dbline 0 ; func end
rjmp _nrf905_Config
.dbend
.dbfunc e nrf905_SpiTest _nrf905_SpiTest fV
; i -> R20
.even
_nrf905_SpiTest::
rcall push_gset1
.dbline -1
.dbline 212
;
;
; //测试:通过读配置,判断SPI操作是否正确
; void nrf905_SpiTest(void)
; {
.dbline 214
; uchar i;
; CLR(PORTB,CSN);
cbi 0x18,2
.dbline 215
; nrf905_SpiRW(RC); //读配置
ldi R16,16
rcall _nrf905_SpiRW
.dbline 216
; for (i=0;i<10;i++)
clr R20
rjmp L22
L19:
.dbline 217
.dbline 218
clr R16
rcall _nrf905_SpiRW
ldi R24,<_Rx_Buf
ldi R25,>_Rx_Buf
mov R30,R20
clr R31
add R30,R24
adc R31,R25
std z+0,R16
.dbline 219
L20:
.dbline 216
inc R20
L22:
.dbline 216
cpi R20,10
brlo L19
.dbline 220
; {
; Rx_Buf[i]=nrf905_SpiRW(0);//read from nrf905
; }
; SET(PORTB,CSN);
sbi 0x18,2
.dbline -2
.dbline 222
;
; }
L18:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.dbfunc e nrf905_SetTxAddr _nrf905_SetTxAddr fV
.even
_nrf905_SetTxAddr::
.dbline -1
.dbline 227
;
;
; //写Tx地址
; void nrf905_SetTxAddr(void)
; {
.dbline 228
; CLR(PORTB,CSN);
cbi 0x18,2
.dbline 229
; nrf905_SpiRW(WTA); //写Tx地址
ldi R16,34
rcall _nrf905_SpiRW
.dbline 230
; nrf905_SpiRW(TX_ADDRESS_0);
ldi R16,17
rcall _nrf905_SpiRW
.dbline 231
; nrf905_SpiRW(TX_ADDRESS_1);
ldi R16,17
rcall _nrf905_SpiRW
.dbline 232
; nrf905_SpiRW(TX_ADDRESS_2);
ldi R16,17
rcall _nrf905_SpiRW
.dbline 233
; nrf905_SpiRW(TX_ADDRESS_3);
ldi R16,17
rcall _nrf905_SpiRW
.dbline 234
; SET(PORTB,CSN);
sbi 0x18,2
.dbline -2
.dbline 235
; }
L23:
.dbline 0 ; func end
ret
.dbend
.dbfunc e nrf905_SetData _nrf905_SetData fV
; i -> R20
.even
_nrf905_SetData::
rcall push_gset1
.dbline -1
.dbline 239
;
; //写Tx数据
; void nrf905_SetData(void)
; {uchar i;
.dbline 241
;
; CLR(PORTB,CSN);
cbi 0x18,2
.dbline 242
; nrf905_SpiRW(WTP); //写TxPayload
ldi R16,32
rcall _nrf905_SpiRW
.dbline 243
; for (i=0;i<SIZE;i++)
clr R20
rjmp L28
L25:
.dbline 244
.dbline 245
ldi R24,<_Tx_Buf
ldi R25,>_Tx_Buf
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R16,z+0
rcall _nrf905_SpiRW
.dbline 246
L26:
.dbline 243
inc R20
L28:
.dbline 243
cpi R20,32
brlo L25
.dbline 248
; {
; nrf905_SpiRW(Tx_Buf[i]);
; }
;
; SET(PORTB,CSN);
sbi 0x18,2
.dbline -2
.dbline 250
;
; }
L24:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.dbfunc e nrf905_WaitSended _nrf905_WaitSended fV
.even
_nrf905_WaitSended::
.dbline -1
.dbline 254
;
; //等待发送结束
; void nrf905_WaitSended(void)
; {
L30:
.dbline 255
L31:
.dbline 255
; while ((PIND&(1<<DR))==0);
sbis 0x10,2
rjmp L30
.dbline -2
.dbline 256
; }
L29:
.dbline 0 ; func end
ret
.dbend
.dbfunc e nrf905_SendData _nrf905_SendData fV
.even
_nrf905_SendData::
.dbline -1
.dbline 260
;
; //发送TxBuf中的数据
; void nrf905_SendData(void)
; {
.dbline 261
; nrf905_TxOn();//切换到发送模式
rcall _nrf905_TxOn
.dbline 262
; delay_10ms(2);
ldi R16,2
ldi R17,0
rcall _delay_10ms
.dbline 263
; nrf905_SetTxAddr();//写发送地址WTA
rcall _nrf905_SetTxAddr
.dbline 264
; nrf905_SetData();//写数据WTP
rcall _nrf905_SetData
.dbline 265
; nrf905_TxSend();//启动发送
rcall _nrf905_TxSend
.dbline 266
; nrf905_WaitSended();//等待发送结束
.dbline -2
.dbline 268
;
; }
L33:
.dbline 0 ; func end
rjmp _nrf905_WaitSended
.dbend
.dbfunc e nrf905_SendAgain _nrf905_SendAgain fV
.even
_nrf905_SendAgain::
.dbline -1
.dbline 272
;
; //测试直接重新发送上次写入的数据
; void nrf905_SendAgain(void)
; {
.dbline 273
; nrf905_TxOn();
rcall _nrf905_TxOn
.dbline 274
; nrf905_TxSend();
rcall _nrf905_TxSend
.dbline 275
; nrf905_WaitSended();
.dbline -2
.dbline 277
;
; }
L34:
.dbline 0 ; func end
rjmp _nrf905_WaitSended
.dbend
.dbfunc e RfSendProc _RfSendProc fV
.even
_RfSendProc::
.dbline -1
.dbline 283
;
;
;
; //发送测试
; void RfSendProc(void)
; {
.dbline 285
; // puts_hh("Into send process code");
; nrf905_SendData();//发送测试数据
rcall _nrf905_SendData
.dbline 286
; nrf905_Off();//断开电源
.dbline -2
.dbline 288
; // puts_hh(Tx_Buf);//向串口打印数据
; }
L35:
.dbline 0 ; func end
rjmp _nrf905_Off
.dbend
.area bss(ram, con, rel)
.dbfile E:\公司用\atmega8l\final\nrf905_send1\nrf905.c
_Rx_Buf::
.blkb 32
.dbsym e Rx_Buf _Rx_Buf A[32:32]c
_Tx_Buf::
.blkb 32
.dbsym e Tx_Buf _Tx_Buf A[32:32]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -