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

📄 nrf905.s

📁 本文档是从MCS51向AVR的快速转换的说明文档.
💻 S
📖 第 1 页 / 共 2 页
字号:
;   SET(PORTB,PWR);
	sbi 0x18,0
	.dbline 181
;   CLR(PORTB,TX_EN);//maybe first
	cbi 0x18,2
	.dbline 182
;   SET(PORTB,TRXCE);
	sbi 0x18,1
	.dbline -2
L10:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e nrf905_Init _nrf905_Init fV
	.even
_nrf905_Init::
	.dbline -1
	.dbline 187
; }
; 
; //初始化nrf905
; void nrf905_Init()
; {
	.dbline 188
;    nrf905_StandBy();
	xcall _nrf905_StandBy
	.dbline 189
;    DelayMs(10);//!!!must >3ms
	ldi R16,10
	xcall _DelayMs
	.dbline 190
;    nrf905_Config();
	xcall _nrf905_Config
	.dbline 192
;    
;    nrf905_SpiTest();//test...
	xcall _nrf905_SpiTest
	.dbline 193
;    nrf905_RxOn();
	xcall _nrf905_RxOn
	.dbline -2
L11:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e nrf905_SpiTest _nrf905_SpiTest fV
;              i -> R20
	.even
_nrf905_SpiTest::
	xcall push_gset1
	.dbline -1
	.dbline 198
; }
; 
; //测试:通过读配置,判断SPI操作是否正确
; void nrf905_SpiTest()
; {uchar i;
	.dbline 199
;   CLR(PORTB,CSN);                   
	cbi 0x18,4
	.dbline 200
;   nrf905_SpiRW(RC);  //读配置
	ldi R16,16
	xcall _nrf905_SpiRW
	.dbline 201
;   for (i=0;i<10;i++)
	clr R20
	xjmp L16
L13:
	.dbline 202
	.dbline 203
	clr R16
	xcall _nrf905_SpiRW
	ldi R24,<_RxBuf
	ldi R25,>_RxBuf
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R16
	.dbline 204
L14:
	.dbline 201
	inc R20
L16:
	.dbline 201
	cpi R20,10
	brlo L13
	.dbline 205
;   { 
;     RxBuf[i]=  nrf905_SpiRW(0);//read from nrf905
;   }
;   SET(PORTB,CSN);  
	sbi 0x18,4
	.dbline -2
L12:
	xcall 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 210
; }
; 
; //写Tx地址
; void nrf905_SetTxAddr()
; {
	.dbline 211
;   CLR(PORTB,CSN);                   
	cbi 0x18,4
	.dbline 212
;   nrf905_SpiRW(WTA);  //写Tx地址  
	ldi R16,34
	xcall _nrf905_SpiRW
	.dbline 213
;   nrf905_SpiRW(TX_ADDRESS_0);
	ldi R16,18
	xcall _nrf905_SpiRW
	.dbline 214
;   nrf905_SpiRW(TX_ADDRESS_1);
	ldi R16,52
	xcall _nrf905_SpiRW
	.dbline 215
;   nrf905_SpiRW(TX_ADDRESS_2);
	ldi R16,86
	xcall _nrf905_SpiRW
	.dbline 216
;   nrf905_SpiRW(TX_ADDRESS_3);
	ldi R16,120
	xcall _nrf905_SpiRW
	.dbline 217
;   SET(PORTB,CSN);  
	sbi 0x18,4
	.dbline -2
L17:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e nrf905_SetData _nrf905_SetData fV
;              i -> R20
	.even
_nrf905_SetData::
	xcall push_gset1
	.dbline -1
	.dbline 222
; }
; 
; //写Tx数据
; void nrf905_SetData()
; {uchar i;
	.dbline 224
; 
;   CLR(PORTB,CSN);                   
	cbi 0x18,4
	.dbline 225
;   nrf905_SpiRW(WTP);  //写TxPayload 
	ldi R16,32
	xcall _nrf905_SpiRW
	.dbline 226
;   for (i=0;i<SIZE;i++)
	clr R20
	xjmp L22
L19:
	.dbline 227
	.dbline 228
	ldi R24,<_TxBuf
	ldi R25,>_TxBuf
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	xcall _nrf905_SpiRW
	.dbline 229
L20:
	.dbline 226
	inc R20
L22:
	.dbline 226
	cpi R20,32
	brlo L19
	.dbline 231
;   { 
;     nrf905_SpiRW(TxBuf[i]);
;   }
;   
;   SET(PORTB,CSN);  
	sbi 0x18,4
	.dbline -2
L18:
	xcall 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 236
; }
; 
; //等待发送结束
; void nrf905_WaitSended()
; {
L24:
	.dbline 237
L25:
	.dbline 237
;    while ((PIND&(1<<DR))==0);
	sbis 0x10,4
	rjmp L24
	.dbline -2
L23:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e nrf905_SendData _nrf905_SendData fV
	.even
_nrf905_SendData::
	.dbline -1
	.dbline 242
; }
; 
; //发送TxBuf中的数据
; void nrf905_SendData()
; {
	.dbline 243
;    nrf905_TxOn();//切换到发送模式
	xcall _nrf905_TxOn
	.dbline 244
;    nrf905_SetTxAddr();//写发送地址
	xcall _nrf905_SetTxAddr
	.dbline 245
;    nrf905_SetData();//写数据
	xcall _nrf905_SetData
	.dbline 246
;    nrf905_TxSend();//启动发送
	xcall _nrf905_TxSend
	.dbline 247
;    nrf905_WaitSended();//等待发送结束
	xcall _nrf905_WaitSended
	.dbline -2
L27:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e nrf905_SendAgain _nrf905_SendAgain fV
	.even
_nrf905_SendAgain::
	.dbline -1
	.dbline 253
;    
; }
; 
; //测试直接重新发送上次写入的数据
; void nrf905_SendAgain()
; {
	.dbline 254
;    nrf905_TxOn();
	xcall _nrf905_TxOn
	.dbline 255
;    nrf905_TxSend();
	xcall _nrf905_TxSend
	.dbline 256
;    nrf905_WaitSended();
	xcall _nrf905_WaitSended
	.dbline -2
L28:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e nrf905_ReadData _nrf905_ReadData fV
;              i -> R20
	.even
_nrf905_ReadData::
	xcall push_gset1
	.dbline -1
	.dbline 262
;    
; }
; 
; //读出接收到的数据
; void nrf905_ReadData()
; {
	.dbline 265
;   uchar i;
; 
;   CLR(PORTB,CSN);                   
	cbi 0x18,4
	.dbline 266
;   nrf905_SpiRW(RRP);  //读RxPayload 
	ldi R16,36
	xcall _nrf905_SpiRW
	.dbline 267
;   for (i=0;i<SIZE;i++)
	clr R20
	xjmp L33
L30:
	.dbline 268
	.dbline 269
	clr R16
	xcall _nrf905_SpiRW
	ldi R24,<_RxBuf
	ldi R25,>_RxBuf
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R16
	.dbline 270
L31:
	.dbline 267
	inc R20
L33:
	.dbline 267
	cpi R20,32
	brlo L30
	.dbline 272
;   { 
;     RxBuf[i]=nrf905_SpiRW(0);//read...
;   }
;   
;   SET(PORTB,CSN);  
	sbi 0x18,4
	.dbline -2
L29:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile D:\IccAvr\Pei\ptr8000\nrf905.C
_RxBuf::
	.blkb 32
	.dbsym e RxBuf _RxBuf A[32:32]c
_TxBuf::
	.blkb 32
	.dbsym e TxBuf _TxBuf A[32:32]c

⌨️ 快捷键说明

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