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

📄 temperature.lst

📁 ADC采集温度数据通过nrf905发送出去
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0584) 
(0585) /////////////////////////////////////////////////////////////
(0586) void nrF905_PowerOff_Mode()
(0587) {
(0588) 	PWR_UP_L;
_nrF905_PowerOff_Mode:
     48B 98C0      CBI	0x18,0
     48C 9508      RET
(0589) }
(0590) 
(0591) /////////////////////////////////////////////////////////////
(0592) void nrF905_Standby_Mode()
(0593) {
(0594) 	PWR_UP_H;
_nrF905_Standby_Mode:
     48D 9AC0      SBI	0x18,0
(0595) 	TRX_CE_L;
     48E 9896      CBI	0x12,6
     48F 9508      RET
(0596) }
(0597) 
(0598) /////////////////////////////////////////////////////////////
(0599) void nrF905_TX_Mode()
(0600) {
(0601) 	PWR_UP_H;
_nrF905_TX_Mode:
     490 9AC0      SBI	0x18,0
(0602) 	TX_EN_H;
     491 9A95      SBI	0x12,5
(0603) 	TRX_CE_L;
     492 9896      CBI	0x12,6
     493 9508      RET
(0604) }
(0605) 
(0606) /////////////////////////////////////////////////////////////
(0607) void nrF905_RX_Mode()
(0608) {
(0609) 	PWR_UP_H;
_nrF905_RX_Mode:
     494 9AC0      SBI	0x18,0
(0610) 	TX_EN_L;
     495 9895      CBI	0x12,5
(0611) 	TRX_CE_H;
     496 9A96      SBI	0x12,6
(0612) 	us(650);
     497 E80A      LDI	R16,0x8A
     498 E012      LDI	R17,2
     499 DC21      RCALL	_us
     49A 9508      RET
_spi_handle:
  len                  --> R22
  i                    --> R20
  cmd                  --> R10
     49B D4EA      RCALL	push_xgsetF00C
     49C 2EA0      MOV	R10,R16
(0613) }
(0614) 
(0615) /////////////////////////////////////////////////////////////
(0616) BYTE spi_handle(BYTE cmd)
(0617) {
(0618)  	BYTE	len,i;
(0619)  	switch(cmd)		 {
     49D 2D4A      MOV	R20,R10
     49E 2755      CLR	R21
     49F 3140      CPI	R20,0x10
     4A0 E0E0      LDI	R30,0
     4A1 075E      CPC	R21,R30
     4A2 F0A1      BEQ	0x04B7
     4A3 3140      CPI	R20,0x10
     4A4 E0E0      LDI	R30,0
     4A5 075E      CPC	R21,R30
     4A6 F40C      BGE	0x04A8
     4A7 C07B      RJMP	0x0523
     4A8 3241      CPI	R20,0x21
     4A9 E0E0      LDI	R30,0
     4AA 075E      CPC	R21,R30
     4AB F409      BNE	0x04AD
     4AC C05C      RJMP	0x0509
     4AD 3243      CPI	R20,0x23
     4AE E0E0      LDI	R30,0
     4AF 075E      CPC	R21,R30
     4B0 F409      BNE	0x04B2
     4B1 C03A      RJMP	0x04EC
     4B2 3244      CPI	R20,0x24
     4B3 E0E0      LDI	R30,0
     4B4 075E      CPC	R21,R30
     4B5 F0D1      BEQ	0x04D0
     4B6 C06C      RJMP	0x0523
(0620) 	case R_CONFIG:
(0621) 		len = 10;
     4B7 E06A      LDI	R22,0xA
(0622) 		for ( i=0; i<10; i++ ) {
     4B8 2744      CLR	R20
     4B9 C013      RJMP	0x04CD
(0623) 			if ( Register[i] != spi_rxbuf[i] )	return 1;
     4BA E782      LDI	R24,0x72
     4BB E090      LDI	R25,0
     4BC 2FE4      MOV	R30,R20
     4BD 27FF      CLR	R31
     4BE 0FE8      ADD	R30,R24
     4BF 1FF9      ADC	R31,R25
     4C0 8020      LDD	R2,Z+0
     4C1 E285      LDI	R24,0x25
     4C2 E091      LDI	R25,1
     4C3 2FE4      MOV	R30,R20
     4C4 27FF      CLR	R31
     4C5 0FE8      ADD	R30,R24
     4C6 1FF9      ADC	R31,R25
     4C7 8030      LDD	R3,Z+0
     4C8 1432      CP	R3,R2
     4C9 F011      BEQ	0x04CC
     4CA E001      LDI	R16,1
     4CB C059      RJMP	0x0525
     4CC 9543      INC	R20
     4CD 304A      CPI	R20,0xA
     4CE F358      BCS	0x04BA
(0624) 		}
(0625) 		break;
     4CF C053      RJMP	0x0523
(0626) 	case R_RX_PAYLOAD:
(0627) 		len = Register[3] & 0x3f;
     4D0 9160 0128 LDS	R22,Register+3
     4D2 736F      ANDI	R22,0x3F
(0628) 		rxpt = 0;
     4D3 2422      CLR	R2
     4D4 9220 00C1 STS	nrf905_temperature.c:rxpt,R2
(0629) 		handlept = 0;
     4D6 9220 00C0 STS	handlept,R2
(0630) 		FlashFlag = FLASHLIMIT;
     4D8 E082      LDI	R24,2
     4D9 9380 006B STS	FlashFlag,R24
(0631) 		for ( i=0; i<len; i++ )	 {
     4DB 2744      CLR	R20
     4DC C009      RJMP	0x04E6
(0632) 			uart_TxChar(spi_rxbuf[i]);
     4DD E782      LDI	R24,0x72
     4DE E090      LDI	R25,0
     4DF 2FE4      MOV	R30,R20
     4E0 27FF      CLR	R31
     4E1 0FE8      ADD	R30,R24
     4E2 1FF9      ADC	R31,R25
     4E3 8100      LDD	R16,Z+0
     4E4 DC12      RCALL	_uart_TxChar
     4E5 9543      INC	R20
     4E6 1746      CP	R20,R22
     4E7 F3A8      BCS	0x04DD
(0633) 		}
(0634) 
(0635) 		rxpt = len;
     4E8 9360 00C1 STS	nrf905_temperature.c:rxpt,R22
(0636) 		handle();
     4EA D16E      RCALL	_handle
(0637) 		break;
     4EB C037      RJMP	0x0523
(0638) 	case R_TX_ADDRESS:
(0639) 		len = (Register[2] >> 4) & 0x07;
     4EC 9160 0127 LDS	R22,Register+2
     4EE 9562      SWAP	R22
     4EF 706F      ANDI	R22,0xF
     4F0 7067      ANDI	R22,7
(0640) 		for ( i=0; i<len; i++ ) {
     4F1 2744      CLR	R20
     4F2 C013      RJMP	0x0506
(0641) 			if ( tx_addr[i] != spi_rxbuf[i] )	return 1;
     4F3 E782      LDI	R24,0x72
     4F4 E090      LDI	R25,0
     4F5 2FE4      MOV	R30,R20
     4F6 27FF      CLR	R31
     4F7 0FE8      ADD	R30,R24
     4F8 1FF9      ADC	R31,R25
     4F9 8020      LDD	R2,Z+0
     4FA EA84      LDI	R24,0xA4
     4FB E090      LDI	R25,0
     4FC 2FE4      MOV	R30,R20
     4FD 27FF      CLR	R31
     4FE 0FE8      ADD	R30,R24
     4FF 1FF9      ADC	R31,R25
     500 8030      LDD	R3,Z+0
     501 1432      CP	R3,R2
     502 F011      BEQ	0x0505
     503 E001      LDI	R16,1
     504 C020      RJMP	0x0525
     505 9543      INC	R20
     506 1746      CP	R20,R22
     507 F358      BCS	0x04F3
(0642) 		}
(0643) 
(0644) 		break;
     508 C01A      RJMP	0x0523
(0645) 	case R_TX_PAYLOAD:
(0646) 		len = Register[4] & 0x3F;
     509 9160 0129 LDS	R22,0x0129
     50B 736F      ANDI	R22,0x3F
(0647) 		for ( i=0; i<len; i++ ) {
     50C 2744      CLR	R20
     50D C013      RJMP	0x0521
(0648) 			if ( tx_buf[i] != spi_rxbuf[i] )	return 1;
     50E E782      LDI	R24,0x72
     50F E090      LDI	R25,0
     510 2FE4      MOV	R30,R20
     511 27FF      CLR	R31
     512 0FE8      ADD	R30,R24
     513 1FF9      ADC	R31,R25
     514 8020      LDD	R2,Z+0
     515 E884      LDI	R24,0x84
     516 E090      LDI	R25,0
     517 2FE4      MOV	R30,R20
     518 27FF      CLR	R31
     519 0FE8      ADD	R30,R24
     51A 1FF9      ADC	R31,R25
     51B 8030      LDD	R3,Z+0
     51C 1432      CP	R3,R2
     51D F011      BEQ	0x0520
     51E E001      LDI	R16,1
     51F C005      RJMP	0x0525
     520 9543      INC	R20
     521 1746      CP	R20,R22
     522 F358      BCS	0x050E
(0649) 		}
(0650) 
(0651) 		break;
(0652) 	}
(0653) 
(0654) 	nrF905_RX_Mode();
     523 DF70      RCALL	_nrF905_RX_Mode
(0655) 	return 0;
     524 2700      CLR	R16
     525 C467      RJMP	pop_xgsetF00C
_SPI_R_CONFIG:
  i                    --> R20
     526 934A      ST	R20,-Y
(0656) }
(0657) 
(0658) /////////////////////////////////////////////////////////////
(0659) BYTE SPI_R_CONFIG()
(0660) {
(0661)  	BYTE	i;
(0662) 
(0663) 	spi_rxpt = 0;
     527 2422      CLR	R2
     528 9220 0071 STS	spi_rxpt,R2
(0664) 	spi_handlept = 0;
     52A 9220 0070 STS	spi_handlept,R2
(0665) 	nrF905_Standby_Mode();
     52C DF60      RCALL	_nrF905_Standby_Mode
(0666) 	CSN_L;
     52D 98C2      CBI	0x18,2
(0667)  	SPI_Char(0,R_CONFIG);
     52E E120      LDI	R18,0x10
     52F 2700      CLR	R16
     530 DF45      RCALL	_SPI_Char
(0668) 	for ( i=0; i<10; i++ ) 	SPI_Char(1,0xff);
     531 2744      CLR	R20
     532 C004      RJMP	0x0537
     533 EF2F      LDI	R18,0xFF
     534 E001      LDI	R16,1
     535 DF40      RCALL	_SPI_Char
     536 9543      INC	R20
     537 304A      CPI	R20,0xA
     538 F3D0      BCS	0x0533
(0669) 
(0670) 	CSN_H;
     539 9AC2      SBI	0x18,2
(0671) 	return spi_handle(R_CONFIG);
     53A E100      LDI	R16,0x10
     53B DF5F      RCALL	_spi_handle
     53C 9149      LD	R20,Y+
     53D 9508      RET
_SPI_W_CONFIG:
  i                    --> R20
     53E 934A      ST	R20,-Y
(0672) }
(0673) 
(0674) /////////////////////////////////////////////////////////////
(0675) void SPI_W_CONFIG()
(0676) {
(0677)  	BYTE	i;
(0678) 
(0679) 	nrF905_Standby_Mode();
     53F DF4D      RCALL	_nrF905_Standby_Mode
(0680) 	ms(10);
     540 E00A      LDI	R16,0xA
     541 E010      LDI	R17,0
     542 DB5D      RCALL	_ms
     543 C017      RJMP	0x055B
(0681) 	while(1)	{
(0682) 		CSN_L;
     544 98C2      CBI	0x18,2
(0683) 	 	SPI_Char(0,W_CONFIG);
     545 2722      CLR	R18
     546 2700      CLR	R16
     547 DF2E      RCALL	_SPI_Char
(0684) 		for ( i=0; i<10; i++ )	{
     548 2744      CLR	R20
     549 C00A      RJMP	0x0554
(0685) 		 	SPI_Char(0,Register[i]);
     54A E285      LDI	R24,0x25
     54B E091      LDI	R25,1
     54C 2FE4      MOV	R30,R20
     54D 27FF      CLR	R31
     54E 0FE8      ADD	R30,R24
     54F 1FF9      ADC	R31,R25
     550 8120      LDD	R18,Z+0
     551 2700      CLR	R16
     552 DF23      RCALL	_SPI_Char
     553 9543      INC	R20
     554 304A      CPI	R20,0xA
     555 F3A0      BCS	0x054A
(0686) 		}
(0687) 
(0688) 		CSN_H;
     556 9AC2      SBI	0x18,2
(0689) 
(0690) 		if ( !SPI_R_CONFIG() )	break;
     557 DFCE      RCALL	_SPI_R_CONFIG
     558 2300      TST	R16
     559 F409      BNE	0x055B
     55A C001      RJMP	0x055C
     55B CFE8      RJMP	0x0544
(0691) 	}
(0692) 
(0693) 	nrF905_RX_Mode();
     55C DF37      RCALL	_nrF905_RX_Mode
     55D 9149      LD	R20,Y+
     55E 9508      RET
_SPI_R_TX_PAYLOAD:
  len                  --> R20
  i                    --> R10
     55F 92AA      ST	R10,-Y
     560 934A      ST	R20,-Y
(0694) }
(0695) 
(0696) /////////////////////////////////////////////////////////////
(0697) BYTE SPI_R_TX_PAYLOAD()
(0698) {
(0699)  	BYTE	i,len;
(0700) 
(0701) 	spi_rxpt = 0;
     561 2422      CLR	R2
     562 9220 0071 STS	spi_rxpt,R2
(0702) 	spi_handlept = 0;
     564 9220 0070 STS	spi_handlept,R2
(0703) 	nrF905_Standby_Mode();
     566 DF26      RCALL	_nrF905_Standby_Mode
(0704) 	CSN_L;
     567 98C2      CBI	0x18,2
(0705)  	SPI_Char(0,R_TX_PAYLOAD);
     568 E221      LDI	R18,0x21
     569 2700      CLR	R16
     56A DF0B      RCALL	_SPI_Char
(0706) 	len = Register[4] & 0x3F;
     56B 9140 0129 LDS	R20,0x0129
     56D 734F      ANDI	R20,0x3F
(0707) 	for ( i=0; i<len; i++ ) 	SPI_Char(1,0xff);
     56E 24AA      CLR	R10
     56F C004      RJMP	0x0574
     570 EF2F      LDI	R18,0xFF
     571 E001      LDI	R16,1
     572 DF03      RCALL	_SPI_Char
     573 94A3      INC	R10
     574 16A4      CP	R10,R20
     575 F3D0      BCS	0x0570
(0708) 
(0709) 	CSN_H;
     576 9AC2      SBI	0x18,2
(0710) 	return spi_handle(R_TX_PAYLOAD);
     577 E201      LDI	R16,0x21
     578 DF22      RCALL	_spi_handle
     579 9149      LD	R20,Y+
     57A 90A9      LD	R10,Y+
     57B 9508      RET
_SPI_W_TX_PAYLOAD:
  len                  --> Y,+1
  i                    --> R10
     57C 92AA      ST	R10,-Y
(0711) }
(0712) 
(0713) /////////////////////////////////////////////////////////////
(0714) void SPI_W_TX_PAYLOAD()
(0715) {
(0716)  	BYTE	i,len;
(0717) 
(0718) 	CSN_L;
     57D 98C2      CBI	0x18,2
(0719) 	SPI_Char(0,W_TX_PAYLOAD);
     57E E220      LDI	R18,0x20
     57F 2700      CLR	R16
     580 DEF5      RCALL	_SPI_Char
(0720) 
(0721) //	len = Register[4] & 0x3F;
(0722) 
(0723)     Register[4] = tx_len;
     581 9020 0083 LDS	R2,nrf905_temperature.c:tx_len
     583 9220 0129 STS	0x0129,R2
(0724) 	for ( i=0; i<tx_len; i++ )	{
     585 24AA      CLR	R10
     586 C012      RJMP	0x0599
(0725) 		SPI_Char(0,tx_buf[i]);
     587 E884      LDI	R24,0x84
     588 E090      LDI	R25,0
     589 2DEA      MOV	R30,R10
     58A 27FF      CLR	R31
     58B 0FE8      ADD	R30,R24
     58C 1FF9      ADC	R31,R25
     58D 8120      LDD	R18,Z+0
     58E 2700      CLR	R16
     58F DEE6      RCALL	_SPI_Char
(0726) 		uart_TxChar(tx_buf[i]);
     590 E884      LDI	R24,0x84
     591 E090      LDI	R25,0
     592 2DEA      MOV	R30,R10

⌨️ 快捷键说明

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