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

📄 nrf905.s

📁 嵌入式单片机控制温度传感的无线收发方案!
💻 S
📖 第 1 页 / 共 2 页
字号:
	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 + -