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

📄 nrf905_jinju.s

📁 监测高压电电流
💻 S
📖 第 1 页 / 共 4 页
字号:
	adc R31,R25
	ldd R18,z+0
	clr R16
	rcall _SPI_Char
	.dbline 516
; //uart_TxChar(tx_buf[i]);
; 	}
L147:
	.dbline 513
	inc R20
L149:
	.dbline 513
	cpi R20,16
	brlo L146
X37:
	.dbline 517
; 	CSN_H;
	sbi 0x18,2
	.dbline -2
L144:
	.dbline 0 ; func end
	ld R20,y+
	ret
	.dbsym r len 20 c
	.dbsym r i 20 c
	.dbend
	.dbfunc e SPI_R_TX_ADDRESS _SPI_R_TX_ADDRESS fc
;            len -> R20
;              i -> R10
	.even
_SPI_R_TX_ADDRESS::
	st -y,R10
	st -y,R20
	.dbline -1
	.dbline 522
; }
; 
; /////////////////////////////////////////////////////////////
; BYTE SPI_R_TX_ADDRESS()
; {
	.dbline 525
;  	BYTE	i,len;
; 
; 	spi_rxpt = 0;
	clr R2
	sts _spi_rxpt,R2
	.dbline 526
; 	spi_handlept = 0;
	sts _spi_handlept,R2
	.dbline 527
; 	nrF905_Standby_Mode();
	rcall _nrF905_Standby_Mode
	.dbline 528
; 	CSN_L;
	cbi 0x18,2
	.dbline 529
;  	SPI_Char(0,R_TX_ADDRESS);
	ldi R18,35
	clr R16
	rcall _SPI_Char
	.dbline 530
; 	len = (Register[2] >> 4) & 0x07;
	lds R20,_Register+2
	swap R20
	andi R20,#0x0F
	andi R20,7
	.dbline 531
; 	for ( i=0; i<len; i++ ) 	SPI_Char(1,0xff);
	clr R10
	rjmp L155
L152:
	.dbline 531
	ldi R18,255
	ldi R16,1
	rcall _SPI_Char
L153:
	.dbline 531
	inc R10
L155:
	.dbline 531
	cp R10,R20
	brlo L152
X38:
	.dbline 533
; 
; 	CSN_H;
	sbi 0x18,2
	.dbline 534
; 	return spi_handle(R_TX_ADDRESS);
	ldi R16,35
	rcall _spi_handle
	.dbline -2
L150:
	.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_W_TX_ADDRESS _SPI_W_TX_ADDRESS fV
;            len -> R20
;              i -> R10
	.even
_SPI_W_TX_ADDRESS::
	st -y,R10
	st -y,R20
	.dbline -1
	.dbline 539
; }
; 
; /////////////////////////////////////////////////////////////
; void SPI_W_TX_ADDRESS()
; {
	.dbline 542
;  	BYTE	i,len;
; 
; 	CSN_L;
	cbi 0x18,2
	.dbline 543
;  	SPI_Char(0,W_TX_ADDRESS);
	ldi R18,34
	clr R16
	rcall _SPI_Char
	.dbline 544
; 	len = (Register[2] >> 4) & 0x07;
	lds R20,_Register+2
	swap R20
	andi R20,#0x0F
	andi R20,7
	.dbline 545
; 	for ( i=0; i<len; i++ )	{
	clr R10
	rjmp L161
L158:
	.dbline 545
	.dbline 546
; 		SPI_Char(0,tx_addr[i]);
	ldi R24,<_tx_addr
	ldi R25,>_tx_addr
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R18,z+0
	clr R16
	rcall _SPI_Char
	.dbline 547
; 	}
L159:
	.dbline 545
	inc R10
L161:
	.dbline 545
	cp R10,R20
	brlo L158
X39:
	.dbline 548
; 	CSN_H;
	sbi 0x18,2
	.dbline -2
L156:
	.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 553
; }
; 
; /////////////////////////////////////////////////////////////
; BYTE SPI_R_RX_PAYLOAD()
; {
	.dbline 556
;  	BYTE	i,len;
; 
; 	spi_rxpt = 0;
	clr R2
	sts _spi_rxpt,R2
	.dbline 557
; 	spi_handlept = 0;
	sts _spi_handlept,R2
	.dbline 558
; 	TRX_CE_L;
	cbi 0x12,6
	.dbline 560
; //	nrF905_Standby_Mode();
; 	CSN_L;
	cbi 0x18,2
	.dbline 561
;  	SPI_Char(0,R_RX_PAYLOAD);
	ldi R18,36
	clr R16
	rcall _SPI_Char
	.dbline 562
; 	len = Register[3] & 0x3f;
	lds R20,_Register+3
	andi R20,63
	rjmp L165
L164:
	.dbline 563
; 	while(DR)	{
	.dbline 564
; 		SPI_Char(1,0xff);
	ldi R18,255
	ldi R16,1
	rcall _SPI_Char
	.dbline 565
; 	}
L165:
	.dbline 563
	sbic 0x10,3
	rjmp L164
X40:
	.dbline 567
; 
; 	CSN_H;
	sbi 0x18,2
	.dbline 568
; 	return spi_handle(R_RX_PAYLOAD);
	ldi R16,36
	rcall _spi_handle
	.dbline -2
L162:
	.dbline 0 ; func end
	ld R20,y+
	ret
	.dbsym l i 1 c
	.dbsym r len 20 c
	.dbend
	.dbfunc e SendGram _SendGram fV
	.even
_SendGram::
	.dbline -1
	.dbline 599
; }
; 
; /*////////////////////////////////////////////////////////////
; void MakeFrame(BYTE cmd)
; {
; 	BYTE	i;
;  	switch(cmd)		{
; 	case CMD_ASKDATA:
; //		CallData();
; 		break;
; 	case CMD_RETDATA:
; //		ReportData();
; 		break;
; 	case CMD_DOWNPARA:
; //		SetPara();
; 		break;
; 	case CMD_RETPARA:
; //		RetPara();
; 		break;
; 	}
; 
; 	for ( i=0; i<tx_len; i++ )	uart_TxChar(tx_buf[i]);
; 
; 	for ( i=tx_len; i<16; i++ )	tx_buf[i] = 0;
; }
; 
; /////////////////////////////////////////////////////////////
; */
; //void SendGram(BYTE cmd)
; void SendGram()
; {
	.dbline 601
; // 	MakeFrame(cmd);
; 	nrF905_RX_Mode();
	rcall _nrF905_RX_Mode
L168:
	.dbline 604
; 
; //	uart_TxChar('1');
; 	while(CD)	{;}
	.dbline 604
	.dbline 604
L169:
	.dbline 604
	sbic 0x10,2
	rjmp L168
X41:
L171:
	.dbline 606
; //	uart_TxChar('2');
; 	while(AM)	{;}
	.dbline 606
	.dbline 606
L172:
	.dbline 606
	sbic 0x10,4
	rjmp L171
X42:
	.dbline 609
; //	uart_TxChar('3');
; 
; 	nrF905_TX_Mode();
	rcall _nrF905_TX_Mode
	.dbline 610
; 	SPI_W_TX_ADDRESS();
	rcall _SPI_W_TX_ADDRESS
	.dbline 611
; 	SPI_W_TX_PAYLOAD();
	rcall _SPI_W_TX_PAYLOAD
	.dbline 613
; //	uart_TxChar('4');
; 	TRX_CE_H;
	sbi 0x12,6
	.dbline 614
; 	us(20);
	ldi R16,20
	ldi R17,0
	rcall _us
	.dbline 616
; //	uart_TxChar('5');
; 	TRX_CE_L;
	cbi 0x12,6
L174:
	.dbline 617
; 	while (!DR);
L175:
	.dbline 617
	sbis 0x10,3
	rjmp L174
X43:
	.dbline 619
; 
; 	nrF905_RX_Mode();
	rcall _nrF905_RX_Mode
	.dbline -2
L167:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e handle _handle fV
;              i -> <dead>
;        startno -> R12
;            num -> R10
;            len -> R20
	.even
_handle::
	rcall push_xgset303C
	.dbline -1
	.dbline 624
; }
; 
; /////////////////////////////////////////////////////////////
; void handle(void)
; {
	.dbline 628
; 	BYTE	len,i,num,startno;
; //	WORD	id;
; //	BYTE	lpc;
; 	if ( spi_rxbuf[0] != 0xeb )		return;
	lds R24,_spi_rxbuf
	cpi R24,235
	breq L178
X44:
	.dbline 628
	rjmp L177
L178:
	.dbline 629
; 	if ( spi_rxbuf[1] != 0x90 )		return;
	lds R24,_spi_rxbuf+1
	cpi R24,144
	breq L180
X45:
	.dbline 629
	rjmp L177
L180:
	.dbline 631
; 
; 	switch(spi_rxbuf[2])	{
	lds R20,_spi_rxbuf+2
	clr R21
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L187
X46:
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L194
X47:
	cpi R20,6
	ldi R30,0
	cpc R21,R30
	breq L195
X48:
	cpi R20,7
	ldi R30,0
	cpc R21,R30
	breq L196
X49:
	rjmp L177
L187:
	.dbline 633
; 	case CMD_RETDATA:
; 		num = spi_rxbuf[5];
	lds R10,_spi_rxbuf+5
	.dbline 634
; 		startno = spi_rxbuf[6];
	lds R12,_spi_rxbuf+6
	.dbline 635
; 		if(num > 3){
	ldi R24,3
	cp R24,R10
	brsh L190
X50:
	.dbline 635
	.dbline 636
; 			if(startno == 0) len = 16;
	tst R12
	brne L192
X51:
	.dbline 636
	ldi R20,16
	rjmp L184
L192:
	.dbline 637
; 			else  len = 8+(num-startno)*2;
	mov R20,R10
	sub R20,R12
	lsl R20
	subi R20,248    ; addi 8
	.dbline 638
; 			}
	rjmp L184
L190:
	.dbline 639
; 		else  len = 8+num*2;
	mov R20,R10
	lsl R20
	subi R20,248    ; addi 8
	.dbline 640
; 		break;
	rjmp L184
L194:
	.dbline 642
; 	case CMD_RETPARA:
; 		len=14;
	ldi R20,14
	.dbline 643
; 		break;
	rjmp L184
L195:
	.dbline 646
; 
; 	case CMD_SETID_OK:
; 		 len = 6;
	ldi R20,6
	.dbline 647
; 		 break;
	rjmp L184
L196:
	.dbline 649
; 	case CMD_READID:
; 		 len = 6;
	ldi R20,6
	.dbline 650
; 		 break;
	.dbline 652
; 	default:
; 		return;
L184:
	.dbline 667
; 	}
; 
; /*	if ( GetLPC(spi_rxbuf,len) )		return;
; 
; 	switch(spi_rxbuf[2])	{
; 	case CMD_RETDATA:
; //		put_bytes(spi_rxbuf,len);
; 		break;
; 	case CMD_RETPARA:
; //		put_bytes(spi_rxbuf,len);
; 		break;
; 	}
; */
; //uart_TxChar(len);
;   put_bytes(spi_rxbuf,len);  
	mov R18,R20
	clr R19
	ldi R16,<_spi_rxbuf
	ldi R17,>_spi_rxbuf
	rcall _put_bytes
	.dbline -2
L177:
	.dbline 0 ; func end
	rjmp pop_xgset303C
	.dbsym l i 1 c
	.dbsym r startno 12 c
	.dbsym r num 10 c
	.dbsym r len 20 c
	.dbend
	.dbfunc e ReceiveGram _ReceiveGram fV
	.even
_ReceiveGram::
	.dbline -1
	.dbline 672
; }
; 
; /////////////////////////////////////////////////////////////
; void ReceiveGram()
; {
	.dbline 673
;  	if ( !DR )	return;
	sbic 0x10,3
	rjmp L198
X52:
	.dbline 673
	rjmp L197
L198:
	.dbline 676
; 
; //	SPI_R_CONFIG();
; 	SPI_R_RX_PAYLOAD();
	rcall _SPI_R_RX_PAYLOAD
	.dbline -2
L197:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e timer1_init _timer1_init fV
;          timer -> R16,R17
	.even
_timer1_init::
	.dbline -1
	.dbline 681
; }
; 
; /////////////////////////////////////////////////////////////
; void timer1_init(void)
; {
	.dbline 684
; 	WORD	timer;
; 
; 	timer=fosc/1024;
	ldi R16,7200
	ldi R17,28
	.dbline 685
; 	TCNTData=0xffff-timer;
	ldi R24,65535
	ldi R25,255
	movw R2,R24
	sub R2,R16
	sbc R3,R17
	sts _TCNTData+1,R3
	sts _TCNTData,R2
	.dbline 686
; 	TIMSK |= 0x04;
	in R24,0x39
	ori R24,4
	out 0x39,R24
	.dbline 687
; 	NOP();
	nop
	.dbline 688
; 	TCCR1B = 0x00;
	clr R2
	out 0x2e,R2
	.dbline 689
; 	TCNT1H = (TCNTData>>8)&0xff;
	lds R24,_TCNTData
	lds R25,_TCNTData+1
	mov R24,R25
	clr R25
	andi R25,0
	out 0x2d,R24
	.dbline 690
; 	TCNT1L = TCNTData&0xff;
	lds R24,_TCNTData
	lds R25,_TCNTData+1
	andi R25,0
	out 0x2c,R24
	.dbline 691
; 	OCR1AH = 0x00;
	out 0x2b,R2
	.dbline 692
; 	NOP();
	nop
	.dbline 693
; 	OCR1AL = 0x00;
	out 0x2a,R2
	.dbline 694
; 	NOP();
	nop
	.dbline 695
; 	OCR1BH = 0x00;
	out 0x29,R2
	.dbline 696
; 	NOP();
	nop
	.dbline 697
; 	OCR1BL = 0x00;
	out 0x28,R2
	.dbline 698
; 	NOP();
	nop
	.dbline 699
; 	TCCR1A = 0x00;
	out 0x2f,R2
	.dbline 700
; 	NOP();
	nop
	.dbline 701
; 	TCCR1B = 0x05;
	ldi R24,5
	out 0x2e,R24
	.dbline -2
L200:
	.dbline 0 ; func end
	ret
	.dbsym r timer 16 i
	.dbend
	.area vector(rom, abs)
	.org 16
	rjmp _timer1_ovf_isr
	.area text(rom, con, rel)
	.dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
	.dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
	.even
_timer1_ovf_isr::
	st -y,R2
	st -y,R3
	st -y,R16
	st -y,R17
	st -y,R24
	st -y,R25
	st -y,R26
	st -y,R30
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 707
; }
; 
; /////////////////////////////////////////////////////////////////////////////////
; #pragma interrupt_handler timer1_ovf_isr:iv_TIMER1_OVF
; void timer1_ovf_isr(void)
; {
	.dbline 708
; 	TCNT1H = (TCNTData>>8)&0xff;;
	lds R24,_TCNTData
	lds R25,_TCNTData+1
	mov R24,R25
	clr R25
	andi R25,0
	out 0x2d,R24
	.dbline 708
	.dbline 709
; 	NOP();
	nop
	.dbline 710
; 	TCNT1L = TCNTData&0xff;
	lds R24,_TCNTData
	lds R25,_TCNTData+1
	andi R25,0
	out 0x2c,R24
	.dbline 712
; 
; 	Count++;
	lds R24,_Count
	lds R25,_Count+1
	adiw R24,1
	sts _Count+1,R25
	sts _Count,R24
	.dbline 713
; 	if ( Count < 120 )	WDR();
	cpi R24,120
	ldi R30,0
	cpc R25,R30
	brsh L202
X53:
	.dbline 713
	wdr
L202:
	.dbline 715
; 
; 	if ( FlashFlag )	{
	lds R2,_FlashFlag
	tst R2
	breq L204
X54:
	.dbline 715
	.dbline 716
; 		if ( FlashFlag % 2 )	LED_L;
	ldi R17,2
	mov R16,R2
	rcall mod8u
	tst R16
	breq L206
X55:
	.dbline 716
	cbi 0x12,7
	rjmp L207
L206:
	.dbline 717
; 		else					LED_H;
	sbi 0x12,7
L207:
	.dbline 719
; 
; 		FlashFlag--;
	lds R24,_FlashFlag
	subi R24,1
	sts _FlashFlag,R24
	.dbline 720
; 	}
	rjmp L205
L204:
	.dbline 721
; 	else	LED_H;
	sbi 0x12,7
L205:
	.dbline 723
; 
; 	SecondCount++;
	lds R24,_SecondCount
	lds R25,_SecondCount+1
	adiw R24,1
	sts _SecondCount+1,R25
	sts _SecondCount,R24
	.dbline 724
; 	if ( SecondCount % 2 )		SendDataFlag  = 1;
	sbrs R24,0
	rjmp L208
X56:
	.dbline 724
	ldi R24,1
	sts _SendDataFlag,R24
L208:
	.dbline 726
; 
; 	if ( SecondCount >= SENDTIMER )	{
	lds R24,_SecondCount
	lds R25,_SecondCount+1
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	brlo L210
X57:
	.dbline 726
	.dbline 727
; 		SecondCount = 0;
	clr R2
	clr R3
	sts _SecondCount+1,R3
	sts _SecondCount,R2
	.dbline 729
; //		spi_txflag = 1;
; 	}
L210:
	.dbline 732
; 
; 
; 	NoDataCount++;
	lds R24,_NoDataCount
	lds R25,_NoDataCount+1
	adiw R24,1
	sts _NoDataCount+1,R25
	sts _NoDataCount,R24
	.dbline -2
L201:
	.dbline 0 ; func end
	ld R2,y+
	out 0x3f,R2
	ld R30,y+
	ld R26,y+
	ld R25,y+
	ld R24,y+
	ld R17,y+
	ld R16,y+
	ld R3,y+
	ld R2,y+
	reti
	.dbend
	.dbfunc e put_str _put_str fV
;            len -> R12,R13
;              i -> R20,R21
;            str -> R10,R11
	.even
_put_str::
	rcall push_xgset303C
	movw R10,R16
	.dbline -1
	.dbline 736
; }
; /////////////////////////////////////////////////////////////////////////////////
; void put_str(char *str)
; {
	.dbline 738
; 	int	i,len;
; 	len = strlen(str);
	movw R16,R10
	rcall _strlen
	movw R12,R16
	.dbline 739
; 	for ( i=0; i<len; i++ )
	clr R20
	clr R21
	rjmp L216
L213:
	.dbline 740
; 		uart_TxChar(str[i]);
	movw R30,R20
	add R30,R10
	adc R31,R11
	ldd R16,z+0
	rcall _uart_TxChar
L214:
	.dbline 739
	subi R20,255  ; offset = 1
	sbci R21,255
L216:
	.dbline 739
	cp R20,R12

⌨️ 快捷键说明

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