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

📄 lianjie.lst

📁 监测高压电电流
💻 LST
📖 第 1 页 / 共 5 页
字号:
     28D E001      LDI	R16,1
     28E DEA2      RCALL	_SPI_Char
     28F 9983      SBIC	0x10,3
     290 CFFB      RJMP	0x028C
(0565) 	}
(0566) 
(0567) 	CSN_H;
     291 9AC2      SBI	0x18,2
(0568) 	return spi_handle(R_RX_PAYLOAD);
     292 E204      LDI	R16,0x24
     293 DEC2      RCALL	_spi_handle
     294 9149      LD	R20,Y+
     295 9508      RET
(0569) }
(0570) 
(0571) /*////////////////////////////////////////////////////////////
(0572) void MakeFrame(BYTE cmd)
(0573) {
(0574) 	BYTE	i;
(0575)  	switch(cmd)		{
(0576) 	case CMD_ASKDATA:
(0577) //		CallData();
(0578) 		break;
(0579) 	case CMD_RETDATA:
(0580) //		ReportData();
(0581) 		break;
(0582) 	case CMD_DOWNPARA:
(0583) //		SetPara();
(0584) 		break;
(0585) 	case CMD_RETPARA:
(0586) //		RetPara();
(0587) 		break;
(0588) 	}
(0589) 
(0590) 	for ( i=0; i<tx_len; i++ )	uart_TxChar(tx_buf[i]);
(0591) 
(0592) 	for ( i=tx_len; i<16; i++ )	tx_buf[i] = 0;
(0593) }
(0594) 
(0595) /////////////////////////////////////////////////////////////
(0596) */
(0597) //void SendGram(BYTE cmd)
(0598) void SendGram()
(0599) {
(0600) // 	MakeFrame(cmd);
(0601) 	nrF905_RX_Mode();
_SendGram:
     296 DEB8      RCALL	_nrF905_RX_Mode
(0602) 
(0603) //	uart_TxChar('1');
(0604) 	while(CD)	{;}
     297 9982      SBIC	0x10,2
     298 CFFE      RJMP	0x0297
(0605) //	uart_TxChar('2');
(0606) 	while(AM)	{;}
     299 9984      SBIC	0x10,4
     29A CFFE      RJMP	0x0299
(0607) //	uart_TxChar('3');
(0608) 
(0609) 	nrF905_TX_Mode();
     29B DEAF      RCALL	_nrF905_TX_Mode
(0610) 	SPI_W_TX_ADDRESS();
     29C DFC3      RCALL	_SPI_W_TX_ADDRESS
(0611) 	SPI_W_TX_PAYLOAD();
     29D DF8A      RCALL	_SPI_W_TX_PAYLOAD
(0612) //	uart_TxChar('4');
(0613) 	TRX_CE_H;
     29E 9A96      SBI	0x12,6
(0614) 	us(20);
     29F E104      LDI	R16,0x14
     2A0 E010      LDI	R17,0
     2A1 DE19      RCALL	_us
(0615) //	uart_TxChar('5');
(0616) 	TRX_CE_L;
     2A2 9896      CBI	0x12,6
(0617) 	while (!DR);
     2A3 9B83      SBIS	0x10,3
     2A4 CFFE      RJMP	0x02A3
(0618) 
(0619) 	nrF905_RX_Mode();
     2A5 DEA9      RCALL	_nrF905_RX_Mode
     2A6 9508      RET
_handle:
  i                    --> Y,+1
  startno              --> R12
  num                  --> R10
  len                  --> R20
     2A7 D2B8      RCALL	push_xgset303C
(0620) }
(0621) 
(0622) /////////////////////////////////////////////////////////////
(0623) void handle(void)
(0624) {
(0625) 	BYTE	len,i,num,startno;
(0626) //	WORD	id;
(0627) //	BYTE	lpc;
(0628) 	if ( spi_rxbuf[0] != 0xeb )		return;
     2A8 9180 0071 LDS	R24,spi_rxbuf
     2AA 3E8B      CPI	R24,0xEB
     2AB F009      BEQ	0x02AD
     2AC C037      RJMP	0x02E4
(0629) 	if ( spi_rxbuf[1] != 0x90 )		return;
     2AD 9180 0072 LDS	R24,spi_rxbuf+1
     2AF 3980      CPI	R24,0x90
     2B0 F009      BEQ	0x02B2
     2B1 C032      RJMP	0x02E4
(0630) 
(0631) 	switch(spi_rxbuf[2])	{
     2B2 9140 0073 LDS	R20,spi_rxbuf+2
     2B4 2755      CLR	R21
     2B5 3041      CPI	R20,1
     2B6 E0E0      LDI	R30,0
     2B7 075E      CPC	R21,R30
     2B8 F069      BEQ	0x02C6
     2B9 3043      CPI	R20,3
     2BA E0E0      LDI	R30,0
     2BB 075E      CPC	R21,R30
     2BC F0E9      BEQ	0x02DA
     2BD 3046      CPI	R20,6
     2BE E0E0      LDI	R30,0
     2BF 075E      CPC	R21,R30
     2C0 F0D9      BEQ	0x02DC
     2C1 3047      CPI	R20,7
     2C2 E0E0      LDI	R30,0
     2C3 075E      CPC	R21,R30
     2C4 F0C9      BEQ	0x02DE
     2C5 C01E      RJMP	0x02E4
(0632) 	case CMD_RETDATA:
(0633) 		num = spi_rxbuf[5];
     2C6 90A0 0076 LDS	R10,0x0076
(0634) 		startno = spi_rxbuf[6];
     2C8 90C0 0077 LDS	R12,0x0077
(0635) 		if(num > 3){
     2CA E083      LDI	R24,3
     2CB 158A      CP	R24,R10
     2CC F448      BCC	0x02D6
(0636) 			if(startno == 0) len = 16;
     2CD 20CC      TST	R12
     2CE F411      BNE	0x02D1
     2CF E140      LDI	R20,0x10
     2D0 C00E      RJMP	0x02DF
(0637) 			else  len = 8+(num-startno)*2;
     2D1 2D4A      MOV	R20,R10
     2D2 194C      SUB	R20,R12
     2D3 0F44      LSL	R20
     2D4 5F48      SUBI	R20,0xF8
(0638) 			}
     2D5 C009      RJMP	0x02DF
(0639) 		else  len = 8+num*2;
     2D6 2D4A      MOV	R20,R10
     2D7 0F44      LSL	R20
     2D8 5F48      SUBI	R20,0xF8
(0640) 		break;
     2D9 C005      RJMP	0x02DF
(0641) 	case CMD_RETPARA:
(0642) 		len=14;
     2DA E04E      LDI	R20,0xE
(0643) 		break;
     2DB C003      RJMP	0x02DF
(0644) 
(0645) 	case CMD_SETID_OK:
(0646) 		 len = 6;
     2DC E046      LDI	R20,6
(0647) 		 break;
     2DD C001      RJMP	0x02DF
(0648) 	case CMD_READID:
(0649) 		 len = 6;
     2DE E046      LDI	R20,6
(0650) 		 break;
(0651) 	default:
(0652) 		return;
(0653) 	}
(0654) 
(0655) /*	if ( GetLPC(spi_rxbuf,len) )		return;
(0656) 
(0657) 	switch(spi_rxbuf[2])	{
(0658) 	case CMD_RETDATA:
(0659) //		put_bytes(spi_rxbuf,len);
(0660) 		break;
(0661) 	case CMD_RETPARA:
(0662) //		put_bytes(spi_rxbuf,len);
(0663) 		break;
(0664) 	}
(0665) */
(0666) //uart_TxChar(len);
(0667)   put_bytes(spi_rxbuf,len);  
     2DF 2F24      MOV	R18,R20
     2E0 2733      CLR	R19
     2E1 E701      LDI	R16,0x71
     2E2 E010      LDI	R17,0
     2E3 DE17      RCALL	_put_bytes
     2E4 C282      RJMP	pop_xgset303C
(0668) }
(0669) 
(0670) /////////////////////////////////////////////////////////////
(0671) void ReceiveGram()
(0672) {
(0673)  	if ( !DR )	return;
_ReceiveGram:
     2E5 9983      SBIC	0x10,3
     2E6 C001      RJMP	0x02E8
     2E7 C001      RJMP	0x02E9
(0674) 
(0675) //	SPI_R_CONFIG();
(0676) 	SPI_R_RX_PAYLOAD();
     2E8 DF94      RCALL	_SPI_R_RX_PAYLOAD
     2E9 9508      RET
(0677) }
(0678) 
(0679) /////////////////////////////////////////////////////////////
(0680) void timer1_init(void)
(0681) {
(0682) 	WORD	timer;
(0683) 
(0684) 	timer=fosc/1024;
_timer1_init:
  timer                --> R16
     2EA E200      LDI	R16,0x20
     2EB E11C      LDI	R17,0x1C
(0685) 	TCNTData=0xffff-timer;
     2EC EF8F      LDI	R24,0xFF
     2ED EF9F      LDI	R25,0xFF
     2EE 011C      MOVW	R2,R24
     2EF 1A20      SUB	R2,R16
     2F0 0A31      SBC	R3,R17
     2F1 9230 006E STS	TCNTData+1,R3
     2F3 9220 006D STS	TCNTData,R2
(0686) 	TIMSK |= 0x04;
     2F5 B789      IN	R24,0x39
     2F6 6084      ORI	R24,4
     2F7 BF89      OUT	0x39,R24
(0687) 	NOP();
     2F8 0000      NOP
(0688) 	TCCR1B = 0x00;
     2F9 2422      CLR	R2
     2FA BC2E      OUT	0x2E,R2
(0689) 	TCNT1H = (TCNTData>>8)&0xff;
     2FB 9180 006D LDS	R24,TCNTData
     2FD 9190 006E LDS	R25,TCNTData+1
     2FF 2F89      MOV	R24,R25
     300 2799      CLR	R25
     301 7090      ANDI	R25,0
     302 BD8D      OUT	0x2D,R24
(0690) 	TCNT1L = TCNTData&0xff;
     303 9180 006D LDS	R24,TCNTData
     305 9190 006E LDS	R25,TCNTData+1
     307 7090      ANDI	R25,0
     308 BD8C      OUT	0x2C,R24
(0691) 	OCR1AH = 0x00;
     309 BC2B      OUT	0x2B,R2
(0692) 	NOP();
     30A 0000      NOP
(0693) 	OCR1AL = 0x00;
     30B BC2A      OUT	0x2A,R2
(0694) 	NOP();
     30C 0000      NOP
(0695) 	OCR1BH = 0x00;
     30D BC29      OUT	0x29,R2
(0696) 	NOP();
     30E 0000      NOP
(0697) 	OCR1BL = 0x00;
     30F BC28      OUT	0x28,R2
(0698) 	NOP();
     310 0000      NOP
(0699) 	TCCR1A = 0x00;
     311 BC2F      OUT	0x2F,R2
(0700) 	NOP();
     312 0000      NOP
(0701) 	TCCR1B = 0x05;
     313 E085      LDI	R24,5
     314 BD8E      OUT	0x2E,R24
     315 9508      RET
_timer1_ovf_isr:
     316 922A      ST	R2,-Y
     317 923A      ST	R3,-Y
     318 930A      ST	R16,-Y
     319 931A      ST	R17,-Y
     31A 938A      ST	R24,-Y
     31B 939A      ST	R25,-Y
     31C 93AA      ST	R26,-Y
     31D 93EA      ST	R30,-Y
     31E B62F      IN	R2,0x3F
     31F 922A      ST	R2,-Y
(0702) }
(0703) 
(0704) /////////////////////////////////////////////////////////////////////////////////
(0705) #pragma interrupt_handler timer1_ovf_isr:iv_TIMER1_OVF
(0706) void timer1_ovf_isr(void)
(0707) {
(0708) 	TCNT1H = (TCNTData>>8)&0xff;;
     320 9180 006D LDS	R24,TCNTData
     322 9190 006E LDS	R25,TCNTData+1
     324 2F89      MOV	R24,R25
     325 2799      CLR	R25
     326 7090      ANDI	R25,0
     327 BD8D      OUT	0x2D,R24
(0709) 	NOP();
     328 0000      NOP
(0710) 	TCNT1L = TCNTData&0xff;
     329 9180 006D LDS	R24,TCNTData
     32B 9190 006E LDS	R25,TCNTData+1
     32D 7090      ANDI	R25,0
     32E BD8C      OUT	0x2C,R24
(0711) 
(0712) 	Count++;
     32F 9180 0063 LDS	R24,Count
     331 9190 0064 LDS	R25,Count+1
     333 9601      ADIW	R24,1
     334 9390 0064 STS	Count+1,R25
     336 9380 0063 STS	Count,R24
(0713) 	if ( Count < 120 )	WDR();
     338 3788      CPI	R24,0x78
     339 E0E0      LDI	R30,0
     33A 079E      CPC	R25,R30
     33B F408      BCC	0x033D
     33C 95A8      WDR
(0714) 
(0715) 	if ( FlashFlag )	{
     33D 9020 006C LDS	R2,FlashFlag
     33F 2022      TST	R2
     340 F071      BEQ	0x034F
(0716) 		if ( FlashFlag % 2 )	LED_L;
     341 E012      LDI	R17,2
     342 2D02      MOV	R16,R2
     343 D1D2      RCALL	mod8u
     344 2300      TST	R16
     345 F011      BEQ	0x0348
     346 9897      CBI	0x12,7
     347 C001      RJMP	0x0349
(0717) 		else					LED_H;
     348 9A97      SBI	0x12,7
(0718) 
(0719) 		FlashFlag--;
     349 9180 006C LDS	R24,FlashFlag
     34B 5081      SUBI	R24,1
     34C 9380 006C STS	FlashFlag,R24
(0720) 	}
     34E C001      RJMP	0x0350
(0721) 	else	LED_H;
     34F 9A97      SBI	0x12,7
(0722) 
(0723) 	SecondCount++;
     350 9180 0061 LDS	R24,SecondCount
     352 9190 0062 LDS	R25,SecondCount+1
     354 9601      ADIW	R24,1
     355 9390 0062 STS	SecondCount+1,R25
     357 9380 0061 STS	SecondCount,R24
(0724) 	if ( SecondCount % 2 )		SendDataFlag  = 1;
     359 FF80      SBRS	R24,0
     35A C003      RJMP	0x035E
     35B E081      LDI	R24,1
     35C 9380 006B STS	SendDataFlag,R24
(0725) 
(0726) 	if ( SecondCount >= SENDTIMER )	{
     35E 9180 0061 LDS	R24,SecondCount
     360 9190 0062 LDS	R25,SecondCount+1
     362 3083      CPI	R24,3
     363 E0E0      LDI	R30,0
     364 079E      CPC	R25,R30
     365 F030      BCS	0x036C
(0727) 		SecondCount = 0;
     366 2422      CLR	R2
     367 2433      CLR	R3
     368 9230 0062 STS	SecondCount+1,R3
     36A 9220 0061 STS	SecondCount,R2
(0728) //		spi_txflag = 1;
(0729) 	}
(0730) 
(0731) 
(0732) 	NoDataCount++;
     36C 9180 0069 LDS	R24,NoDataCount
     36E 9190 006A LDS	R25,NoDataCount+1
     370 9601      ADIW	R24,1
     371 9390 006A STS	NoDataCount+1,R25
     373 9380 0069 STS	NoDataCount,R24
     375 9029      LD	R2,Y+
     376 BE2F      OUT	0x3F,R2
     377 91E9      LD	R30,Y+
     378 91A9      LD	R26,Y+
     379 9199      LD	R25,Y+
     37A 9189      LD	R24,Y+
     37B 9119      LD	R17,Y+
     37C 9109      LD	R16,Y+
     37D 9039      LD	R3,Y+
     37E 9029      LD	R2,Y+
     37F 9518      RETI
_put_str:
  len                  --> R12
  i                    --> R20
  str                  --> R10
     380 D1DF      RCALL	push_xgset303C
     381 0158      MOVW	R10,R16
(0733) }
(0734) /////////////////////////////////////////////////////////////////////////////////
(0735) void put_str(char *str)
(0736) {
(0737) 	int	i,len;
(0738) 	len = strlen(str);
     382 0185      MOVW	R16,R10
     383 D186      RCALL	_strlen
     384 0168      MOVW	R12,R16
(0739) 	for ( i=0; i<len; i++ )
     385 2744      CLR	R20
     386 2755      CLR	R21
     387 C007      RJMP	0x038F
(0740) 		uart_TxChar(str[i]);
     388 01FA      MOVW	R30,R20
     389 0DEA      ADD	R30,R10
     38A 1DFB      ADC	R31,R11
     38B 8100      LDD	R16,Z+0
     38C DD6A      RCALL	_uart_TxChar
     38D 5F4F      SUBI	R20,0xFF
     38E 4F5F      SBCI	R21,0xFF
     38F 154C      CP	R20,R12
     390 055D      CPC	R21,R13
     391 F3B4      BLT	0x0388
     392 C1D4      RJMP	pop_xgset303C

⌨️ 快捷键说明

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