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

📄 jfp_fasong.s

📁 非常适合实用的无线射频芯片NRF905
💻 S
📖 第 1 页 / 共 2 页
字号:
	movw R22,R16
	.dbline -1
	.dbline 128
; }
; //--------------------------------NRF905待发数据打包----------------------------
; void TxPacket(uchar TxBUF[4])
; {
	.dbline 130
; 	uchar i;
; 	Low_nrf905_CSN;		   						// 使能Spi,允许对nrf905进行读写操作
	cbi 0x18,4
	.dbline 131
; 	Delay(1);
	ldi R16,1
	ldi R17,0
	xcall _Delay
	.dbline 132
; 	SpiReadSpiWrite(WTP);				// 写数据前先写写数据命令
	ldi R16,32
	xcall _SpiReadSpiWrite
	.dbline 133
; 	for (i=0;i<4;i++)
	clr R20
	xjmp L24
L21:
	.dbline 134
	.dbline 135
	mov R30,R20
	clr R31
	add R30,R22
	adc R31,R23
	ldd R16,z+0
	xcall _SpiReadSpiWrite
	.dbline 136
L22:
	.dbline 133
	inc R20
L24:
	.dbline 133
	cpi R20,4
	brlo L21
	.dbline 137
; 	{
; 	SpiReadSpiWrite(TxBUF[i]);		// 待发送的32字节数据
; 	}						
; 	Hign_nrf905_CSN;
	sbi 0x18,4
	.dbline 138
; 	Delay(1);							// 关闭Spi,不允许对nrf905进行读写操作
	ldi R16,1
	ldi R17,0
	xcall _Delay
	.dbline 139
; 	Low_nrf905_CSN;								// 使能Spi
	cbi 0x18,4
	.dbline 140
; 	SpiReadSpiWrite(WTA);				// 写地址前首先先写地址命令
	ldi R16,34
	xcall _SpiReadSpiWrite
	.dbline 141
; 	for (i=0;i<4;i++)					// 写 4 bytes 地址
	clr R20
	xjmp L28
L25:
	.dbline 142
	.dbline 143
	ldi R24,<_TxAddress
	ldi R25,>_TxAddress
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	xcall _SpiReadSpiWrite
	.dbline 144
L26:
	.dbline 141
	inc R20
L28:
	.dbline 141
	cpi R20,4
	brlo L25
	.dbline 145
; 	{
; 	SpiReadSpiWrite(TxAddress[i]);
; 	}
; 	Hign_nrf905_CSN;					// 关闭Spi
	sbi 0x18,4
	.dbline 146
; 	Hign_nrf905_TRX_CE;					// Set TRX_CE high,start Tx data transmission
	sbi 0x12,5
	.dbline 147
; 	Delay(1);							// 等待DR变高
	ldi R16,1
	ldi R17,0
	xcall _Delay
	.dbline 148
; 	Low_nrf905_TRX_CE;							// 设置TRX_CE=0
	cbi 0x12,5
	.dbline -2
L20:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r TxBUF 22 pc
	.dbend
	.dbfunc e SetTxMode _SetTxMode fV
	.even
_SetTxMode::
	.dbline -1
	.dbline 152
; }
; //-------------------------------发送模式激发-----------------------------------
; void SetTxMode(void)
; {
	.dbline 153
; 	Low_nrf905_TRX_CE;				//
	cbi 0x12,5
	.dbline 154
; 	Hign_nrf905_TX_EN;				//发送使能
	sbi 0x18,0
	.dbline 155
; 	Delay(2); 				// delay for mode change(>=650us)根据晶振不同要改变
	ldi R16,2
	ldi R17,0
	xcall _Delay
	.dbline -2
L29:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
;           temp -> y+0
;              j -> <dead>
;              i -> <dead>
	.even
_main::
	sbiw R28,63
	sbiw R28,1  ; offset = 64
	.dbline -1
	.dbline 159
; }
; //------------------------------主函数------------------------------------------
; void main(void)
; {  
	.dbline 161
; 	uint i,j,temp[32];
; 	DDRD=0x32;		  //
	ldi R24,50
	out 0x11,R24
	.dbline 162
; 	DDRB=0xB3;		  //
	ldi R24,179
	out 0x17,R24
	.dbline 163
; 	DDRA=0x8f;		  //
	ldi R24,143
	out 0x1a,R24
	.dbline 164
; 	PORTA = 0xff;
	ldi R24,255
	out 0x1b,R24
	.dbline 165
; 	Spi_initial();
	xcall _Spi_initial
	.dbline 166
; 	system_Init();
	xcall _system_Init
	.dbline 167
; 	Config905();
	xcall _Config905
	.dbline 168
; 	Delay(500);
	ldi R16,500
	ldi R17,1
	xcall _Delay
	xjmp L32
L31:
	.dbline 170
; 	while(1)
;  {
	.dbline 174
; 	//TX();
; 
; //------------------------------------------------------------------------------
; 	if((PINA & 0x10) == 0x00)						//有键按下
	sbic 0x19,4
	rjmp L34
	.dbline 175
; 	{
L36:
	.dbline 176
L37:
	.dbline 176
; 	 while(!(PINA & 0x10));   			//等待按键松开  RED
	sbis 0x19,4
	rjmp L36
	.dbline 177
; 	 TxRxBuf[0]=0x31;
	ldi R24,49
	sts _TxRxBuf,R24
	.dbline 178
; 	 TxRxBuf[1]=0x31;
	sts _TxRxBuf+1,R24
	.dbline 179
; 	 TxRxBuf[2]=0x29;
	ldi R24,41
	sts _TxRxBuf+2,R24
	.dbline 180
; 	 TxRxBuf[3]=0x30;   
	ldi R24,48
	sts _TxRxBuf+3,R24
	.dbline 183
; 
; //------------------------------------------------------------------------------
;      SetTxMode();
	xcall _SetTxMode
	.dbline 184
; 	 TxPacket(TxRxBuf);													
	ldi R16,<_TxRxBuf
	ldi R17,>_TxRxBuf
	xcall _TxPacket
	.dbline 185
; 	}
L34:
	.dbline 187
; //------------------------------------------------------------------------------
; 	if((PINA & 0x20) == 0x00)		//有键按下
	sbic 0x19,5
	rjmp L42
	.dbline 188
; 	{
L44:
	.dbline 189
L45:
	.dbline 189
; while(!(PINA & 0x20));   			//等待按键松开GREEN
	sbis 0x19,5
	rjmp L44
	.dbline 190
; 	 TxRxBuf[0]=0x30;
	ldi R24,48
	sts _TxRxBuf,R24
	.dbline 191
; 	 TxRxBuf[1]=0x31;
	ldi R24,49
	sts _TxRxBuf+1,R24
	.dbline 192
; 	 TxRxBuf[2]=0x32;
	ldi R24,50
	sts _TxRxBuf+2,R24
	.dbline 193
; 	 TxRxBuf[3]=0x29;    
	ldi R24,41
	sts _TxRxBuf+3,R24
	.dbline 195
; //------------------------------------------------------------------------------
;      SetTxMode();			        // 设置进入发送状态
	xcall _SetTxMode
	.dbline 196
; 	 TxPacket(TxRxBuf);			    // 装载待发送数据
	ldi R16,<_TxRxBuf
	ldi R17,>_TxRxBuf
	xcall _TxPacket
	.dbline 197
; 	 }
L42:
	.dbline 199
; //------------------------------------------------------------------------------
; 	if((PINA & 0x40) == 0x00)	    //有键按下
	sbic 0x19,6
	rjmp L50
	.dbline 200
; 	{
L52:
	.dbline 201
L53:
	.dbline 201
; 	while(!(PINA & 0x40));   		//等待按键松开GREEN
	sbis 0x19,6
	rjmp L52
	.dbline 202
;  	 TxRxBuf[0]=0x29;
	ldi R24,41
	sts _TxRxBuf,R24
	.dbline 203
; 	 TxRxBuf[1]=0x30;
	ldi R24,48
	sts _TxRxBuf+1,R24
	.dbline 204
; 	 TxRxBuf[2]=0x31;
	ldi R24,49
	sts _TxRxBuf+2,R24
	.dbline 205
; 	 TxRxBuf[3]=0x32;  
	ldi R24,50
	sts _TxRxBuf+3,R24
	.dbline 207
; //------------------------------------------------------------------------------
;      SetTxMode();                   // 设置进入发送状态
	xcall _SetTxMode
	.dbline 208
; 	 TxPacket(TxRxBuf);             // 装载待发送数据
	ldi R16,<_TxRxBuf
	ldi R17,>_TxRxBuf
	xcall _TxPacket
	.dbline 209
; 	 }
L50:
	.dbline 210
L32:
	.dbline 169
	xjmp L31
X1:
	.dbline -2
L30:
	adiw R28,63
	adiw R28,1  ; offset = 64
	.dbline 0 ; func end
	ret
	.dbsym l temp 0 A[64:32]i
	.dbsym l j 1 i
	.dbsym l i 1 i
	.dbend
	.area bss(ram, con, rel)
	.dbfile F:\开发板配套资料\JASK3000软件开发包\遥控开关\NRF905_发送\jfp_fasong.c
_TxRxBuf::
	.blkb 4
	.dbsym e TxRxBuf _TxRxBuf A[4:4]c

⌨️ 快捷键说明

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