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

📄 main.s

📁 nRF24L01详细编程资料
💻 S
📖 第 1 页 / 共 3 页
字号:
; 				accept_time=0;
	clr R2
	clr R3
	sts _accept_time+1,R3
	sts _accept_time,R2
	.dbline 157
; 		 		Buffer[0]=80;
	ldi R24,80
	sts _Buffer,R24
	.dbline 158
; 				Buffer[1]=01;
	ldi R24,1
	sts _Buffer+1,R24
	.dbline 159
; 				TX_Mode();			// set TX Mode and transmitting
	rcall _TX_Mode
	.dbline 160
; 				Buffer[0]=80;
	ldi R24,80
	sts _Buffer,R24
	.dbline 161
; 				Buffer[1]=01;
	ldi R24,1
	sts _Buffer+1,R24
	.dbline 162
; 				TX_Mode();			// set TX Mode and transmitting
	rcall _TX_Mode
	.dbline 163
; 				delayms(100);
	ldi R16,100
	ldi R17,0
	rcall _delayms
	.dbline 164
; 				RX_Mode();
	rcall _RX_Mode
	.dbline 165
; 				Buffer[0]=00;
	clr R2
	sts _Buffer,R2
	.dbline 166
; 				Buffer[1]=00;
	sts _Buffer+1,R2
	.dbline 167
; 		}
L14:
	.dbline 168
; 		if(accept_flag=1)
	ldi R24,1
	sts _accept_flag,R24
	tst R24
	brne X14
	rjmp L19
X14:
X6:
	.dbline 169
; 		{
	.dbline 170
; 		   accept_time++;
	lds R24,_accept_time
	lds R25,_accept_time+1
	adiw R24,1
	sts _accept_time+1,R25
	sts _accept_time,R24
	.dbline 172
; 	//	   delayms(100);
; 		   if(accept_time>10000)
	ldi R24,10000
	ldi R25,39
	lds R2,_accept_time
	lds R3,_accept_time+1
	cp R24,R2
	cpc R25,R3
	brsh L21
X7:
	.dbline 173
; 		   {
	.dbline 174
; 		   	 accept_flag=0;
	clr R2
	sts _accept_flag,R2
	.dbline 175
; 			 accept_time=0;
	clr R3
	sts _accept_time+1,R3
	sts _accept_time,R2
	.dbline 176
; 		   }
L21:
	.dbline 179
; //-------------------------------------------
; 		//	if(!(PINB& 0x01))
; 		if(!(PINB& 0x04))
	sbic 0x3,2
	rjmp L23
X8:
	.dbline 180
; 		{//nRF24L01 接收数据 
	.dbline 181
; 			key_debug=SPI_Read(STATUS);			// read register STATUS's value
	ldi R16,7
	rcall _SPI_Read
	sts _key_debug,R16
	.dbline 182
; 			if(key_debug&RX_DR)					// if renRF24L01_CEive data ready (RX_DR) interrupt
	sbrs R16,6
	rjmp L25
X9:
	.dbline 183
; 				SPI_Read_Buf(RD_RX_PLOAD,Buffer,TX_PLOAD_WIDTH);// read renRF24L01_CEive payload from RX_FIFO buffer
	ldi R24,20
	std y+0,R24
	ldi R18,<_Buffer
	ldi R19,>_Buffer
	ldi R16,97
	rcall _SPI_Read_Buf
L25:
	.dbline 184
; 			if(key_debug&MAX_RT) SPI_RW_Reg(FLUSH_TX,0);
	lds R2,_key_debug
	sbrs R2,4
	rjmp L27
X10:
	.dbline 184
	clr R18
	ldi R16,225
	rcall _SPI_RW_Reg
L27:
	.dbline 185
; 			SPI_RW_Reg(WRITE_REG+STATUS,0xff);// clear RX_DR or TX_DS or MAX_RT interrupt flag
	ldi R18,255
	ldi R16,39
	rcall _SPI_RW_Reg
	.dbline 186
; 			RX_Mode();
	rcall _RX_Mode
	.dbline 187
; 			if((Buffer[0]==80)&&(Buffer[1]==02))//data accept
	lds R24,_Buffer
	cpi R24,80
	brne L29
X11:
	lds R24,_Buffer+1
	cpi R24,2
	brne L29
X12:
	.dbline 188
; 			{
	.dbline 189
; 			 	accept_flag=1;
	ldi R24,1
	sts _accept_flag,R24
	.dbline 190
; 			 	PORTC = 0x02;
	ldi R24,2
	out 0x8,R24
	.dbline 191
; 				delayms(5000);	//延时10ms*10=100ms
	ldi R16,5000
	ldi R17,19
	rcall _delayms
	.dbline 192
; 				delayms(5000);	//延时10ms*10=100ms
	ldi R16,5000
	ldi R17,19
	rcall _delayms
	.dbline 193
; 				PORTC = 0x00;
	clr R2
	out 0x8,R2
	.dbline 194
; 			}
L29:
	.dbline 195
; 		}
L23:
	.dbline 197
; //-------------------------------------------
; 		}	
L19:
	.dbline 198
; 	}
L3:
	.dbline 134
	rjmp L2
X13:
	.dbline -2
L1:
	.dbline 0 ; func end
	adiw R28,1
	ret
	.dbsym r Get_SO 10 c
	.dbend
	.dbfunc e init_CPU _init_CPU fV
	.even
_init_CPU::
	.dbline -1
	.dbline 207
