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

📄 lianjie.lst

📁 监测高压电电流
💻 LST
📖 第 1 页 / 共 5 页
字号:
      9A 5F4F      SUBI	R20,0xFF
      9B 4F5F      SBCI	R21,0xFF
      9C 1740      CP	R20,R16
      9D 0751      CPC	R21,R17
      9E F350      BCS	0x0089
      9F C4AD      RJMP	pop_xgsetF000
_ms:
  i                    --> R20
  j                    --> R22
  n                    --> R16
      A0 D4A7      RCALL	push_xgsetF000
(0264) }
(0265) 
(0266) void ms(WORD n)
(0267) {	//延时n毫秒
(0268) 	WORD i,j;
(0269) 
(0270) 	for(i=0; i<n; i++)
      A1 2744      CLR	R20
      A2 2755      CLR	R21
      A3 C013      RJMP	0x00B7
(0271) 		for(j=0; j<MS_COUNT;j++);
      A4 2766      CLR	R22
      A5 2777      CLR	R23
      A6 C002      RJMP	0x00A9
      A7 5F6F      SUBI	R22,0xFF
      A8 4F7F      SBCI	R23,0xFF
      A9 EB81      LDI	R24,0xB1
      AA E091      LDI	R25,1
      AB E0A0      LDI	R26,0
      AC E0B0      LDI	R27,0
      AD 011B      MOVW	R2,R22
      AE 2444      CLR	R4
      AF 2455      CLR	R5
      B0 1628      CP	R2,R24
      B1 0639      CPC	R3,R25
      B2 064A      CPC	R4,R26
      B3 065B      CPC	R5,R27
      B4 F394      BLT	0x00A7
      B5 5F4F      SUBI	R20,0xFF
      B6 4F5F      SBCI	R21,0xFF
      B7 1740      CP	R20,R16
      B8 0751      CPC	R21,R17
      B9 F350      BCS	0x00A4
      BA C492      RJMP	pop_xgsetF000
_us:
  i                    --> R20
  j                    --> R22
  n                    --> R16
      BB D48C      RCALL	push_xgsetF000
(0272) }
(0273) 
(0274) void us(WORD n)
(0275) {	//延时n毫秒
(0276) 	WORD i,j;
(0277) 
(0278) 	for(i=0; i<n; i++)
      BC 2744      CLR	R20
      BD 2755      CLR	R21
      BE C013      RJMP	0x00D2
(0279) 		for(j=0; j<MS_COUNT/1000;j++);
      BF 2766      CLR	R22
      C0 2777      CLR	R23
      C1 C002      RJMP	0x00C4
      C2 5F6F      SUBI	R22,0xFF
      C3 4F7F      SBCI	R23,0xFF
      C4 E080      LDI	R24,0
      C5 E090      LDI	R25,0
      C6 E0A0      LDI	R26,0
      C7 E0B0      LDI	R27,0
      C8 011B      MOVW	R2,R22
      C9 2444      CLR	R4
      CA 2455      CLR	R5
      CB 1628      CP	R2,R24
      CC 0639      CPC	R3,R25
      CD 064A      CPC	R4,R26
      CE 065B      CPC	R5,R27
      CF F394      BLT	0x00C2
      D0 5F4F      SUBI	R20,0xFF
      D1 4F5F      SBCI	R21,0xFF
      D2 1740      CP	R20,R16
      D3 0751      CPC	R21,R17
      D4 F350      BCS	0x00BF
      D5 C477      RJMP	pop_xgsetF000
_delay_s:
  i                    --> R20
  n                    --> R10
      D6 D467      RCALL	push_xgset300C
      D7 0158      MOVW	R10,R16
(0280) }
(0281) 
(0282) /////////////////////////////////////////////////////////////
(0283) void delay_s(WORD n)
(0284) {
(0285) 	WORD	i;
(0286) 	for ( i=0; i<10*n; i++ )	ms(100);
      D8 2744      CLR	R20
      D9 2755      CLR	R21
      DA C005      RJMP	0x00E0
      DB E604      LDI	R16,0x64
      DC E010      LDI	R17,0
      DD DFC2      RCALL	_ms
      DE 5F4F      SUBI	R20,0xFF
      DF 4F5F      SBCI	R21,0xFF
      E0 E00A      LDI	R16,0xA
      E1 E010      LDI	R17,0
      E2 0195      MOVW	R18,R10
      E3 D44A      RCALL	empy16s
      E4 1740      CP	R20,R16
      E5 0751      CPC	R21,R17
      E6 F3A0      BCS	0x00DB
      E7 C45B      RJMP	pop_xgset300C
(0287) }
(0288) 
(0289) /////////////////////////////////////////////////////////////
(0290) //UART口
(0291) void uart_init(void)
(0292) {
(0293) 	UCSRB = 0x00;							//设置波特率时关闭发送和接收
_uart_init:
      E8 2422      CLR	R2
      E9 B82A      OUT	0x0A,R2
(0294) 	UCSRA = 0x00;
      EA B82B      OUT	0x0B,R2
(0295) 	UCSRC = (1<<UCSZ1)|(1<<UCSZ0);			//8位数据+1位STOP位
      EB E086      LDI	R24,6
      EC BD80      OUT	0x20,R24
(0296) 	UBRRL=(fosc/16/baud-1)%256;
      ED E083      LDI	R24,3
      EE B989      OUT	0x09,R24
(0297) 	UBRRH=(fosc/16/baud-1)/256;			//设置波特率
      EF BC20      OUT	0x20,R2
(0298) 	UCSRB =(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);	//允许发送和接收
      F0 E988      LDI	R24,0x98
      F1 B98A      OUT	0x0A,R24
      F2 9508      RET
(0299) }
(0300) 
(0301) /////////////////////////////////////////////////////////////
(0302) //URAT口
(0303) BYTE uart_RxChar(void)
(0304) {
(0305) 	while(!(UCSRA& (1<<RXC)));//判断是否接收到数据
_uart_RxChar:
      F3 9B5F      SBIS	0x0B,7
      F4 CFFE      RJMP	_uart_RxChar
(0306) 	return UDR;                //接收数据
      F5 B10C      IN	R16,0x0C
      F6 9508      RET
(0307) }
(0308) 
(0309) /////////////////////////////////////////////////////////////
(0310) void uart_TxChar(BYTE c)
(0311) {
(0312) 	while (!(UCSRA&(1<<UDRE)));//判断上次发送是否完成
_uart_TxChar:
  c                    --> R16
      F7 9B5D      SBIS	0x0B,5
      F8 CFFE      RJMP	_uart_TxChar
(0313) 	UDR=c;                      //发送数据
      F9 B90C      OUT	0x0C,R16
      FA 9508      RET
_put_bytes:
  i                    --> R20
  len                  --> R10
  buf                  --> R12
      FB D464      RCALL	push_xgset303C
      FC 0159      MOVW	R10,R18
      FD 0168      MOVW	R12,R16
(0314) }
(0315) 
(0316) /////////////////////////////////////////////////////////////////////////////////
(0317) void put_bytes(BYTE *buf,int len)
(0318) {
(0319) 	int		i;
(0320) 	for ( i=0; i<len; i++ )		uart_TxChar(buf[i]);
      FE 2744      CLR	R20
      FF 2755      CLR	R21
     100 C007      RJMP	0x0108
     101 01FA      MOVW	R30,R20
     102 0DEC      ADD	R30,R12
     103 1DFD      ADC	R31,R13
     104 8100      LDD	R16,Z+0
     105 DFF1      RCALL	_uart_TxChar
     106 5F4F      SUBI	R20,0xFF
     107 4F5F      SBCI	R21,0xFF
     108 154A      CP	R20,R10
     109 055B      CPC	R21,R11
     10A F3B4      BLT	0x0101
     10B C45B      RJMP	pop_xgset303C
_GetLPC:
  c                    --> R20
  i                    --> R22
  len                  --> R18
  buf                  --> R16
     10C D43B      RCALL	push_xgsetF000
(0321) }
(0322) 
(0323) /////////////////////////////////////////////////////////////////////////////////
(0324) BYTE GetLPC(BYTE *buf,short len)
(0325) {
(0326) 	short	i;
(0327) 	BYTE	c = 0xff;
     10D EF4F      LDI	R20,0xFF
(0328) 
(0329) 	for ( i=0; i<len; i++ )	c ^= buf[i];
     10E 2766      CLR	R22
     10F 2777      CLR	R23
     110 C007      RJMP	0x0118
     111 01FB      MOVW	R30,R22
     112 0FE0      ADD	R30,R16
     113 1FF1      ADC	R31,R17
     114 8020      LDD	R2,Z+0
     115 2542      EOR	R20,R2
     116 5F6F      SUBI	R22,0xFF
     117 4F7F      SBCI	R23,0xFF
     118 1762      CP	R22,R18
     119 0773      CPC	R23,R19
     11A F3B4      BLT	0x0111
(0330) 	return c;
     11B 2F04      MOV	R16,R20
     11C C430      RJMP	pop_xgsetF000
(0331) }
(0332) 
(0333) /////////////////////////////////////////////////////////////
(0334) void SPI_MasterInit(void)
(0335) {
(0336) 	BYTE	temp;
(0337) 
(0338) 	//	   PD7(LED)PD6(TRX_CE),PD5(TX_EN) PD2(CD),PD3(DR),PD4(AM)
(0339) 	PORTD = 0x1C;
_SPI_MasterInit:
  temp                 --> R16
     11D E18C      LDI	R24,0x1C
     11E BB82      OUT	0x12,R24
(0340) 	DDRD = 0x80|0x40|0x20;
     11F EE80      LDI	R24,0xE0
     120 BB81      OUT	0x11,R24
(0341) 	TX_EN_L;
     121 9895      CBI	0x12,5
(0342) 	TRX_CE_L;
     122 9896      CBI	0x12,6
(0343) 	LED_L;
     123 9897      CBI	0x12,7
(0344) 	//	Set MOSI, SCK, SS,  POWER_UP output,all others input
(0345) 	//		PB3   PB5  PB2  PB0
(0346) 	CLI();
     124 94F8      BCLR	7
(0347) 	DDRB = 0x08 |0x20| 0x04|0x01;
     125 E28D      LDI	R24,0x2D
     126 BB87      OUT	0x17,R24
(0348) 	MISO_H;
     127 9AC4      SBI	0x18,4
(0349) 	CSN_H;
     128 9AC2      SBI	0x18,2
(0350) 	//	Enable SPI,Master,Set clock rate fck/16,interrupt enable
(0351) //	SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPIE)|(1<<CPHA);
(0352) //	SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPIE);
(0353) 	SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
     129 E581      LDI	R24,0x51
     12A B98D      OUT	0x0D,R24
(0354) //	SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<CPHA);
(0355) 	SPSR = 0x00;
     12B 2422      CLR	R2
     12C B82E      OUT	0x0E,R2
(0356) 	temp = SPSR;
     12D B10E      IN	R16,0x0E
(0357) 	temp = SPCR;
     12E B10D      IN	R16,0x0D
(0358) 	SEI();
     12F 9478      BSET	7
     130 9508      RET
(0359) }
(0360) 
(0361) /////////////////////////////////////////////////////////////
(0362) void SPI_Char(BYTE rxflag,char c)
(0363) {
(0364) 	SPDR = c;
_SPI_Char:
  c                    --> R18
  rxflag               --> R16
     131 B92F      OUT	0x0F,R18
(0365) 	while(!(SPSR & (1<<SPIF)));
     132 9B77      SBIS	0x0E,7
     133 CFFE      RJMP	0x0132
(0366) 
(0367)  	if ( rxflag )	{
     134 2300      TST	R16
     135 F079      BEQ	0x0145
(0368) 		spi_rxbuf[spi_rxpt] = SPDR;
     136 E781      LDI	R24,0x71
     137 E090      LDI	R25,0
     138 91E0 0070 LDS	R30,nrf905_JinJu.c:spi_rxpt
     13A 27FF      CLR	R31
     13B 0FE8      ADD	R30,R24
     13C 1FF9      ADC	R31,R25
     13D B02F      IN	R2,0x0F
     13E 8220      STD	Z+0,R2
(0369) 		spi_rxpt = (spi_rxpt+1)&SPI_BUF_LEN1;
     13F 9180 0070 LDS	R24,nrf905_JinJu.c:spi_rxpt
     141 5F8F      SUBI	R24,0xFF
     142 708F      ANDI	R24,0xF
     143 9380 0070 STS	nrf905_JinJu.c:spi_rxpt,R24
(0370) 	}
     145 9508      RET
(0371) }
(0372) 
(0373) /////////////////////////////////////////////////////////////
(0374) void nrF905_PowerOff_Mode()
(0375) {
(0376) 	PWR_UP_L;
_nrF905_PowerOff_Mode:
     146 98C0      CBI	0x18,0
     147 9508      RET
(0377) }
(0378) 
(0379) /////////////////////////////////////////////////////////////
(0380) void nrF905_Standby_Mode()
(0381) {
(0382) 	PWR_UP_H;
_nrF905_Standby_Mode:
     148 9AC0      SBI	0x18,0
(0383) 	TRX_CE_L;
     149 9896      CBI	0x12,6
     14A 9508      RET
(0384) }
(0385) 
(0386) /////////////////////////////////////////////////////////////
(0387) void nrF905_TX_Mode()
(0388) {
(0389) 	PWR_UP_H;
_nrF905_TX_Mode:
     14B 9AC0      SBI	0x18,0
(0390) 	TX_EN_H;
     14C 9A95      SBI	0x12,5
(0391) 	TRX_CE_L;
     14D 9896      CBI	0x12,6
     14E 9508      RET
(0392) }
(0393) 
(0394) /////////////////////////////////////////////////////////////
(0395) void nrF905_RX_Mode()
(0396) {
(0397) 	PWR_UP_H;
_nrF905_RX_Mode:
     14F 9AC0      SBI	0x18,0
(0398) 	TX_EN_L;
     150 9895      CBI	0x12,5
(0399) 	TRX_CE_H;
     151 9A96      SBI	0x12,6
(0400) 	us(650);
     152 E80A      LDI	R16,0x8A
     153 E012      LDI	R17,2
     154 DF66      RCALL	_us
     155 9508      RET
_spi_handle:
  len                  --> R22
  i                    --> R20
  cmd                  --> R10
     156 D3FB      RCALL	push_xgsetF00C
     157 2EA0      MOV	R10,R16
(0401) }
(0402) 
(0403) /////////////////////////////////////////////////////////////
(0404) BYTE spi_handle(BYTE cmd)
(0405) {
(0406)  	BYTE	len,i;
(0407)  	switch(cmd)		 {
     158 2D4A      MOV	R20,R10
     159 2755      CLR	R21
     15A 3140      CPI	R20,0x10
     15B E0E0      LDI	R30,0
     15C 075E      CPC	R21,R30
     15D F099      BEQ	0x0171
     15E 3140      CPI	R20,0x10
     15F E0E0      LDI	R30,0
     160 075E      CPC	R21,R30
     161 F40C      BGE	0x0163
     162 C06C      RJMP	0x01CF
     163 3241      CPI	R20,0x21
     164 E0E0      LDI	R30,0
     165 075E      CPC	R21,R30
     166 F409      BNE	0x0168
     167 C04D      RJMP	0x01B5
     168 3243      CPI	R20,0x23
     169 E0E0      LDI	R30,0
     16A 075E      CPC	R21,R30
     16B F161      BEQ	0x0198
     16C 3244      CPI	R20,0x24
     16D E0E0      LDI	R30,0
     16E 075E      CPC	R21,R30
     16F F0D1      BEQ	0x018A
     170 C05E      RJMP	0x01CF
(0408) 	case R_CONFIG:
(0409) 		len = 10;
     171 E06A      LDI	R22,0xA
(0410) 		for ( i=0; i<10; i++ ) {
     172 2744      CLR	R20
     173 C013      RJMP	0x0187
(0411) 			if ( Register[i] != spi_rxbuf[i] )	return 1;
     174 E781      LDI	R24,0x71
     175 E090      LDI	R25,0
     176 2FE4      MOV	R30,R20
     177 27FF      CLR	R31
     178 0FE8      ADD	R30,R24
     179 1FF9      ADC	R31,R25
     17A 8020      LDD	R2,Z+0
     17B EE88      LDI	R24,0xE8
     17C E090      LDI	R25,0
     17D 2FE4      MOV	R30,R20
     17E 27FF      CLR	R31
     17F 0FE8      ADD	R30,R24
     180 1FF9      ADC	R31,R25
     181 8030      LDD	R3,Z+0
     182 1432      CP	R3,R2
     183 F011      BEQ	0x0186
     184 E001      LDI	R16,1

⌨️ 快捷键说明

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