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

📄 nrf905_temperature.s

📁 ADC采集温度数据通过nrf905发送出去
💻 S
📖 第 1 页 / 共 5 页
字号:
	subi R24,249    ; addi 7
	cp R20,R24
	brlo L126
X30:
	.dbline 451
; 	tx_buf[7+num*2] = GetLPC(tx_buf,7+num*2);
	lds R2,_num
	clr R3
	lsl R2
	rol R3
	movw R18,R2
	subi R18,249  ; offset = 7
	sbci R19,255
	ldi R16,<_tx_buf
	ldi R17,>_tx_buf
	push R2
	push R3
	rcall _GetLPC
	pop R3
	pop R2
	ldi R24,<_tx_buf+7
	ldi R25,>_tx_buf+7
	movw R30,R2
	add R30,R24
	adc R31,R25
	std z+0,R16
	.dbline 452
; 	tx_len = 8+num*2;
	lds R24,_num
	lsl R24
	subi R24,248    ; addi 8
	sts _tx_len,R24
	.dbline 454
; 
; 	}
	rjmp L125
L124:
	.dbline 455
; 	else{
	.dbline 456
;        if(startnum == 0){
	lds R2,_startnum
	tst R2
	brne L132
X31:
	.dbline 456
	.dbline 457
; 	     	for(i=7;i<15;i++){
	ldi R20,7
	rjmp L137
L134:
	.dbline 457
	.dbline 458
;               tx_buf[i] = data[startnum*2+i-7];
	mov R2,R20
	clr R3
	lds R30,_startnum
	clr R31
	lsl R30
	rol R31
	add R30,R2
	adc R31,R3
	ldi R24,<_data-7
	ldi R25,>_data-7
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,<_tx_buf
	ldi R25,>_tx_buf
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 459
; 	          }
L135:
	.dbline 457
	inc R20
L137:
	.dbline 457
	cpi R20,15
	brlo L134
X32:
	.dbline 460
; 	        tx_buf[15] = GetLPC(tx_buf,15);
	ldi R18,15
	ldi R19,0
	ldi R16,<_tx_buf
	ldi R17,>_tx_buf
	rcall _GetLPC
	mov R10,R16
	sts _tx_buf+15,R10
	.dbline 461
; 	        tx_len = 16;
	ldi R24,16
	sts _tx_len,R24
	.dbline 462
; 	   }
L132:
	.dbline 463
; 	   if(startnum == 4){
	lds R24,_startnum
	cpi R24,4
	breq X36
	rjmp L140
X36:
X33:
	.dbline 463
	.dbline 464
;             for(i=7;i<((num-4)*2+7);i++){
	ldi R20,7
	rjmp L145
L142:
	.dbline 464
	.dbline 465
;               tx_buf[i] = data[(startnum+2)*2+i-7];
	mov R2,R20
	clr R3
	lds R30,_startnum
	clr R31
	adiw R30,2
	lsl R30
	rol R31
	add R30,R2
	adc R31,R3
	ldi R24,<_data-7
	ldi R25,>_data-7
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,<_tx_buf
	ldi R25,>_tx_buf
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 466
; 	          }
L143:
	.dbline 464
	inc R20
L145:
	.dbline 464
	lds R24,_num
	subi R24,4
	lsl R24
	subi R24,249    ; addi 7
	cp R20,R24
	brlo L142
X34:
	.dbline 467
; 	        tx_buf[7+(num-4)*2] = GetLPC(tx_buf,7+(num-4)*2);
	lds R20,_num
	clr R21
	subi R20,4
	sbci R21,0
	lsl R20
	rol R21
	movw R18,R20
	subi R18,249  ; offset = 7
	sbci R19,255
	ldi R16,<_tx_buf
	ldi R17,>_tx_buf
	rcall _GetLPC
	mov R10,R16
	ldi R24,<_tx_buf+7
	ldi R25,>_tx_buf+7
	movw R30,R20
	add R30,R24
	adc R31,R25
	std z+0,R10
	.dbline 468
; 	        tx_len = 8+(num-4)*2;
	lds R24,_num
	subi R24,4
	lsl R24
	subi R24,248    ; addi 8
	sts _tx_len,R24
	.dbline 469
; 	   }
L140:
	.dbline 470
; 	}
L125:
	.dbline -2
L117:
	.dbline 0 ; func end
	rjmp pop_xgset300C
	.dbsym r i 20 c
	.dbend
	.dbfunc e DownPara _DownPara fV
;             no -> R10
	.even
