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

📄 nrf905_jinju.s

📁 监测高压电电流
💻 S
📖 第 1 页 / 共 4 页
字号:
	cpc R21,R13
	brlt L213
X58:
	.dbline -2
L212:
	.dbline 0 ; func end
	rjmp pop_xgset303C
	.dbsym r len 12 I
	.dbsym r i 20 I
	.dbsym r str 10 pc
	.dbend
	.dbfunc e put_str_CRLF _put_str_CRLF fV
;            str -> R10,R11
	.even
_put_str_CRLF::
	st -y,R10
	st -y,R11
	movw R10,R16
	.dbline -1
	.dbline 745
; }
; 
; /////////////////////////////////////////////////////////////////////////////////
; void put_str_CRLF(char *str)
; {
	.dbline 746
; 	put_str(str);
	movw R16,R10
	rcall _put_str
	.dbline 747
; 	uart_TxChar(0x0d);
	ldi R16,13
	rcall _uart_TxChar
	.dbline 748
; 	uart_TxChar(0x0a);
	ldi R16,10
	rcall _uart_TxChar
	.dbline -2
L217:
	.dbline 0 ; func end
	ld R11,y+
	ld R10,y+
	ret
	.dbsym r str 10 pc
	.dbend
	.dbfunc e wdt_init _wdt_init fV
	.even
_wdt_init::
	.dbline -1
	.dbline 753
; }
; 
; /////////////////////////////////////////////////////////////////////////////////
; void wdt_init(void)
; {
	.dbline 754
; 	WDR();//喂狗
	wdr
	.dbline 755
; 	WDTCR|=(BIT(WDCE)|BIT(WDE));
	in R24,0x21
	ori R24,24
	out 0x21,R24
	.dbline 756
; 	WDTCR=BIT(WDP2)|BIT(WDP1)|BIT(WDP0)|BIT(WDE);
	ldi R24,15
	out 0x21,R24
	.dbline -2
L218:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 22
	rjmp _uart_Rx_isr
	.area text(rom, con, rel)
	.dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
	.dbfunc e uart_Rx_isr _uart_Rx_isr fV
	.even
_uart_Rx_isr::
	st -y,R2
	st -y,R24
	st -y,R25
	st -y,R30
	st -y,R31
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 762
; }
; /////////////////////////////////////////////////////////////////////////////////
; //uart完成中断
; #pragma interrupt_handler uart_Rx_isr:iv_USART_RXC
; void uart_Rx_isr(void)
; {
	.dbline 763
; 	rxbuf[rxpt] = UDR;
	ldi R24,<_rxbuf
	ldi R25,>_rxbuf
	lds R30,_rxpt
	clr R31
	add R30,R24
	adc R31,R25
	in R2,0xc
	std z+0,R2
	.dbline 765
; //	uart_TxChar(rxbuf[rxpt]);
; 	rxpt++;
	lds R24,_rxpt
	subi R24,255    ; addi 1
	sts _rxpt,R24
	.dbline 766
; 	rxpt &= RXBUF_LEN1;
	andi R24,31
	sts _rxpt,R24
	.dbline -2
L219:
	.dbline 0 ; func end
	ld R2,y+
	out 0x3f,R2
	ld R31,y+
	ld R30,y+
	ld R25,y+
	ld R24,y+
	ld R2,y+
	reti
	.dbend
	.dbfunc e Spi_InitRegister _Spi_InitRegister fV
	.even
_Spi_InitRegister::
	.dbline -1
	.dbline 772
; 
; }
; 
; /////////////////////////////////////////////////////////////////////////////////
; void Spi_InitRegister(void)
; {
	.dbline 775
; //	Register[0] = 0x6c;									// 433.2MHZ
; //	Register[1] = 0x0c;									//不重发,正常模式,输出+10dBm,433M频段
; 	Register[0] = CH_NO_BYTE;							// 433.2MHZ
	ldi R24,76
	sts _Register,R24
	.dbline 776
; 	Register[1] = PA_PWR_10dBm | HFREQ_PLL_433MHz;		//不重发,正常模式,输出+10dBm,433M频段
	ldi R24,12
	sts _Register+1,R24
	.dbline 777
; 	Register[2] = 0x44;									//TX、RX地址宽度为4
	ldi R24,68
	sts _Register+2,R24
	.dbline 778
; 	Register[3] = 0x10;									//收为16个有效数据
	ldi R24,16
	sts _Register+3,R24
	.dbline 779
; 	Register[4] = 0x10;									//发为16个有效数据
	sts _Register+4,R24
	.dbline 780
; 	Register[5] = ADDR_1;									//本机收地址
	ldi R24,71
	sts _Register+5,R24
	.dbline 781
; 	Register[6] = ADDR_2;
	ldi R24,87
	sts _Register+6,R24
	.dbline 782
; 	Register[7] = ADDR_3;
	ldi R24,90
	sts _Register+7,R24
	.dbline 783
; 	Register[8] = ADDR_4;
	ldi R24,68
	sts _Register+8,R24
	.dbline 784
; 	Register[9] = 0xD8;   //CRC校验16位,16M晶振
	ldi R24,216
	sts _Register+9,R24
	.dbline 786
; 
; 	tx_addr[0] = ADDR_1;
	ldi R24,71
	sts _tx_addr,R24
	.dbline 787
; 	tx_addr[1] = ADDR_2;
	ldi R24,87
	sts _tx_addr+1,R24
	.dbline 788
; 	tx_addr[2] = ADDR_3;
	ldi R24,90
	sts _tx_addr+2,R24
	.dbline 789
; 	tx_addr[3] = ADDR_4;
	ldi R24,68
	sts _tx_addr+3,R24
	.dbline 791
; 
; 	TxFlag[0] = 0;
	clr R2
	sts _TxFlag,R2
	.dbline 792
; 	TxFlag[1] = 0;
	sts _TxFlag+1,R2
	.dbline 793
; 	TxFlag[2] = 0;
	sts _TxFlag+2,R2
	.dbline 794
; 	TxFlag[3] = 0;
	sts _TxFlag+3,R2
	.dbline 795
; 	TxFlag[4] = 0;
	sts _TxFlag+4,R2
	.dbline 796
; 	TxFlag[5] = 0;
	sts _TxFlag+5,R2
	.dbline -2
L220:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e InitSPI _InitSPI fV
	.even
_InitSPI::
	.dbline -1
	.dbline 801
; }
; 
; /////////////////////////////////////////////////////////////
; void InitSPI(void)
; {
	.dbline 802
; 	Spi_InitRegister();
	rcall _Spi_InitRegister
	.dbline 803
; 	SPI_MasterInit();
	rcall _SPI_MasterInit
	.dbline 804
; 	SPI_W_CONFIG();
	rcall _SPI_W_CONFIG
	.dbline -2
L238:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e uart_handle _uart_handle fV
;            lpc -> R22
;            cmd -> R12
;            len -> R10,R11
;           len1 -> R20,R21
;              i -> R22,R23
	.even
_uart_handle::
	rcall push_xgsetF03C
	.dbline -1
	.dbline 808
; }
; /////////////////////////////////////////////////////////////
; void uart_handle(void)
; {
	.dbline 810
; 	int		len,len1,i;
; 	BYTE	cmd,lpc=0xff;
	ldi R22,255
	.dbline 812
; 
; 	if ( handlept == rxpt )		return;
	lds R2,_rxpt
	lds R3,_handlept
	cp R3,R2
	brne L240
X59:
	.dbline 812
	rjmp L239
L240:
	.dbline 813
; 	len = (rxpt - handlept) & RXBUF_LEN1;
	lds R2,_handlept
	clr R3
	lds R24,_rxpt
	clr R25
	sub R24,R2
	sbc R25,R3
	andi R24,31
	andi R25,0
	movw R10,R24
	.dbline 815
; 
; 	if ( len < 4 )	return;
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	brge L242
X60:
	.dbline 815
	rjmp L239
L242:
	.dbline 817
; 	
; 	for ( i=0; i<len; i++ )	buf[i] = rxbuf[(handlept+i) & RXBUF_LEN1];
	clr R22
	clr R23
	rjmp L247
L244:
	.dbline 817
	lds R30,_handlept
	clr R31
	add R30,R22
	adc R31,R23
	andi R30,31
	andi R31,0
	ldi R24,<_rxbuf
	ldi R25,>_rxbuf
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,<_buf
	ldi R25,>_buf
	movw R30,R22
	add R30,R24
	adc R31,R25
	std z+0,R2
L245:
	.dbline 817
	subi R22,255  ; offset = 1
	sbci R23,255
L247:
	.dbline 817
	cp R22,R10
	cpc R23,R11
	brlt L244
X61:
	.dbline 821
; 
; 	                            
; 	
; 	if ( buf[0] != 0xeb ) {
	lds R24,_buf
	cpi R24,235
	breq L248
X62:
	.dbline 821
	.dbline 822
; 		handlept = (handlept + 1) & RXBUF_LEN1;
	lds R24,_handlept
	subi R24,255    ; addi 1
	andi R24,31
	sts _handlept,R24
	.dbline 823
; 		return;
	rjmp L239
L248:
	.dbline 826
; 	}
; 	
; 	if ( buf[1] != 0x90 ) {
	lds R24,_buf+1
	cpi R24,144
	breq L250
X63:
	.dbline 826
	.dbline 827
; 		handlept = (handlept + 2) & RXBUF_LEN1;
	lds R24,_handlept
	subi R24,254    ; addi 2
	andi R24,31
	sts _handlept,R24
	.dbline 828
; 		return;
	rjmp L239
L250:
	.dbline 831
; 	}
; 
; 	cmd = buf[2];
	lds R12,_buf+2
	.dbline 832
; 	if ( (cmd != CMD_ASKDATA)&&(cmd != CMD_DOWNPARA)&&(cmd != CMD_SETID)&&(cmd != CMD_READID) ) {
	tst R12
	breq L254
X64:
	mov R24,R12
	cpi R24,2
	breq L254
X65:
	cpi R24,5
	breq L254
X66:
	cpi R24,7
	breq L254
X67:
	.dbline 832
	.dbline 833
; 		handlept = (handlept + 3) & RXBUF_LEN1;
	lds R24,_handlept
	subi R24,253    ; addi 3
	andi R24,31
	sts _handlept,R24
	.dbline 834
; 		return;
	rjmp L239
L254:
	.dbline 837
; 	}
; 
; 	switch(cmd)	 {
	clr R13
	tst R12
	brne X68
	tst R13
	breq L259
X68:
	movw R24,R12
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	breq L260
X69:
	cpi R24,5
	ldi R30,0
	cpc R25,R30
	breq L261
X70:
	cpi R24,7
	ldi R30,0
	cpc R25,R30
	breq L262
X71:
	rjmp L256
L259:
	.dbline 839
; 	case CMD_ASKDATA:
; 		len1 = 7;
	ldi R20,7
	ldi R21,0
	.dbline 840
; 		break;
	rjmp L257
L260:
	.dbline 842
; 	case CMD_DOWNPARA:
; 		len1 = 14;
	ldi R20,14
	ldi R21,0
	.dbline 843
; 		break;
	rjmp L257
L261:
	.dbline 845
; 	case CMD_SETID:
; 		len1 = 6;
	ldi R20,6
	ldi R21,0
	.dbline 846
; 		break;
	rjmp L257
L262:
	.dbline 848
; 	case CMD_READID:
; 		len1 = 4;
	ldi R20,4
	ldi R21,0
	.dbline 849
; 		break;
L256:
L257:
	.dbline 852
; 	}
; 
; 	if ( len < len1 ) 	return;
	cp R10,R20
	cpc R11,R21
	brge L263
X72:
	.dbline 852
	rjmp L239
L263:
	.dbline 860
; /*
; 	lpc = GetLPC(buf,len1);
; 	if ( lpc )	{
; 		handlept = (handlept + len1) & RXBUF_LEN1;
; 		return;
; 	}
; */
;    	for ( i=0; i<len1;i++ )
	clr R22
	clr R23
	rjmp L268
L265:
	.dbline 861
; 		tx_buf[i] = rxbuf[(handlept+i) & RXBUF_LEN1];
	lds R30,_handlept
	clr R31
	add R30,R22
	adc R31,R23
	andi R30,31
	andi R31,0
	ldi R24,<_rxbuf
	ldi R25,>_rxbuf
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,<_tx_buf
	ldi R25,>_tx_buf
	movw R30,R22
	add R30,R24
	adc R31,R25
	std z+0,R2
L266:
	.dbline 860
	subi R22,255  ; offset = 1
	sbci R23,255
L268:
	.dbline 860
	cp R22,R20
	cpc R23,R21
	brlt L265
X73:
	.dbline 863
; 
; 	tx_len = len1;
	sts _tx_len,R20
	.dbline 864
; 	for ( i=tx_len; i<16; i++ )	tx_buf[i] = 0;
	mov R22,R20
	clr R23
	rjmp L272
L269:
	.dbline 864
	ldi R24,<_tx_buf
	ldi R25,>_tx_buf
	movw R30,R22
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
L270:
	.dbline 864
	subi R22,255  ; offset = 1
	sbci R23,255
L272:
	.dbline 864
	cpi R22,16
	ldi R30,0
	cpc R23,R30
	brlt L269
X74:
	.dbline 868
; 
; //	put_bytes(tx_buf,len1);
; 
; 	SendGram();
	rcall _SendGram
	.dbline 869
; 	handlept = (handlept + len1) & RXBUF_LEN1;
	lds R24,_handlept
	clr R25
	add R24,R20
	adc R25,R21
	andi R24,31
	andi R25,0
	sts _handlept,R24
	.dbline -2
L239:
	.dbline 0 ; func end
	rjmp pop_xgsetF03C
	.dbsym r lpc 22 c
	.dbsym r cmd 12 c
	.dbsym r len 10 I
	.dbsym r len1 20 I
	.dbsym r i 22 I
	.dbend
	.dbfunc e SendData _SendData fV
	.even
_SendData::
	.dbline -1
	.dbline 874
; }
; 
; /////////////////////////////////////////////////////////////
; void SendData()
; {
	.dbline 875
;  	 tx_buf[0] = 0xeb;
	ldi R24,235
	sts _tx_buf,R24
	.dbline 876
;  	 tx_buf[1] = 0x90;
	ldi R24,144
	sts _tx_buf+1,R24
	.dbline 877
;  	 tx_buf[2] = 0x02;
	ldi R24,2
	sts _tx_buf+2,R24
	.dbline 878
;  	 tx_buf[3] = 0x00;
	clr R2
	sts _tx_buf+3,R2
	.dbline 879
;  	 tx_buf[4] = 0x00;
	sts _tx_buf+4,R2
	.dbline 880
;  	 tx_buf[5] = 0x08;
	ldi R24,8
	sts _tx_buf+5,R24
	.dbline 881
;  	 tx_buf[6] = 0x00;
	sts _tx_buf+6,R2
	.dbline 882
;  	 tx_buf[7] = 0x0c;
	ldi R24,12
	sts _tx_buf+7,R24
	.dbline 883
;  	 tx_buf[8] = 0x02;
	ldi R24,2
	sts _tx_buf+8,R24
	.dbline 884
;  	 tx_buf[9] = 0x0b;
	ldi R24,11
	sts _tx_buf+9,R24
	.dbline 885
;  	 tx_buf[10] = 0x02;
	ldi R24,2
	sts _tx_buf+10,R24
	.dbline 886
;  	 tx_buf[11] = 0x0b;
	ldi R24,11
	sts _tx_buf+11,R24
	.dbline 887
;  	 tx_buf[12] = 0x02;
	ldi R24,2
	sts _tx_buf+12,R24
	.dbline 888
;  	 tx_buf[13] = 0x87;
	ldi R24,135
	sts _tx_buf+13,R24
	.dbline 889
; 	 tx_len = 14;
	ldi R24,14
	sts _tx_len,R24
	.dbline -2
L273:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
;          portb -> <dead>
;              i -> <dead>
;          count -> R10,R11
	.even
_main::
	.dbline -1
	.dbline 893
; }
; /////////////////////////////////////////////////////////////
; void main(void)
; {
	.dbline 894
; 	int		count=0,i;
	clr R10
	clr R11
	.dbline 899
; 	BYTE	portb;
; 
; //	wdt_init();
; 
; 	spi_rxpt = 0;
	clr R2
	sts _spi_rxpt,R2
	.dbline 900
; 	spi_handlept = spi_rxpt;
	sts _spi_handlept,R2
	.dbline 902
; 
; 	uart_init();
	rcall _uart_init
	.dbline 903
; 	timer1_init();
	rcall _timer1_init
	.dbline 905
; 
; 	InitSPI();
	rcall _InitSPI
	.dbline 906
; 	SEI();//开中断
	sei
	.dbline 907
; 	Mode = 0;
	clr R2
	sts _Mode,R2
	rjmp L289
L288:
	.dbline 910
; 
; //	uart_TxChar('0');
; 	while(1)	{
	.dbline 912
; //		uart_TxChar('1');
; 		Count = 0;
	clr R2
	clr R3
	sts _Count+1,R3
	sts _Count,R2
	.dbline 913
; 		ReceiveGram();
	rcall _ReceiveGram
	.dbline 915
; 
; 		if ( NoDataCount > NODATALIMIT )	{
	ldi R24,1000
	ldi R25,3
	lds R2,_NoDataCount
	lds R3,_NoDataCount+1
	cp R24,R2
	cpc R25,R3
	brsh L291
X75:
	.dbline 915
	.dbline 916
; 			NoDataCount = 0;
	clr R2
	clr R3
	sts _NoDataCount+1,R3
	sts _NoDataCount,R2
	.dbline 917
; 			InitSPI();
	rcall _InitSPI
	.dbline 919
; //			put_str_CRLF("Reset");
; 		}
L291:
	.dbline 921
; 
; 		uart_handle();
	rcall _uart_handle
	.dbline 922
; /*		if ( Mode )	{
L289:
	.dbline 910
	rjmp L288
X76:
	.dbline -2
L287:
	.dbline 0 ; func end
	ret
	.dbsym l portb 1 c
	.dbsym l i 1 I
	.dbsym r count 10 I
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
_temperature::
	.blkb 2
	.dbsym e temperature _temperature i
_NoDataCount::
	.blkb 2
	.dbsym e NoDataCount _NoDataCount i
_SendDataFlag::
	.blkb 1
	.dbsym e SendDataFlag _SendDataFlag c
_FlashFlag::
	.blkb 1
	.dbsym e FlashFlag _FlashFlag c
_TCNTData::
	.blkb 2
	.dbsym e TCNTData _TCNTData i
_spi_handlept:
	.blkb 1
	.dbsym s spi_handlept _spi_handlept c
_spi_rxpt:
	.blkb 1
	.dbsym s spi_rxpt _spi_rxpt c
_spi_rxbuf:
	.blkb 16
	.dbsym s spi_rxbuf _spi_rxbuf A[16:16]c
_tx_len:
	.blkb 1
	.dbsym s tx_len _tx_len c
_buf:
	.blkb 32
	.dbsym s buf _buf A[32:32]c
_tx_buf:
	.blkb 32
	.dbsym s tx_buf _tx_buf A[32:32]c
_tx_addr:
	.blkb 4
	.dbsym s tx_addr _tx_addr A[4:4]c
_handlept:
	.blkb 1
	.dbsym s handlept _handlept c
_rxpt:
	.blkb 1
	.dbsym s rxpt _rxpt c
_rxbuf:
	.blkb 32
	.dbsym s rxbuf _rxbuf A[32:32]c
_Register::
	.blkb 10
	.dbsym e Register _Register A[10:10]c
_SPI_Received::
	.blkb 1
	.dbsym e SPI_Received _SPI_Received c
_num::
	.blkb 1
	.dbsym e num _num c
_ID::
	.blkb 2
	.dbsym e ID _ID i
_Mode::
	.blkb 1
	.dbsym e Mode _Mode c
_TxFlag::
	.blkb 6
	.dbsym e TxFlag _TxFlag A[6:6]c
; 			if ( SendDataFlag )	{
; 				SendDataFlag = 0;
; 				SendData();
; 				put_bytes(tx_buf,tx_len);
; //				SendGram(CMD_CALLDATA);
; 			}
; 		}
; */	}
; }

⌨️ 快捷键说明

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