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

📄 2.4g+̤

📁 2.4G无线模块资料
💻 4G+̤
📖 第 1 页 / 共 4 页
字号:
(0401)   	SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);   // TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR
    01A5 E027      LDI	R18,7
    01A6 E206      LDI	R16,0x26
    01A7 DF99      RCALL	_SPI_RW_Reg
(0402)   	SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f);     // Set PWR_UP bit, enable CRC(2 bytes) & Prim:RX. RX_DR enabled..
    01A8 E02F      LDI	R18,0xF
    01A9 E200      LDI	R16,0x20
    01AA DF96      RCALL	_SPI_RW_Reg
(0403)   	nRF24L01_CEH;
    01AB 9A5D      SBI	0x0B,5
(0404) 	delay();
    01AC DF64      RCALL	_delay
    01AD 9621      ADIW	R28,1
    01AE 9508      RET
_TX_Mode:
    01AF 9721      SBIW	R28,1
(0405) 	//  This device is now ready to receive one packet of 16 bytes payload from a TX device sending to address
(0406)   //  '3443101001', with auto acknowledgment, retransmit count of 10, RF channel 40 and datarate = 2Mbps.
(0407) 
(0408) }
(0409) /**************************************************/
(0410) 
(0411) /**************************************************
(0412) Function: TX_Mode();
(0413) 
(0414) Description:
(0415)   This function initializes one nRF24L01 device to
(0416)   TX mode, set TX address, set RX address for auto.ack,
(0417)   fill TX payload, select RF channel, datarate & TX pwr.
(0418)   PWR_UP is set, CRC(2 bytes) is enabled, & PRIM:TX.
(0419) 
(0420)   ToDo: One high pulse(>10us) on CE will now send this
(0421)   packet and expext an acknowledgment from the RX device. */
(0422) /**************************************************/
(0423) void TX_Mode(void)
(0424) {
(0425) 	nRF24L01_CEL;
    01B0 985D      CBI	0x0B,5
(0426) 	delay();
    01B1 DF5F      RCALL	_delay
(0427)   	SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);    // Writes TX_Address to nRF24L01
    01B2 E085      LDI	R24,5
    01B3 8388      STD	Y+0,R24
    01B4 E420      LDI	R18,0x40
    01B5 E031      LDI	R19,1
    01B6 E300      LDI	R16,0x30
    01B7 DFC0      RCALL	_SPI_Write_Buf
(0428)   	SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // RX_Addr0 same as TX_Adr for Auto.Ack
    01B8 E085      LDI	R24,5
    01B9 8388      STD	Y+0,R24
    01BA E420      LDI	R18,0x40
    01BB E031      LDI	R19,1
    01BC E20A      LDI	R16,0x2A
    01BD DFBA      RCALL	_SPI_Write_Buf
(0429)   	SPI_Write_Buf(WR_TX_PLOAD, Buffer, TX_PLOAD_WIDTH); // Writes data to TX payload
    01BE E184      LDI	R24,0x14
    01BF 8388      STD	Y+0,R24
    01C0 E020      LDI	R18,0
    01C1 E031      LDI	R19,1
    01C2 EA00      LDI	R16,0xA0
    01C3 DFB4      RCALL	_SPI_Write_Buf
(0430) 
(0431)   	SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);      // Enable Auto.Ack:Pipe0
    01C4 E021      LDI	R18,1
    01C5 E201      LDI	R16,0x21
    01C6 DF7A      RCALL	_SPI_RW_Reg
(0432)   	SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);  // Enable Pipe0
    01C7 E021      LDI	R18,1
    01C8 E202      LDI	R16,0x22
    01C9 DF77      RCALL	_SPI_RW_Reg
(0433)   	SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1a); // 500us + 86us, 10 retrans...
    01CA E12A      LDI	R18,0x1A
    01CB E204      LDI	R16,0x24
    01CC DF74      RCALL	_SPI_RW_Reg
(0434)   	SPI_RW_Reg(WRITE_REG + RF_CH, 40);        // Select RF channel 40
    01CD E228      LDI	R18,0x28
    01CE E205      LDI	R16,0x25
    01CF DF71      RCALL	_SPI_RW_Reg
(0435)   	SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);   // TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR
    01D0 E027      LDI	R18,7
    01D1 E206      LDI	R16,0x26
    01D2 DF6E      RCALL	_SPI_RW_Reg