; 
; 
; }
; /*-----------------------------------------------------------------------------
;    Module:   init_CPU
;    Function: Initialization of CPU
; ------------------------------------------------------------------------------*/
; void init_CPU (void)
; {
	.dbline 208
;  	MCUCR = 0x00;	// 
	clr R2
	out 0x35,R2
	.dbline 209
; 	EICRA = 0x00; //extended ext ints
	sts 105,R2
	.dbline 210
;     EIMSK = 0x00;
	out 0x1d,R2
	.dbline 212
; 	 
; 	TIMSK0 = 0x01; //timer 0 interrupt sources
	ldi R24,1
	sts 110,R24
	.dbline 213
; 	TIMSK1 = 0x00; //timer 1 interrupt sources
	sts 111,R2
	.dbline 214
; 	TIMSK2 = 0x00; //timer 2 interrupt sources
	sts 112,R2
	.dbline 215
; 	 CLI(); //disable all interrupts
	cli
	.dbline 216
; 	 NOP();
	nop
	.dbline 217
; 	PORTB = 0x81;
	ldi R24,129
	out 0x5,R24
	.dbline 218
;  	DDRB  = 0xf3;
	ldi R24,243
	out 0x4,R24
	.dbline 219
; 	PORTD = 0x80;
	ldi R24,128
	out 0xb,R24
	.dbline 220
; 	DDRD  = 0xff;
	ldi R24,255
	out 0xa,R24
	.dbline 221
; 	PORTC = 0x80;
	ldi R24,128
	out 0x8,R24
	.dbline 222
; 	DDRC  = 0x78;
	ldi R24,120
	out 0x7,R24
	.dbline 223
;     nRF24L01_CEL;
	cbi 0xb,7
	.dbline 224
; 	delay();
	rcall _delay
	.dbline 225
; 	nRF24L01_CSNH;			// Spi disable
	sbi 0xb,6
	.dbline 226
; 	delay();
	rcall _delay
	.dbline 227
; 	nRF24L01_SCKL;	
	cbi 0x5,1
	.dbline 228
; 	delay();
	rcall _delay
	.dbline -2
L32:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delay _delay fV
	.even
_delay::
	.dbline -1
	.dbline 231
; }
; void delay(void)//
; {
	.dbline 232
; 	NOP();
	nop
	.dbline 233
; 	NOP();
	nop
	.dbline 234
; 	NOP();
	nop
	.dbline 235
; 	NOP();
	nop
	.dbline 236
; 	NOP();
	nop
	.dbline 237
; 	NOP();
	nop
	.dbline -2
L33:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delayms _delayms fV
;            dly -> R16,R17
	.even
_delayms::
	.dbline -1
	.dbline 240
; }
; void delayms(unsigned short	dly)//
; {
	.dbline 241
; 	for(;dly>0;dly--) ;
	rjmp L38
L35:
	.dbline 241
L36:
	.dbline 241
	subi R16,1
	sbci R17,0
L38:
	.dbline 241
	cpi R16,0
	cpc R16,R17
	brne L35
X15:
	.dbline -2
L34:
	.dbline 0 ; func end
	ret
	.dbsym r dly 16 s
	.dbend
	.dbfunc e clear_buf _clear_buf fV
;         number -> R18
;            ptr -> R16,R17
	.even
_clear_buf::
	.dbline -1
	.dbline 245
; }
; 
; void clear_buf(unsigned char	*ptr,unsigned char number)//清零buffer,指定字节个数
; {
	.dbline 246
; 	for (;number>0;number--) *ptr++=0;
	rjmp L43
L40:
	.dbline 246
	clr R2
	movw R30,R16
	st Z+,R2
	movw R16,R30
L41:
	.dbline 246
	dec R18
L43:
	.dbline 246
	ldi R24,0
	cp R24,R18
	brlo L40
X16:
	.dbline -2
L39:
	.dbline 0 ; func end
	ret
	.dbsym r number 18 c
	.dbsym r ptr 16 pc
	.dbend
	.dbfunc e SPI_RW _SPI_RW fc
;        bit_ctr -> R22
;           byte -> R20
	.even
_SPI_RW::
	rcall push_xgsetF000
	mov R20,R16
	.dbline -1
	.dbline 257
; }
; //------------------------------------------------------
; /**************************************************
; Function: SPI_RW();
; 
; Description:
;   Writes one byte to nRF24L01, and return the byte read
;   from nRF24L01 during write, according to SPI protocol  */
; /**************************************************/
; unsigned char SPI_RW(unsigned char byte)
; {
	.dbline 259
; 	unsigned char  bit_ctr;	
;    	for(bit_ctr=0;bit_ctr<8;bit_ctr++)   	// output 8-bit
	clr R22
	rjmp L48
L45:
	.dbline 260
;    	{
	.dbline 261
;    		if(byte & 0x80) 
	sbrs R20,7
	rjmp L49
X17:
	.dbline 262
;    			nRF24L01_MOSIH;
	sbi 0x5,0
	rjmp L50
L49:
	.dbline 264
;    		else 
;    			nRF24L01_MOSIL;
	cbi 0x5,0
L50:
	.dbline 265
; 		delay();
	rcall _delay
	.dbline 266
;    		byte = (byte << 1);           		// shift next bit into MSB..
	lsl R20
	.dbline 267
;    		nRF24L01_SCKH;
	sbi 0x5,1
	.dbline 268
; 		delay();
	rcall _delay
	.dbline 269
;  		if(PINB&0x08) byte |= 1;
	sbis 0x3,3
	rjmp L51
X18:
	.dbline 269
	ori R20,1
L51:
	.dbline 270
;    		nRF24L01_SCKL;
	cbi 0x5,1
	.dbline 271
; 		delay();
	rcall _delay
	.dbline 272
;    	}
L46:
	.dbline 259
	inc R22
L48:
	.dbline 259
	cpi R22,8
	brlo L45

⌨️ 快捷键说明

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