_DownPara::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 476
; 
; }
; 
; /////////////////////////////////////////////////////////////////////////////////
; void DownPara(BYTE no)
; {
	.dbline 477
; 	tx_buf[0] = 0xeb;
	ldi R24,235
	sts _tx_buf,R24
	.dbline 478
; 	tx_buf[1] = 0x90;
	ldi R24,144
	sts _tx_buf+1,R24
	.dbline 479
; 	tx_buf[2] = CMD_DOWNPARA;
	ldi R24,2
	sts _tx_buf+2,R24
	.dbline 480
; 	tx_buf[3] = ID_L;
	lds R2,_ID_L
	sts _tx_buf+3,R2
	.dbline 481
; 	tx_buf[4] = ID_H;
	lds R2,_ID_H
	sts _tx_buf+4,R2
	.dbline 482
; 	tx_buf[5] = num;
	lds R2,_num
	sts _tx_buf+5,R2
	.dbline 483
; 	tx_buf[6] = no;
	sts _tx_buf+6,R10
	.dbline 484
; 	tx_buf[7] = (limit[no][0] & 0xff);
	ldi R24,6
	mul R24,R10
	movw R30,R0
	ldi R24,<_limit
	ldi R25,>_limit
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	andi R25,0
	sts _tx_buf+7,R24
	.dbline 485
; 	tx_buf[8] = (limit[no][0] & 0xff00) >> 8;
	ldi R24,6
	mul R24,R10
	movw R30,R0
	ldi R24,<_limit
	ldi R25,>_limit
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	andi R24,0
	movw R2,R24
	mov R2,R3
	clr R3
	sts _tx_buf+8,R2
	.dbline 486
; 	tx_buf[9] = (limit[no][1] & 0xff);
	ldi R24,6
	mul R24,R10
	movw R30,R0
	ldi R24,<_limit+2
	ldi R25,>_limit+2
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	andi R25,0
	sts _tx_buf+9,R24
	.dbline 487
; 	tx_buf[10] = (limit[no][1] & 0xff00) >> 8;
	ldi R24,6
	mul R24,R10
	movw R30,R0
	ldi R24,<_limit+2
	ldi R25,>_limit+2
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	andi R24,0
	movw R2,R24
	mov R2,R3
	clr R3
	sts _tx_buf+10,R2
	.dbline 488
; 	tx_buf[11] = (limit[no][2] & 0xff);
	ldi R24,6
	mul R24,R10
	movw R30,R0
	ldi R24,<_limit+4
	ldi R25,>_limit+4
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	andi R25,0
	sts _tx_buf+11,R24
	.dbline 489
; 	tx_buf[12] = (limit[no][2] & 0xff00) >> 8;
	ldi R24,6
	mul R24,R10
	movw R30,R0
	ldi R24,<_limit+4
	ldi R25,>_limit+4
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	andi R24,0
	movw R2,R24
	mov R2,R3
	clr R3
	sts _tx_buf+12,R2
	.dbline 490
; 	tx_buf[13] = GetLPC(tx_buf,10);
	ldi R18,10
	ldi R19,0
	ldi R16,<_tx_buf
	ldi R17,>_tx_buf
	rcall _GetLPC
	sts _tx_buf+13,R16
	.dbline 491
; 	tx_len = 14;
	ldi R24,14
	sts _tx_len,R24
	.dbline -2
L148:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r no 10 c
	.dbend
	.dbfunc e RetPara _RetPara fV
;              i -> R10
	.even
_RetPara::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 496
; }
; 
; /////////////////////////////////////////////////////////////////////////////////
; void RetPara(BYTE i)
; {
	.dbline 497
; 	tx_buf[0] = 0xeb;
	ldi R24,235
	sts _tx_buf,R24
	.dbline 498
; 	tx_buf[1] = 0x90;
	ldi R24,144
	sts _tx_buf+1,R24
	.dbline 499
; 	tx_buf[2] = CMD_RETPARA;
	ldi R24,3
	sts _tx_buf+2,R24
	.dbline 500
; 	tx_buf[3] = ID_L;
	lds R2,_ID_L
	sts _tx_buf+3,R2
	.dbline 501
; 	tx_buf[4] = ID_H;
	lds R2,_ID_H
	sts _tx_buf+4,R2
	.dbline 502
; 	tx_buf[5] = num;
	lds R2,_num
	sts _tx_buf+5,R2
	.dbline 503
; 	tx_buf[6] = i;
	sts _tx_buf+6,R10
	.dbline 504
; 	tx_buf[7] = (limit[i][0] & 0xff);
	ldi R24,6
	mul R24,R10
	movw R30,R0
	ldi R24,<_limit
	ldi R25,>_limit
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	andi R25,0
	sts _tx_buf+7,R24
	.dbline 505
; 	tx_buf[8] = (limit[i][0] & 0xff00) >> 8;
	ldi R24,6
	mul R24,R10
	movw R30,R0
	ldi R24,<_limit
	ldi R25,>_limit
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	andi R24,0
	movw R2,R24
	mov R2,R3
	clr R3
	sts _tx_buf+8,R2
	.dbline 506
; 	tx_buf[9] = (limit[i][1] & 0xff);
	ldi R24,6
	mul R24,R10
	movw R30,R0
	ldi R24,<_limit+2
	ldi R25,>_limit+2
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	andi R25,0
	sts _tx_buf+9,R24
	.dbline 507
; 	tx_buf[10] = (limit[i][1] & 0xff00) >> 8;
	ldi R24,6
	mul R24,R10
	movw R30,R0
	ldi R24,<_limit+2
	ldi R25,>_limit+2
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	andi R24,0
	movw R2,R24
	mov R2,R3
	clr R3
	sts _tx_buf+10,R2
	.dbline 508
; 	tx_buf[11] = (limit[i][2] & 0xff);
	ldi R24,6
	mul R24,R10
	movw R30,R0
	ldi R24,<_limit+4
	ldi R25,>_limit+4
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	andi R25,0
	sts _tx_buf+11,R24
	.dbline 509
; 	tx_buf[12] = (limit[i][2] & 0xff00) >> 8;
	ldi R24,6
	mul R24,R10
	movw R30,R0
	ldi R24,<_limit+4
	ldi R25,>_limit+4
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	andi R24,0
	movw R2,R24
	mov R2,R3
	clr R3
	sts _tx_buf+12,R2
	.dbline 510
; 	tx_buf[13] = GetLPC(tx_buf,13);
	ldi R18,13
	ldi R19,0
	ldi R16,<_tx_buf
	ldi R17,>_tx_buf
	rcall _GetLPC
	sts _tx_buf+13,R16
	.dbline 511
; 	tx_len = 14;
	ldi R24,14
	sts _tx_len,R24
	.dbline -2
L166:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r i 10 c
	.dbend
	.dbfunc e SetID _SetID fV
	.even
_SetID::
	.dbline -1
	.dbline 516
; }
; 
; /////////////////////////////////////////////////////////////////////////////////
; void SetID(void)
; {
	.dbline 517
;        tx_buf[0] = 0xeb;
	ldi R24,235
	sts _tx_buf,R24
	.dbline 518
; 	tx_buf[1] = 0x90;
	ldi R24,144
	sts _tx_buf+1,R24
	.dbline 519
; 	tx_buf[2] = CMD_SETID;
	ldi R24,5
	sts _tx_buf+2,R24
	.dbline 520
; 	tx_buf[3] = ID_L;
	lds R2,_ID_L
	sts _tx_buf+3,R2
	.dbline 521
; 	tx_buf[4] = ID_H;
	lds R2,_ID_H
	sts _tx_buf+4,R2
	.dbline 522
; 	tx_buf[5] = GetLPC(tx_buf,5);
	ldi R18,5
	ldi R19,0
	ldi R16,<_tx_buf
	ldi R17,>_tx_buf
	rcall _GetLPC
	sts _tx_buf+5,R16
	.dbline 523
; 	tx_len = 6;
	ldi R24,6
	sts _tx_len,R24
	.dbline -2
L184:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e SetIDOK _SetIDOK fV
	.even
_SetIDOK::
	.dbline -1
	.dbline 527
; }
; 
; void SetIDOK(void)
; {
	.dbline 528
;        tx_buf[0] = 0xeb;
	ldi R24,235
	sts _tx_buf,R24
	.dbline 529
; 	tx_buf[1] = 0x90;
	ldi R24,144
	sts _tx_buf+1,R24
	.dbline 530
; 	tx_buf[2] = CMD_SETID_OK;
	ldi R24,6
	sts _tx_buf+2,R24
	.dbline 531
; 	tx_buf[3] = ID_L;
	lds R2,_ID_L
	sts _tx_buf+3,R2
	.dbline 532
; 	tx_buf[4] = ID_H;
	lds R2,_ID_H
	sts _tx_buf+4,R2
	.dbline 533
; 	tx_buf[5] = GetLPC(tx_buf,5); 
	ldi R18,5
	ldi R19,0
	ldi R16,<_tx_buf
	ldi R17,>_tx_buf
	rcall _GetLPC
	sts _tx_buf+5,R16
	.dbline 534
; 	tx_len = 6;
	ldi R24,6
	sts _tx_len,R24
	.dbline -2
L190:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ReadID _ReadID fV
	.even
_ReadID::
	.dbline -1
	.dbline 538
; }
; 
; void ReadID(void)
; {
	.dbline 539
;        tx_buf[0] = 0xeb;
	ldi R24,235
	sts _tx_buf,R24
	.dbline 540
; 	tx_buf[1] = 0x90;
	ldi R24,144
	sts _tx_buf+1,R24
	.dbline 541
; 	tx_buf[2] = CMD_READID;
	ldi R24,7
	sts _tx_buf+2,R24
	.dbline 542
; 	tx_buf[3] = GetLPC(tx_buf,3);
	ldi R18,3
	ldi R19,0
	ldi R16,<_tx_buf
	ldi R17,>_tx_buf
	rcall _GetLPC
	sts _tx_buf+3,R16
	.dbline 543
; 	tx_len = 4;
	ldi R24,4
	sts _tx_len,R24
	.dbline -2
L196:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e SPI_MasterInit _SPI_MasterInit fV
;           temp -> R16
	.even
_SPI_MasterInit::
	.dbline -1
	.dbline 547
; }
; /////////////////////////////////////////////////////////////
; void SPI_MasterInit(void)
; {
	.dbline 551
; 	BYTE	temp;
; 
; 	//	   PD7(LED)PD6(TRX_CE),PD5(TX_EN) PD2(CD),PD3(DR),PD4(AM)
; 	PORTD = 0x1C;
	ldi R24,28
	out 0x12,R24
	.dbline 552
; 	DDRD = 0x80 |    0x40     |0x20;
	ldi R24,224
	out 0x11,R24
	.dbline 553
; 	TX_EN_L;
	cbi 0x12,5
	.dbline 554
; 	TRX_CE_L;
	cbi 0x12,6
	.dbline 555
; 	LED_L;
	cbi 0x12,7
	.dbline 558
; 	//	Set MOSI, SCK, SS,  POWER_UP output,all others input
; 	//		PB3   PB5  PB2  PB0
; 	CLI();
	cli
	.dbline 559
; 	DDRB = 0x08 |0x20| 0x04|0x01;
	ldi R24,45
	out 0x17,R24
	.dbline 560
; 	MISO_H;
	sbi 0x18,4
	.dbline 561
; 	CSN_H;
	sbi 0x18,2
	.dbline 565
; 	//	Enable SPI,Master,Set clock rate fck/16,interrupt enable
; //	SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPIE)|(1<<CPHA);
; //	SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPIE);
; 	SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
	ldi R24,81
	out 0xd,R24
	.dbline 567
; //	SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<CPHA);
; 	SPSR = 0x00;
	clr R2
	out 0xe,R2
	.dbline 568
; 	temp = SPSR;
	in R16,0xe
	.dbline 569
; 	temp = SPCR;
	in R16,0xd
	.dbline 570
; 	SEI();
	sei
	.dbline -2
L200:
	.dbline 0 ; func end
	ret
	.dbsym r temp 16 c
	.dbend
	.dbfunc e SPI_Char _SPI_Char fV
;              c -> R18
;         rxflag -> R16
	.even
_SPI_Char::
	.dbline -1
	.dbline 575
; }
; 
; /////////////////////////////////////////////////////////////
; void SPI_Char(BYTE rxflag,char c)
; {
	.dbline 576
; 	SPDR = c;
	out 0xf,R18
L202:
	.dbline 577
; 	while(!(SPSR & (1<<SPIF)));
L203:
	.dbline 577
	sbis 0xe,7
	rjmp L202
X37:
	.dbline 579
; 
;  	if ( rxflag )	{
	tst R16
	breq L205
X38:
	.dbline 579
	.dbline 580
; 		spi_rxbuf[spi_rxpt] = SPDR;
	ldi R24,<_spi_rxbuf
	ldi R25,>_spi_rxbuf
	lds R30,_spi_rxpt
	clr R31
	add R30,R24
	adc R31,R25
	in R2,0xf
	std z+0,R2
	.dbline 581
; 		spi_rxpt = (spi_rxpt+1)&SPI_BUF_LEN1;
	lds R24,_spi_rxpt
	subi R24,255    ; addi 1
	andi R24,15
	sts _spi_rxpt,R24
	.dbline 582
; 	}
L205:
	.dbline -2
L201:
	.dbline 0 ; func end
	ret
	.dbsym r c 18 c
	.dbsym r rxflag 16 c
	.dbend
	.dbfunc e nrF905_PowerOff_Mode _nrF905_PowerOff_Mode fV
	.even
_nrF905_PowerOff_Mode::
	.dbline -1
	.dbline 587
; }
; 
; /////////////////////////////////////////////////////////////
; void nrF905_PowerOff_Mode()
; {
	.dbline 588
; 	PWR_UP_L;
	cbi 0x18,0
	.dbline -2
L207:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e nrF905_Standby_Mode _nrF905_Standby_Mode fV
	.even
_nrF905_Standby_Mode::
	.dbline -1
	.dbline 593
; }

⌨️ 快捷键说明

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