(0436)   	SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);     // Set PWR_UP bit, enable CRC(2 bytes) & Prim:TX. MAX_RT & TX_DS enabled..
    01D3 E02E      LDI	R18,0xE
    01D4 E200      LDI	R16,0x20
    01D5 DF6B      RCALL	_SPI_RW_Reg
(0437) 	nRF24L01_CEH;
    01D6 9A5D      SBI	0x0B,5
(0438) 	delay();
    01D7 DF39      RCALL	_delay
    01D8 9621      ADIW	R28,1
    01D9 9508      RET
(0439) 	
(0440) }
(0441) //------------------------------------------------------
(0442) void timer0_init(void)
(0443) {
(0444)  TCCR0B = 0x00; //stop
_timer0_init:
    01DA 2422      CLR	R2
    01DB BC25      OUT	0x25,R2
(0445)  TCNT0 = 0x06; //set count
    01DC E086      LDI	R24,6
    01DD BD86      OUT	0x26,R24
(0446)  TCCR0A = 0x00; 
    01DE BC24      OUT	0x24,R2
(0447)  TCCR0B = 0x02; //start timer
    01DF E082      LDI	R24,2
    01E0 BD85      OUT	0x25,R24
    01E1 9508      RET
_timer0_ovf_isr:
    01E2 922A      ST	R2,-Y
    01E3 923A      ST	R3,-Y
    01E4 938A      ST	R24,-Y
    01E5 939A      ST	R25,-Y
    01E6 B62F      IN	R2,0x3F
    01E7 922A      ST	R2,-Y
(0448) }
(0449) #pragma interrupt_handler timer0_ovf_isr:17
(0450) void timer0_ovf_isr(void)		// 5ms
(0451) {
(0452) 
(0453)  	TCNT0 = 0x06; //reload counter value
    01E8 E086      LDI	R24,6
    01E9 BD86      OUT	0x26,R24
(0454) 
(0455)  	if((--t20ms)==0)
    01EA 91800163  LDS	R24,t20ms
    01EC 5081      SUBI	R24,1
    01ED 2E28      MOV	R2,R24
    01EE 92200163  STS	t20ms,R2
    01F0 2388      TST	R24
    01F1 F009      BEQ	0x01F3
    01F2 C203      RJMP	0x03F6
(0456)  		{
(0457) 	 	set(flag,bit20ms);
    01F3 91800162  LDS	R24,flag
    01F5 6081      ORI	R24,1
    01F6 93800162  STS	flag,R24
(0458) 		t20ms=t20msC;
    01F8 E184      LDI	R24,0x14
    01F9 93800163  STS	t20ms,R24
(0459) 		if(PIND& key1)
    01FB 9B4C      SBIS	0x09,4
    01FC C009      RJMP	0x0206
(0460) 		{
(0461) 		 	key1_pulse<<=1;
    01FD 90200161  LDS	R2,key1_pulse
    01FF 0C22      LSL	R2
    0200 92200161  STS	key1_pulse,R2
(0462)     		key1_pulse&=0xfe;
    0202 2D82      MOV	R24,R2
    0203 7F8E      ANDI	R24,0xFE
    0204 93800161  STS	key1_pulse,R24
(0463) 		}
(0464) 		if(!(PIND& key1))
    0206 994C      SBIC	0x09,4
    0207 C009      RJMP	0x0211
(0465) 		{
(0466) 			key1_pulse<<=1;
    0208 90200161  LDS	R2,key1_pulse
    020A 0C22      LSL	R2
    020B 92200161  STS	key1_pulse,R2
(0467)     		key1_pulse|=0x01;
    020D 2D82      MOV	R24,R2
    020E 6081      ORI	R24,1
    020F 93800161  STS	key1_pulse,R24
(0468) 		}
(0469) 		if(key1_pulse==0x0f)
    0211 91800161  LDS	R24,key1_pulse
    0213 308F      CPI	R24,0xF
    0214 F459      BNE	0x0220
(0470) 		{
(0471) 		 	key1_flag=1;
    0215 E081      LDI	R24,1
    0216 93800159  STS	key1_flag,R24
(0472) 			send_flag=1;	
    0218 93800146  STS	send_flag,R24
(0473) 			accept_time=0;
    021A 2422      CLR	R2
    021B 2433      CLR	R3
    021C 92300148  STS	accept_time+1,R3
    021E 92200147  STS	accept_time,R2
(0474) 		}
(0475) 		if(key1_pulse==0xff)
    0220 91800161  LDS	R24,key1_pulse
    0222 3F8F      CPI	R24,0xFF
    0223 F4B9      BNE	0x023B
(0476) 		{
(0477) 		    key1_time++;
    0224 91800150  LDS	R24,key1_time
    0226 5F8F      SUBI	R24,0xFF
    0227 93800150  STS	key1_time,R24
(0478) 			if(key1_time>10)
    0229 E08A      LDI	R24,0xA
    022A 90200150  LDS	R2,key1_time
    022C 1582      CP	R24,R2
    022D F468      BCC	0x023B
(0479) 			{
(0480) 			  key1_time=0;
    022E 2422      CLR	R2
    022F 92200150  STS	key1_time,R2
(0481) 			  key1_flag=1;
    0231 E081      LDI	R24,1
    0232 93800159  STS	key1_flag,R24
(0482) 			  send_flag=1;
    0234 93800146  STS	send_flag,R24
(0483) 			  accept_time=0;
    0236 2433      CLR	R3
    0237 92300148  STS	accept_time+1,R3
    0239 92200147  STS	accept_time,R2
(0484) 			}
(0485) 		}
(0486) 		if(PIND& key2)
    023B 9B4B      SBIS	0x09,3
    023C C009      RJMP	0x0246
(0487) 		{
(0488) 		 	key2_pulse<<=1;
    023D 90200160  LDS	R2,key2_pulse
    023F 0C22      LSL	R2
    0240 92200160  STS	key2_pulse,R2
(0489)     		key2_pulse&=0xfe;
    0242 2D82      MOV	R24,R2
    0243 7F8E      ANDI	R24,0xFE
    0244 93800160  STS	key2_pulse,R24
(0490) 		}
(0491) 		if(!(PIND& key2))
    0246 994B      SBIC	0x09,3
    0247 C009      RJMP	0x0251
(0492) 		{
(0493) 			key2_pulse<<=1;
    0248 90200160  LDS	R2,key2_pulse
    024A 0C22      LSL	R2
    024B 92200160  STS	key2_pulse,R2
(0494)     		key2_pulse|=0x01;
    024D 2D82      MOV	R24,R2
    024E 6081      ORI	R24,1
    024F 93800160  STS	key2_pulse,R24
(0495) 		}
(0496) 		if(key2_pulse==0x0f)
    0251 91800160  LDS	R24,key2_pulse
    0253 308F      CPI	R24,0xF
    0254 F459      BNE	0x0260
(0497) 		{
(0498) 		 	key2_flag=1;
    0255 E081      LDI	R24,1
    0256 93800158  STS	key2_flag,R24
(0499) 			send_flag=1;	
    0258 93800146  STS	send_flag,R24
(0500) 			accept_time=0;
    025A 2422      CLR	R2
    025B 2433      CLR	R3
    025C 92300148  STS	accept_time+1,R3
    025E 92200147  STS	accept_time,R2
(0501) 		}
(0502) 		if(key2_pulse==0xff)
    0260 91800160  LDS	R24,key2_pulse
    0262 3F8F      CPI	R24,0xFF
    0263 F4B9      BNE	0x027B
(0503) 		{
(0504) 		    key2_time++;
    0264 9180014F  LDS	R24,key2_time
    0266 5F8F      SUBI	R24,0xFF
    0267 9380014F  STS	key2_time,R24
(0505) 			if(key2_time>10)
    0269 E08A      LDI	R24,0xA
    026A 9020014F  LDS	R2,key2_time
    026C 1582      CP	R24,R2
    026D F468      BCC	0x027B
(0506) 			{
(0507) 			  key2_time=0;
    026E 2422      CLR	R2
    026F 9220014F  STS	key2_time,R2
(0508) 			  key2_flag=1;
    0271 E081      LDI	R24,1
    0272 93800158  STS	key2_flag,R24
(0509) 			  send_flag=1;
    0274 93800146  STS	send_flag,R24
(0510) 			  accept_time=0;
    0276 2433      CLR	R3
    0277 92300148  STS	accept_time+1,R3
    0279 92200147  STS	accept_time,R2
(0511) 			}
(0512) 		}
(0513) 		if(PIND& key3)
    027B 9B4A      SBIS	0x09,2
    027C C009      RJMP	0x0286
(0514) 		{
(0515) 		 	key3_pulse<<=1;
    027D 9020015F  LDS	R2,key3_pulse
    027F 0C22      LSL	R2
    0280 9220015F  STS	key3_pulse,R2
(0516)     		key3_pulse&=0xfe;
    0282 2D82      MOV	R24,R2
    0283 7F8E      ANDI	R24,0xFE
    0284 9380015F  STS	key3_pulse,R24
(0517) 		}
(0518) 		if(!(PIND& key3))
    0286 994A      SBIC	0x09,2
    0287 C009      RJMP	0x0291
(0519) 		{
(0520) 			key3_pulse<<=1;
    0288 9020015F  LDS	R2,key3_pulse
    028A 0C22      LSL	R2
    028B 9220015F  STS	key3_pulse,R2
(0521)     		key3_pulse|=0x01;
    028D 2D82      MOV	R24,R2
    028E 6081      ORI	R24,1
    028F 9380015F  STS	key3_pulse,R24
(0522) 		}
(0523) 		if(key3_pulse==0x0f)
    0291 9180015F  LDS	R24,key3_pulse
    0293 308F      CPI	R24,0xF
    0294 F459      BNE	0x02A0
(0524) 		{
(0525) 		 	key3_flag=1;
    0295 E081      LDI	R24,1
    0296 93800157  STS	key3_flag,R24
(0526) 			send_flag=1;	
    0298 93800146  STS	send_flag,R24
(0527) 			accept_time=0;
    029A 2422      CLR	R2
    029B 2433      CLR	R3
    029C 92300148  STS	accept_time+1,R3
    029E 92200147  STS	accept_time,R2
(0528) 		}
(0529) 		if(key3_pulse==0xff)
    02A0 9180015F  LDS	R24,key3_pulse
    02A2 3F8F      CPI	R24,0xFF
    02A3 F4B9      BNE	0x02BB
(0530) 		{
(0531) 		    key3_time++;
    02A4 9180014E  LDS	R24,key3_time
    02A6 5F8F      SUBI	R24,0xFF
    02A7 9380014E  STS	key3_time,R24
(0532) 			if(key3_time>10)
    02A9 E08A      LDI	R24,0xA
    02AA 9020014E  LDS	R2,key3_time
    02AC 1582      CP	R24,R2
    02AD F468      BCC	0x02BB
(0533) 			{
(0534) 			  key3_time=0;
    02AE 2422      CLR	R2
    02AF 9220014E  STS	key3_time,R2
(0535) 			  key3_flag=1;
    02B1 E081      LDI	R24,1
    02B2 93800157  STS	key3_flag,R24
(0536) 			  send_flag=1;
    02B4 93800146  STS	send_flag,R24
(0537) 			  accept_time=0;
    02B6 2433      CLR	R3
    02B7 92300148  STS	accept_time+1,R3
    02B9 92200147  STS	accept_time,R2
(0538) 			}
(0539) 		}
(0540) 		if(PINC& key4)
    02BB 9B35      SBIS	0x06,5
    02BC C009      RJMP	0x02C6
(0541) 		{
(0542) 		 	key4_pulse<<=1;
    02BD 9020015E  LDS	R2,key4_pulse
    02BF 0C22      LSL	R2
    02C0 9220015E  STS	key4_pulse,R2
(0543)     		key4_pulse&=0xfe;
    02C2 2D82      MOV	R24,R2
    02C3 7F8E      ANDI	R24,0xFE
    02C4 9380015E  STS	key4_pulse,R24
(0544) 		}
(0545) 		if(!(PINC& key4))
    02C6 9935      SBIC	0x06,5
    02C7 C009      RJMP	0x02D1
(0546) 		{
(0547) 			key4_pulse<<=1;
    02C8 9020015E  LDS	R2,key4_pulse
    02CA 0C22      LSL	R2
    02CB 9220015E  STS	key4_pulse,R2
(0548)     		key4_pulse|=0x01;
    02CD 2D82      MOV	R24,R2
    02CE 6081      ORI	R24,1
    02CF 9380015E  STS	key4_pulse,R24
(0549) 		}
(0550) 		if(key4_pulse==0x0f)

⌨️ 快捷键说明

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