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

📄 nrf905_temperature.s

📁 ADC采集温度数据通过nrf905发送出去
💻 S
📖 第 1 页 / 共 5 页
字号:
L281:
	.dbline 756
	inc R10
L283:
	.dbline 756
	cp R10,R20
	brlo L280
X60:
	.dbline 759
; 	CSN_H;
	sbi 0x18,2
	.dbline -2
L278:
	.dbline 0 ; func end
	ld R20,y+
	ld R10,y+
	ret
	.dbsym r len 20 c
	.dbsym r i 10 c
	.dbend
	.dbfunc e SPI_R_RX_PAYLOAD _SPI_R_RX_PAYLOAD fc
;              i -> <dead>
;            len -> R20
	.even
_SPI_R_RX_PAYLOAD::
	st -y,R20
	.dbline -1
	.dbline 764
; }
; 
; /////////////////////////////////////////////////////////////
; BYTE SPI_R_RX_PAYLOAD()
; {
	.dbline 767
;  	BYTE	i,len;
; 
; 	spi_rxpt = 0;
	clr R2
	sts _spi_rxpt,R2
	.dbline 768
; 	spi_handlept = 0;
	sts _spi_handlept,R2
	.dbline 769
; 	TRX_CE_L;
	cbi 0x12,6
	.dbline 771
; //	nrF905_Standby_Mode();
; 	CSN_L;
	cbi 0x18,2
	.dbline 772
;  	SPI_Char(0,R_RX_PAYLOAD);
	ldi R18,36
	clr R16
	rcall _SPI_Char
	.dbline 773
; 	len = Register[3] & 0x3f;
	lds R20,_Register+3
	andi R20,63
	rjmp L287
L286:
	.dbline 774
; 	while(DR)	{
	.dbline 775
; 		SPI_Char(1,0xff);
	ldi R18,255
	ldi R16,1
	rcall _SPI_Char
	.dbline 776
; 	}
L287:
	.dbline 774
	sbic 0x10,3
	rjmp L286
X61:
	.dbline 778
; 
; 	CSN_H;
	sbi 0x18,2
	.dbline 779
; 	return spi_handle(R_RX_PAYLOAD);
	ldi R16,36
	rcall _spi_handle
	.dbline -2
L284:
	.dbline 0 ; func end
	ld R20,y+
	ret
	.dbsym l i 1 c
	.dbsym r len 20 c
	.dbend
	.dbfunc e MakeFrame _MakeFrame fV
;              i -> R20
;            cmd -> R10
	.even
_MakeFrame::
	rcall push_xgset300C
	mov R10,R16
	.dbline -1
	.dbline 784
; }
; 
; /////////////////////////////////////////////////////////////
; void MakeFrame(BYTE cmd)
; {
	.dbline 786
; 	BYTE	i;
;  	switch(cmd)		{
	mov R20,R10
	clr R21
	cpi R20,0
	cpc R20,R21
	breq L293
X62:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L294
X63:
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L295
X64:
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L297
X65:
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	breq L299
X66:
	cpi R20,6
	ldi R30,0
	cpc R21,R30
	breq L300
X67:
	rjmp L291
L293:
	.dbline 788
; 	case CMD_ASKDATA:
; 		ms(100);
	ldi R16,100
	ldi R17,0
	rcall _ms
	.dbline 789
; 		CallData();
	rcall _CallData
	.dbline 790
; 		break;
	rjmp L291
L294:
	.dbline 792
; 	case CMD_RETDATA:
; 		ms(5);
	ldi R16,5
	ldi R17,0
	rcall _ms
	.dbline 793
; 		RetData();
	rcall _RetData
	.dbline 795
; 		
; 		break;
	rjmp L291
L295:
	.dbline 797
; 	case CMD_DOWNPARA:
; 		DownPara(spi_rxbuf[6]);
	lds R16,_spi_rxbuf+6
	rcall _DownPara
	.dbline 798
; 		break;
	rjmp L291
L297:
	.dbline 800
; 	case CMD_RETPARA:
; 		RetPara(spi_rxbuf[6]);
	lds R16,_spi_rxbuf+6
	rcall _RetPara
	.dbline 801
; 		break;
	rjmp L291
L299:
	.dbline 803
; 	case CMD_SETID:
; 		 SetID();
	rcall _SetID
	.dbline 804
; 		 break;
	rjmp L291
L300:
	.dbline 806
;        case CMD_SETID_OK:
; 	   	 SetIDOK();
	rcall _SetIDOK
	.dbline 807
; 		 break;
	.dbline 808
; 	default:   break;
L291:
	.dbline 811
; 	}
; 
; 	for ( i=0; i<tx_len; i++ )	uart_TxChar(tx_buf[i]);
	clr R20
	rjmp L304
L301:
	.dbline 811
	ldi R24,<_tx_buf
	ldi R25,>_tx_buf
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	rcall _uart_TxChar
L302:
	.dbline 811
	inc R20
L304:
	.dbline 811
	lds R2,_tx_len
	cp R20,R2
	brlo L301
X68:
	.dbline 813
; 
; 	for ( i=tx_len; i<16; i++ )	tx_buf[i] = 0;
	mov R20,R2
	rjmp L308
L305:
	.dbline 813
	ldi R24,<_tx_buf
	ldi R25,>_tx_buf
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
L306:
	.dbline 813
	inc R20
L308:
	.dbline 813
	cpi R20,16
	brlo L305
X69:
	.dbline -2
L289:
	.dbline 0 ; func end
	rjmp pop_xgset300C
	.dbsym r i 20 c
	.dbsym r cmd 10 c
	.dbend
	.dbfunc e SendGram _SendGram fV
;            cmd -> R10
	.even
_SendGram::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 818
; }
; 
; /////////////////////////////////////////////////////////////
; void SendGram(BYTE cmd)
; {
	.dbline 819
;  	MakeFrame(cmd);
	mov R16,R10
	rcall _MakeFrame
	.dbline 820
; 	nrF905_RX_Mode();
	rcall _nrF905_RX_Mode
L310:
	.dbline 821
; 	while(CD)	{;}
	.dbline 821
	.dbline 821
L311:
	.dbline 821
	sbic 0x10,2
	rjmp L310
X70:
L313:
	.dbline 822
; 	while(AM)	{;}
	.dbline 822
	.dbline 822
L314:
	.dbline 822
	sbic 0x10,4
	rjmp L313
X71:
	.dbline 824
; 
; 	nrF905_TX_Mode();
	rcall _nrF905_TX_Mode
	.dbline 825
; 	SPI_W_TX_ADDRESS();
	rcall _SPI_W_TX_ADDRESS
	.dbline 826
; 	SPI_W_TX_PAYLOAD();
	rcall _SPI_W_TX_PAYLOAD
	.dbline 827
; 	TRX_CE_H;
	sbi 0x12,6
	.dbline 828
; 	us(20);
	ldi R16,20
	ldi R17,0
	rcall _us
	.dbline 829
; 	TRX_CE_L;
	cbi 0x12,6
L316:
	.dbline 830
; 	while (!DR);
L317:
	.dbline 830
	sbis 0x10,3
	rjmp L316
X72:
	.dbline 832
; 
; 	nrF905_RX_Mode();
	rcall _nrF905_RX_Mode
	.dbline -2
L309:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r cmd 10 c
	.dbend
	.dbfunc e handle _handle fV
;            lpc -> <dead>
;            len -> R20
;              i -> R20
	.even
_handle::
	rcall push_xgset300C
	.dbline -1
	.dbline 837
; }
; 
; /////////////////////////////////////////////////////////////
; void handle(void)
; {
	.dbline 840
; 	BYTE	len,i;
; 	BYTE	lpc;
; 	if ( spi_rxbuf[0] != 0xeb )		return;
	lds R24,_spi_rxbuf
	cpi R24,235
	breq L320
X73:
	.dbline 840
	rjmp L319
L320:
	.dbline 841
; 	if ( spi_rxbuf[1] != 0x90 )		return;
	lds R24,_spi_rxbuf+1
	cpi R24,144
	breq L322
X74:
	.dbline 841
	rjmp L319
L322:
	.dbline 843
; 
; 	if ( (spi_rxbuf[2] != CMD_SETID) && (spi_rxbuf[2] != CMD_READID) )	{
	lds R24,_spi_rxbuf+2
	cpi R24,5
	breq L325
X75:
	cpi R24,7
	breq L325
X76:
	.dbline 843
	.dbline 844
; 		if (( spi_rxbuf[3] != ID_L ) || (spi_rxbuf[4] != ID_H))	return;
	lds R2,_ID_L
	lds R3,_spi_rxbuf+3
	cp R3,R2
	brne L333
X77:
	lds R2,_ID_H
	lds R3,_spi_rxbuf+4
	cp R3,R2
	breq L329
X78:
L333:
	.dbline 844
	rjmp L319
L329:
	.dbline 845
; 	}
L325:
	.dbline 847
; 
; 	switch(spi_rxbuf[2])	{
	lds R20,_spi_rxbuf+2
	clr R21
	cpi R20,0
	cpc R20,R21
	breq L338
X79:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L340
X80:
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L341
X81:
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	breq L339
X82:
	cpi R20,7
	ldi R30,0
	cpc R21,R30
	breq L342
X83:
	rjmp L319
L338:
	.dbline 849
; 	case CMD_ASKDATA:   
; 		                         len = 7; 
	ldi R20,7
	.dbline 850
; 					     break;
	rjmp L335
L339:
	.dbline 852
; 	case CMD_SETID:       
; 		                         len = 6;
	ldi R20,6
	.dbline 853
; 					     break;
	rjmp L335
L340:
	.dbline 855
; 	case CMD_RETDATA:
; 		                         len = 8+2*(num-startnum);
	lds R2,_startnum
	lds R20,_num
	sub R20,R2
	lsl R20
	subi R20,248    ; addi 8
	.dbline 856
; 		                         break;
	rjmp L335
L341:
	.dbline 858
; 	case CMD_DOWNPARA:
; 		                         len = 14;
	ldi R20,14
	.dbline 859
; 	                            	break;
	rjmp L335
L342:
	.dbline 861
; 	case CMD_READID:
; 		                         len = 4;
	ldi R20,4
	.dbline 862
; 				            break;
	.dbline 863
; 	default:                     return;
L335:
	.dbline 866
; 	}
; 
; 	if ( GetLPC(spi_rxbuf,len) )		return;
	mov R18,R20
	clr R19
	ldi R16,<_spi_rxbuf
	ldi R17,>_spi_rxbuf
	rcall _GetLPC
	tst R16
	breq L343
X84:
	.dbline 866
	rjmp L319
L343:
	.dbline 869
; 
; 
; 	switch(spi_rxbuf[2])	{
	lds R20,_spi_rxbuf+2
	clr R21
	cpi R20,0
	cpc R20,R21
	breq L349
X85:
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	brne X93
	rjmp L361
X93:
X86:
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	breq L357
X87:
	cpi R20,7
	ldi R30,0
	cpc R21,R30
	brne X94
	rjmp L360
X94:
X88:
	rjmp L346
L349:
	.dbline 871
; 	case CMD_ASKDATA:
; 		num = spi_rxbuf[5];
	lds R2,_spi_rxbuf+5
	sts _num,R2
	.dbline 873
; 
; 		if(num>6)  num = 6;
	ldi R24,6
	cp R24,R2
	brsh L351
X89:
	.dbline 873
	sts _num,R24
L351:
	.dbline 875
; 
; 		if(num != EEPROM_read(num_ADDR))  EEPROM_write(num_ADDR, num);
	ldi R16,432
	ldi R17,1
	rcall _EEPROM_read
	lds R2,_num
	cp R2,R16
	breq L353
X90:
	.dbline 875
	mov R18,R2
	ldi R16,432
	ldi R17,1
	rcall _EEPROM_write
L353:
	.dbline 877
; 
; 		startnum = 0;
	clr R2
	sts _startnum,R2
	.dbline 879
; 		
; 		SendGram(CMD_RETDATA);
	ldi R16,1
	rcall _SendGram
	.dbline 881
; 		
; 		if( num >4) {
	ldi R24,4
	lds R2,_num
	cp R24,R2
	brlo X95
	rjmp L346
X95:
X91:
	.dbline 881
	.dbline 882
; 			us(20);
	ldi R16,20
	ldi R17,0
	rcall _us
	.dbline 883
; 		   startnum = 4;
	ldi R24,4
	sts _startnum,R24
	.dbline 884
; 		   SendGram(CMD_RETDATA);
	ldi R16,1
	rcall _SendGram
	.dbline 885
; 	        }
	.dbline 888
; 		
; 	
; 		break;
	rjmp L346
L357:
	.dbline 890
; 	case CMD_SETID:
; 		ID_L  = spi_rxbuf[3];
	lds R2,_spi_rxbuf+3
	sts _ID_L,R2
	.dbline 891
; 		ID_H = spi_rxbuf[4];
	lds R2,_spi_rxbuf+4
	sts _ID_H,R2
	.dbline 892
; 		EEPROM_write(ID_L_ADDR,ID_L);
	lds R18,_ID_L
	ldi R16,510
	ldi R17,1
	rcall _EEPROM_write
	.dbline 893
; 		EEPROM_write(ID_H_ADDR,ID_H);
	lds R18,_ID_H
	ldi R16,509
	ldi R17,1
	rcall _EEPROM_write
	.dbline 894
; 		SendGram(CMD_SETID_OK);
	ldi R16,6
	rcall _SendGram
	.dbline 895
; 		break;
	rjmp L346
L360:
	.dbline 898
; 
; 	case CMD_READID:
; 		 SendGram(CMD_SETID_OK);
	ldi R16,6
	rcall _SendGram
	.dbline 899
; 		 break;
	rjmp L346
L361:
	.dbline 901
; 	case CMD_DOWNPARA:	
;                num = spi_rxbuf[5];
	lds R2,_spi_rxbuf+5
	sts _num,R2
	.dbline 902
; 		 EEPROM_write(num_ADDR, num);
	mov R18,R2
	ldi R16,432
	ldi R17,1
	rcall _EEPROM_write
	.dbline 904
; 		
; 		for(i=0;i<3;i++)	{
	clr R20
	rjmp L366
L363:
	.dbline 904
	.dbline 905
; 			limit[spi_rxbuf[6]][i] = (spi_rxbuf[8+2*i] << 8) + spi_rxbuf[7+2*i];
	mov R10,R20
	clr R11
	lsl R10
	rol R11
	ldi R24,<_spi_rxbuf+7
	ldi R25,>_spi_rxbuf+7
	movw R30,R10
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,<_spi_rxbuf+8
	ldi R25,>_spi_rxbuf+8
	movw R30,R10
	add R30,R24
	adc R31,R25
	ldd R3,z+0
	lds R4,_spi_rxbuf+6
	ldi R24,6
	mul R24,R4
	movw R4,R0
	ldi R24,<_limit
	ldi R25,>_limit
	add R4,R24
	adc R5,R25
	movw R30,R10
	add R30,R4
	adc R31,R5
	std z+1,R3
	std z+0,R2
	.dbline 906
; 			EEPROM_write((LIMIT_START_ARRD+spi_rxbuf[6]*6+i*2),spi_rxbuf[7+2*i]);
	mov R10,R20
	clr R11
	lsl R10
	rol R11
	ldi R24,<_spi_rxbuf+7
	ldi R25,>_spi_rxbuf+7
	movw R30,R10
	add R30,R24
	adc R31,R25
	ldd R18,z+0
	lds R2,_spi_rxbuf+6
	ldi R24,6
	mul R24,R2
	movw R16,R0
	subi R16,64  ; offset = 448
	sbci R17,254
	add R16,R10
	adc R17,R11
	rcall _EEPROM_write
	.dbline 907
; 		       EEPROM_write((LIMIT_START_ARRD+spi_rxbuf[6]*6+i*2+1), spi_rxbuf[8+2*i] << 8);
	mov R10,R20
	clr R11
	lsl R10
	rol R11
	ldi R24,<_spi_rxbuf+8
	ldi R25,>_spi_rxbuf+8
	movw R30,R10
	add R30,R24
	adc R31,R25
	ldd R18,z+0
	lsl R18
	lsl R18
	lsl R18
	lsl R18
	lsl R18
	lsl R18
	lsl R18
	lsl R18
	lds R2,_spi_rxbuf+6
	ldi R24,6
	mul R24,R2
	movw R16,R0
	subi R16,64  ; offset = 448
	sbci R17,254
	add R16,R10
	adc R17,R11
	subi R16,255  ; offset = 1
	sbci R17,255
	rcall _EEPROM_write
	.dbline 908
; 		}
L364:
	.dbline 904
	inc R20
L366:
	.dbline 904
	cpi R20,3
	brsh X96
	rjmp L363
X96:
X92:
	.dbline 910
; 		
; 		SendGram(CMD_RETPARA);
	ldi R16,3
	rcall _SendGram
	.dbline 912
; 		
; 		break;
	.dbline 913
; 	default: break;
L346:
	.dbline -2
L319:
	.dbline 0 ; func end
	rjmp pop_xgset300C
	.dbsym l lpc 1 c
	.dbsym r len 20 c
	.dbsym r i 20 c
	.dbend
	.dbfunc e ReceiveGram _Recei

⌨️ 快捷键说明

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