📄 nrf2401.s
字号:
; nrf2401A_RwOn();//配置状态
rcall _nrf2401A_RwOn
.dbline 158
; nrf2401A_WR(DATA2_W); //200+16+32+8
ldi R16,160
rcall _nrf2401A_WR
.dbline 159
; nrf2401A_WR(DATA1_W); //200
ldi R16,160
rcall _nrf2401A_WR
.dbline 160
; nrf2401A_WR(RX_ADDRESS2);
clr R16
rcall _nrf2401A_WR
.dbline 161
; nrf2401A_WR(RX_ADDRESS2);
clr R16
rcall _nrf2401A_WR
.dbline 162
; nrf2401A_WR(RX_ADDRESS2);
clr R16
rcall _nrf2401A_WR
.dbline 163
; nrf2401A_WR(RX_ADDRESS2);
clr R16
rcall _nrf2401A_WR
.dbline 164
; nrf2401A_WR(RX_ADDRESS2);
clr R16
rcall _nrf2401A_WR
.dbline 165
; nrf2401A_WR(RX_ADDRESS_4);
clr R16
rcall _nrf2401A_WR
.dbline 166
; nrf2401A_WR(RX_ADDRESS_3);
ldi R16,204
rcall _nrf2401A_WR
.dbline 167
; nrf2401A_WR(RX_ADDRESS_2);
ldi R16,204
rcall _nrf2401A_WR
.dbline 168
; nrf2401A_WR(RX_ADDRESS_1);
ldi R16,204
rcall _nrf2401A_WR
.dbline 169
; nrf2401A_WR(RX_ADDRESS_0);
ldi R16,204
rcall _nrf2401A_WR
.dbline 170
; nrf2401A_WR(CRC16_EN|ADDR_W); //CRC16,AddrWidth
ldi R16,131
rcall _nrf2401A_WR
.dbline 171
; nrf2401A_WR(PA_PWR_3|XOF_16MHz|CM_SHOCK);
ldi R16,79
rcall _nrf2401A_WR
.dbline 173
; //nrf2401A_WR(PA_PWR_3|XOF_16MHz|RFDR_1M|CM_SHOCK);
; nrf2401A_WR(CH_NO_FREQ|RX_EN); //RxMode,Chan
ldi R16,5
rcall _nrf2401A_WR
.dbline 175
; //
; nrf2401A_StandBy();//执行配置
rcall _nrf2401A_StandBy
.dbline -2
L19:
.dbline 0 ; func end
ret
.dbend
.dbfunc e nrf2401A_RxOn _nrf2401A_RxOn fV
.even
_nrf2401A_RxOn::
.dbline -1
.dbline 212
; }
; /*
; //配置nRF2401A
; void nrf2401A_Config(void)
; {
; nrf2401A_RwOn();//配置状态
;
; nrf2401A_WR(DATA2_W);
; nrf2401A_WR(DATA1_W);
; nrf2401A_WR(RX_ADDRESS2);
; nrf2401A_WR(RX_ADDRESS2);
; nrf2401A_WR(RX_ADDRESS2);
; nrf2401A_WR(RX_ADDRESS2);
; nrf2401A_WR(RX_ADDRESS2);
; nrf2401A_WR(RX_ADDRESS_4);
; nrf2401A_WR(RX_ADDRESS_3);
; nrf2401A_WR(RX_ADDRESS_2);
; nrf2401A_WR(RX_ADDRESS_1);
; nrf2401A_WR(RX_ADDRESS_0);
; nrf2401A_WR(CRC16_EN|ADDR_W);//CRC16,AddrWidth
; nrf2401A_WR(PA_PWR_3|XOF_16MHz|RFDR_1M|CM_SHOCK);
; //#ifdef BPS_1M
; // nrf2401A_WR(PA_PWR_3|XOF_16MHz|RFDR_1M|CM_SHOCK);//0dbm,16M,1Mbps,ShockBurst
; // #else
; // nrf2401A_WR(PA_PWR_3|XOF_16MHz|CM_SHOCK);//0dbm,16M,250Kbps,ShockBurst
; // #endif
; // nrf2401A_WR(CH_NO_FREQ|RX_EN); //RxMode,Chan
;
; nrf2401A_StandBy();//执行配置
; }
;
; */
;
;
; //接收模式
; void nrf2401A_RxOn()
; {
.dbline 213
; nrf2401A_RwOn();
rcall _nrf2401A_RwOn
.dbline 214
; nrf2401A_WR(CH_NO_FREQ|RX_EN); //RxMode,Chan
ldi R16,5
rcall _nrf2401A_WR
.dbline 215
; nrf2401A_Run();
rcall _nrf2401A_Run
.dbline -2
L20:
.dbline 0 ; func end
ret
.dbend
.dbfunc e nrf2401A_TxOn _nrf2401A_TxOn fV
.even
_nrf2401A_TxOn::
.dbline -1
.dbline 220
; }
;
; //发送模式
; void nrf2401A_TxOn()
; {
.dbline 221
; nrf2401A_RwOn();
rcall _nrf2401A_RwOn
.dbline 222
; nrf2401A_WR(CH_NO_FREQ); //TxMode,Chan
ldi R16,4
rcall _nrf2401A_WR
.dbline 223
; nrf2401A_Run();
rcall _nrf2401A_Run
.dbline -2
L21:
.dbline 0 ; func end
ret
.dbend
.dbfunc e nrf2401A_Init _nrf2401A_Init fV
; i -> R20
.even
_nrf2401A_Init::
rcall push_gset1
.dbline -1
.dbline 228
; }
;
; //初始化nrf2401A
; void nrf2401A_Init()
; { uchar i;
.dbline 229
; CLR(PORTC,CLK1);//
cbi 0x15,1
.dbline 230
; nrf2401A_StandBy();
rcall _nrf2401A_StandBy
.dbline 232
; // DelayMs(10); //!!!must >3ms
; for(i=1;i<5;i++)
ldi R20,1
rjmp L26
L23:
.dbline 233
ldi R16,1000
ldi R17,3
rcall _delay
L24:
.dbline 232
inc R20
L26:
.dbline 232
cpi R20,5
brlo L23
.dbline 234
; delay(1000);
; nrf2401A_Config();
rcall _nrf2401A_Config
.dbline 236
;
; nrf2401A_RxOn();//接收状态
rcall _nrf2401A_RxOn
.dbline -2
L22:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.dbfunc e nrf2401A_SetTxAddr _nrf2401A_SetTxAddr fV
.even
_nrf2401A_SetTxAddr::
.dbline -1
.dbline 242
; }
;
;
; //写Tx地址
; void nrf2401A_SetTxAddr()
; {
.dbline 243
; nrf2401A_WR(TX_ADDRESS_3);
ldi R16,204
rcall _nrf2401A_WR
.dbline 244
; nrf2401A_WR(TX_ADDRESS_2);
ldi R16,204
rcall _nrf2401A_WR
.dbline 245
; nrf2401A_WR(TX_ADDRESS_1);
ldi R16,204
rcall _nrf2401A_WR
.dbline 246
; nrf2401A_WR(TX_ADDRESS_0);
ldi R16,204
rcall _nrf2401A_WR
.dbline -2
L27:
.dbline 0 ; func end
ret
.dbend
.dbfunc e nrf2401A_SetData _nrf2401A_SetData fV
; i -> R20
.even
_nrf2401A_SetData::
rcall push_gset1
.dbline -1
.dbline 252
;
; }
;
; //写Tx数据
; void nrf2401A_SetData()
; { uchar i;
.dbline 254
;
; for (i=0;i<SIZE;i++)
clr R20
rjmp L32
L29:
.dbline 255
ldi R24,<_TxBuf
ldi R25,>_TxBuf
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R16,z+0
rcall _nrf2401A_WR
L30:
.dbline 254
inc R20
L32:
.dbline 254
cpi R20,20
brlo L29
.dbline -2
L28:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.dbfunc e nrf2401A_SendData _nrf2401A_SendData fV
.even
_nrf2401A_SendData::
.dbline -1
.dbline 261
; nrf2401A_WR(TxBuf[i]);
;
; }
;
; //发送TxBuf中的数据
; void nrf2401A_SendData()
; {
.dbline 262
; nrf2401A_TxOn();
rcall _nrf2401A_TxOn
.dbline 263
; SET(PORTD,CE);
sbi 0x12,4
.dbline 264
; nrf2401A_SetTxAddr();//写发送地址
rcall _nrf2401A_SetTxAddr
.dbline 265
; nrf2401A_SetData();//写数据
rcall _nrf2401A_SetData
.dbline 266
; CLR(PORTD,CE);//启动发送
cbi 0x12,4
.dbline -2
L33:
.dbline 0 ; func end
ret
.dbend
.dbfunc e nrf2401A_ReadData _nrf2401A_ReadData fV
; i -> R20
.even
_nrf2401A_ReadData::
rcall push_gset1
.dbline -1
.dbline 274
; //发送完毕后进入StandBy
;
; }
;
;
; //读出接收到的数据
; void nrf2401A_ReadData()
; {uchar i;
.dbline 275
; for (i=0;i<SIZE;i++)
clr R20
rjmp L38
L35:
.dbline 276
.dbline 277
rcall _nrf2401A_RD
ldi R24,<_RxBuf
ldi R25,>_RxBuf
mov R30,R20
clr R31
add R30,R24
adc R31,R25
std z+0,R16
.dbline 278
L36:
.dbline 275
inc R20
L38:
.dbline 275
cpi R20,20
brlo L35
.dbline -2
L34:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.dbfunc e RfRecvProc _RfRecvProc fV
; i -> <dead>
.even
_RfRecvProc::
.dbline -1
.dbline 282
; {
; RxBuf[i]=nrf2401A_RD();
; }
;
; }
; void RfRecvProc()
; {uchar i;
.dbline 284
;
; if ((PINC&(1<<DR1))==0) return;//DR=1时表示数据接收对而且Crc正确
sbic 0x13,2
rjmp L40
.dbline 284
rjmp L39
L40:
.dbline 286
; //已经接收到数据
; nrf2401A_ReadData();//读出...
rcall _nrf2401A_ReadData
.dbline -2
L39:
.dbline 0 ; func end
ret
.dbsym l i 1 c
.dbend
.area bss(ram, con, rel)
.dbfile F:\programme\nrf2401\nrf2401.c
_RxBuf::
.blkb 20
.dbsym e RxBuf _RxBuf A[20:20]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -