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

📄 main.lss

📁 AVR atmega64串口驱动
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     b6a:	bf 15       	cp	r27, r15
     b6c:	21 f0       	breq	.+8      	; 0xb76 <AdcConvert+0x108>
		ret/=5;
     b6e:	cb 01       	movw	r24, r22
     b70:	65 e0       	ldi	r22, 0x05	; 5
     b72:	70 e0       	ldi	r23, 0x00	; 0
     b74:	03 c0       	rjmp	.+6      	; 0xb7c <AdcConvert+0x10e>
	else  
		ret/=6;
     b76:	cb 01       	movw	r24, r22
     b78:	66 e0       	ldi	r22, 0x06	; 6
     b7a:	70 e0       	ldi	r23, 0x00	; 0
     b7c:	0e 94 c9 1d 	call	0x3b92 <__udivmodhi4>

//	ADCSRA=0;//关闭ADC
	
	return ret;
}
     b80:	cb 01       	movw	r24, r22
     b82:	60 96       	adiw	r28, 0x10	; 16
     b84:	0f b6       	in	r0, 0x3f	; 63
     b86:	f8 94       	cli
     b88:	de bf       	out	0x3e, r29	; 62
     b8a:	0f be       	out	0x3f, r0	; 63
     b8c:	cd bf       	out	0x3d, r28	; 61
     b8e:	df 91       	pop	r29
     b90:	cf 91       	pop	r28
     b92:	1f 91       	pop	r17
     b94:	0f 91       	pop	r16
     b96:	ff 90       	pop	r15
     b98:	08 95       	ret

00000b9a <DelayMs>:
#define DelayMs_c
#include "main.h"
//ms延时函数,最大延时65535ms
void DelayMs(uint s)
{
     b9a:	ac 01       	movw	r20, r24
  uint i=0;
     b9c:	20 e0       	ldi	r18, 0x00	; 0
     b9e:	30 e0       	ldi	r19, 0x00	; 0
 for(i=0;i<s;i++)
     ba0:	24 17       	cp	r18, r20
     ba2:	35 07       	cpc	r19, r21
     ba4:	40 f4       	brcc	.+16     	; 0xbb6 <DelayMs+0x1c>
   {
	 wdt_reset();//复位看门狗
     ba6:	a8 95       	wdr
		__ticks = 1;
	else if (__tmp > 65535)
		__ticks = 0;	/* i.e. 65536 */
	else
		__ticks = (uint16_t)__tmp;
     ba8:	83 e3       	ldi	r24, 0x33	; 51
     baa:	97 e0       	ldi	r25, 0x07	; 7
     bac:	01 97       	sbiw	r24, 0x01	; 1
     bae:	f1 f7       	brne	.-4      	; 0xbac <DelayMs+0x12>
     bb0:	2f 5f       	subi	r18, 0xFF	; 255
     bb2:	3f 4f       	sbci	r19, 0xFF	; 255
     bb4:	f5 cf       	rjmp	.-22     	; 0xba0 <DelayMs+0x6>
     bb6:	08 95       	ret

00000bb8 <control_pow>:
 //********************电源控制**************************//
void control_pow(void)
{
	static uchar  power_onf_sms=0;//应答器无应答计数
	if((set_pown==1)&(adv_m>ADV_MIN))
     bb8:	40 e0       	ldi	r20, 0x00	; 0
     bba:	50 e0       	ldi	r21, 0x00	; 0
     bbc:	80 91 5c 0a 	lds	r24, 0x0A5C
     bc0:	86 95       	lsr	r24
     bc2:	99 27       	eor	r25, r25
     bc4:	9c 01       	movw	r18, r24
     bc6:	21 70       	andi	r18, 0x01	; 1
     bc8:	30 70       	andi	r19, 0x00	; 0
     bca:	80 fd       	sbrc	r24, 0
     bcc:	a9 01       	movw	r20, r18
     bce:	20 e0       	ldi	r18, 0x00	; 0
     bd0:	30 e0       	ldi	r19, 0x00	; 0
     bd2:	80 91 1d 02 	lds	r24, 0x021D
     bd6:	90 91 1e 02 	lds	r25, 0x021E
     bda:	81 54       	subi	r24, 0x41	; 65
     bdc:	9f 41       	sbci	r25, 0x1F	; 31
     bde:	10 f0       	brcs	.+4      	; 0xbe4 <control_pow+0x2c>
     be0:	21 e0       	ldi	r18, 0x01	; 1
     be2:	30 e0       	ldi	r19, 0x00	; 0
     be4:	24 23       	and	r18, r20
     be6:	35 23       	and	r19, r21
     be8:	23 2b       	or	r18, r19
     bea:	51 f0       	breq	.+20     	; 0xc00 <control_pow+0x48>
	{
		set_pown=0;    //电源1工作	
     bec:	80 91 5c 0a 	lds	r24, 0x0A5C
     bf0:	8d 7f       	andi	r24, 0xFD	; 253
     bf2:	80 93 5c 0a 	sts	0x0A5C, r24
		signal_c=0;//重新搜索GSM信号
     bf6:	80 91 5b 0a 	lds	r24, 0x0A5B
     bfa:	8f 77       	andi	r24, 0x7F	; 127
     bfc:	80 93 5b 0a 	sts	0x0A5B, r24
	}
	if(set_pown==0)
     c00:	80 91 5c 0a 	lds	r24, 0x0A5C
     c04:	86 95       	lsr	r24
     c06:	99 27       	eor	r25, r25
     c08:	ac 01       	movw	r20, r24
     c0a:	41 70       	andi	r20, 0x01	; 1
     c0c:	50 70       	andi	r21, 0x00	; 0
     c0e:	80 fd       	sbrc	r24, 0
     c10:	21 c0       	rjmp	.+66     	; 0xc54 <control_pow+0x9c>
	{
		if((adv_m<ADV_MIN)&(batt_m>3000))
     c12:	9a 01       	movw	r18, r20
     c14:	80 91 1d 02 	lds	r24, 0x021D
     c18:	90 91 1e 02 	lds	r25, 0x021E
     c1c:	80 54       	subi	r24, 0x40	; 64
     c1e:	9f 41       	sbci	r25, 0x1F	; 31
     c20:	10 f4       	brcc	.+4      	; 0xc26 <control_pow+0x6e>
     c22:	21 e0       	ldi	r18, 0x01	; 1
     c24:	30 e0       	ldi	r19, 0x00	; 0
     c26:	80 91 4f 0a 	lds	r24, 0x0A4F
     c2a:	90 91 50 0a 	lds	r25, 0x0A50
     c2e:	89 5b       	subi	r24, 0xB9	; 185
     c30:	9b 40       	sbci	r25, 0x0B	; 11
     c32:	10 f0       	brcs	.+4      	; 0xc38 <control_pow+0x80>
     c34:	41 e0       	ldi	r20, 0x01	; 1
     c36:	50 e0       	ldi	r21, 0x00	; 0
     c38:	24 23       	and	r18, r20
     c3a:	35 23       	and	r19, r21
     c3c:	23 2b       	or	r18, r19
     c3e:	51 f0       	breq	.+20     	; 0xc54 <control_pow+0x9c>
		{
			set_pown=1;    //蓄电池工作	
     c40:	80 91 5c 0a 	lds	r24, 0x0A5C
     c44:	82 60       	ori	r24, 0x02	; 2
     c46:	80 93 5c 0a 	sts	0x0A5C, r24
			signal_c=0;//重新搜索GSM信号
     c4a:	80 91 5b 0a 	lds	r24, 0x0A5B
     c4e:	8f 77       	andi	r24, 0x7F	; 127
     c50:	80 93 5b 0a 	sts	0x0A5B, r24
		}
	}
  //*****************************************电源变换后,稳定30秒发送短信
	if(power_ls!=set_pown) //稳定30s发送短信
     c54:	80 91 66 0a 	lds	r24, 0x0A66
     c58:	28 2f       	mov	r18, r24
     c5a:	33 27       	eor	r19, r19
     c5c:	21 70       	andi	r18, 0x01	; 1
     c5e:	30 70       	andi	r19, 0x00	; 0
     c60:	80 91 5c 0a 	lds	r24, 0x0A5C
     c64:	86 95       	lsr	r24
     c66:	99 27       	eor	r25, r25
     c68:	81 70       	andi	r24, 0x01	; 1
     c6a:	90 70       	andi	r25, 0x00	; 0
     c6c:	28 17       	cp	r18, r24
     c6e:	39 07       	cpc	r19, r25
     c70:	19 f1       	breq	.+70     	; 0xcb8 <control_pow+0x100>
	{
		power_onf_sms++;
     c72:	80 91 2c 02 	lds	r24, 0x022C
     c76:	8f 5f       	subi	r24, 0xFF	; 255
     c78:	80 93 2c 02 	sts	0x022C, r24
		if(power_onf_sms>30)//
     c7c:	8f 31       	cpi	r24, 0x1F	; 31
     c7e:	e0 f0       	brcs	.+56     	; 0xcb8 <control_pow+0x100>
		{
			if(set_pown==0)
     c80:	80 91 5c 0a 	lds	r24, 0x0A5C
     c84:	86 95       	lsr	r24
     c86:	80 fd       	sbrc	r24, 0
     c88:	03 c0       	rjmp	.+6      	; 0xc90 <control_pow+0xd8>
			{
				sms_counts(8);//系统上电
     c8a:	88 e0       	ldi	r24, 0x08	; 8
     c8c:	0e 94 67 0a 	call	0x14ce <sms_counts>
			}
			if(set_pown==1)
     c90:	80 91 5c 0a 	lds	r24, 0x0A5C
     c94:	86 95       	lsr	r24
     c96:	80 ff       	sbrs	r24, 0
     c98:	03 c0       	rjmp	.+6      	; 0xca0 <control_pow+0xe8>
			{
				sms_counts(22);//系统断电
     c9a:	86 e1       	ldi	r24, 0x16	; 22
     c9c:	0e 94 67 0a 	call	0x14ce <sms_counts>
			}
			power_onf_sms=0;
     ca0:	10 92 2c 02 	sts	0x022C, r1
			power_ls=set_pown;
     ca4:	90 91 5c 0a 	lds	r25, 0x0A5C
     ca8:	96 95       	lsr	r25
     caa:	91 70       	andi	r25, 0x01	; 1
     cac:	80 91 66 0a 	lds	r24, 0x0A66
     cb0:	8e 7f       	andi	r24, 0xFE	; 254
     cb2:	89 2b       	or	r24, r25
     cb4:	80 93 66 0a 	sts	0x0A66, r24
		}
	}
	if(power_ls==set_pown)
     cb8:	80 91 66 0a 	lds	r24, 0x0A66
     cbc:	28 2f       	mov	r18, r24
     cbe:	33 27       	eor	r19, r19
     cc0:	21 70       	andi	r18, 0x01	; 1
     cc2:	30 70       	andi	r19, 0x00	; 0
     cc4:	80 91 5c 0a 	lds	r24, 0x0A5C
     cc8:	86 95       	lsr	r24
     cca:	99 27       	eor	r25, r25
     ccc:	81 70       	andi	r24, 0x01	; 1
     cce:	90 70       	andi	r25, 0x00	; 0
     cd0:	28 17       	cp	r18, r24
     cd2:	39 07       	cpc	r19, r25
     cd4:	11 f4       	brne	.+4      	; 0xcda <control_pow+0x122>
	{
		power_onf_sms=0;
     cd6:	10 92 2c 02 	sts	0x022C, r1
     cda:	08 95       	ret

00000cdc <Charge_Control>:
	}
 }
  //****************************************
//**********************充电控制***********************//
void Charge_Control(void)
{
    
	batt_m=15*AdcConvert(ADC_BATT_M);  //电瓶电压(25*6)
     cdc:	81 e0       	ldi	r24, 0x01	; 1
     cde:	0e 94 37 05 	call	0xa6e <AdcConvert>
     ce2:	9c 01       	movw	r18, r24
     ce4:	54 e0       	ldi	r21, 0x04	; 4
     ce6:	22 0f       	add	r18, r18
     ce8:	33 1f       	adc	r19, r19
     cea:	5a 95       	dec	r21
     cec:	e1 f7       	brne	.-8      	; 0xce6 <Charge_Control+0xa>
     cee:	28 1b       	sub	r18, r24
     cf0:	39 0b       	sbc	r19, r25
     cf2:	30 93 50 0a 	sts	0x0A50, r19
     cf6:	20 93 4f 0a 	sts	0x0A4F, r18
	if(batt_m>7500)
     cfa:	80 91 4f 0a 	lds	r24, 0x0A4F
     cfe:	90 91 50 0a 	lds	r25, 0x0A50
     d02:	8d 54       	subi	r24, 0x4D	; 77
     d04:	9d 41       	sbci	r25, 0x1D	; 29
     d06:	a0 f0       	brcs	.+40     	; 0xd30 <Charge_Control+0x54>
	{
		SET_BATT_C;//停止充电 
     d08:	c7 9a       	sbi	0x18, 7	; 24
		DelayMs(500);
     d0a:	84 ef       	ldi	r24, 0xF4	; 244
     d0c:	91 e0       	ldi	r25, 0x01	; 1
     d0e:	0e 94 cd 05 	call	0xb9a <DelayMs>
		batt_m=15*AdcConvert(ADC_BATT_M);  //电瓶电压(25*6)
     d12:	81 e0       	ldi	r24, 0x01	; 1
     d14:	0e 94 37 05 	call	0xa6e <AdcConvert>
     d18:	9c 01       	movw	r18, r24
     d1a:	44 e0       	ldi	r20, 0x04	; 4
     d1c:	22 0f       	add	r18, r18
     d1e:	33 1f       	adc	r19, r19
     d20:	4a 95       	dec	r20
     d22:	e1 f7       	brne	.-8      	; 0xd1c <Charge_Control+0x40>
     d24:	28 1b       	sub	r18, r24
     d26:	39 0b       	sbc	r19, r25
     d28:	30 93 50 0a 	sts	0x0A50, r19
     d2c:	20 93 4f 0a 	sts	0x0A4F, r18
	}
	if((batt_m<3000)|(batt_m>7500))
     d30:	20 e0       	ldi	r18, 0x00	; 0
     d32:	30 e0       	ldi	r19, 0x00	; 0
     d34:	80 91 4f 0a 	lds	r24, 0x0A4F
     d38:	90 91 50 0a 	lds	r25, 0x0A50
     d3c:	88 5b       	subi	r24, 0xB8	; 184
     d3e:	9b 40       	sbci	r25, 0x0B	; 11
     d40:	10 f4       	brcc	.+4      	; 0xd46 <Charge_Control+0x6a>
     d42:	21 e0       	ldi	r18, 0x01	; 1
     d44:	30 e0       	ldi	r19, 0x00	; 0
     d46:	40 e0       	ldi	r20, 0x00	; 0
     d48:	50 e0       	ldi	r21, 0x00	; 0
     d4a:	80 91 4f 0a 	lds	r24, 0x0A4F
     d4e:	90 91 50 0a 	lds	r25, 0x0A50
     d52:	8d 54       	subi	r24, 0x4D	; 77
     d54:	9d 41       	sbci	r25, 0x1D	; 29
     d56:	10 f0       	brcs	.+4      	; 0xd5c <Charge_Control+0x80>
     d58:	41 e0       	ldi	r20, 0x01	; 1
     d5a:	50 e0       	ldi	r21, 0x00	; 0
     d5c:	24 2b       	or	r18, r20
     d5e:	35 2b       	or	r19, r21
     d60:	23 2b       	or	r18, r19
     d62:	09 f0       	breq	.+2      	; 0xd66 <Charge_Control+0x8a>
	{      
		SET_BATT_C;//停止充电
     d64:	c7 9a       	sbi	0x18, 7	; 24
	}
	if((batt_m<6500)&(batt_m>3000)&(adv_m>ADV_MIN))
     d66:	40 e0       	ldi	r20, 0x00	; 0
     d68:	50 e0       	ldi	r21, 0x00	; 0
     d6a:	80 91 4f 0a 	lds	r24, 0x0A4F
     d6e:	90 91 50 0a 	lds	r25, 0x0A50
     d72:	84 56       	subi	r24, 0x64	; 100
     d74:	99 41       	sbci	r25, 0x19	; 25
     d76:	10 f4       	brcc	.+4      	; 0xd7c <Charge_Control+0xa0>
     d78:	41 e0       	ldi	r20, 0x01	; 1
     d7a:	50 e0       	ldi	r21, 0x00	; 0
     d7c:	20 e0       	ldi	r18, 0x00	; 0
     d7e:	30 e0       	ldi	r19, 0x00	; 0
     d80:	80 91 4f 0a 	lds	r24, 0x0A4F
     d84:	90 91 50 0a 	lds	r25, 0x0A50
     d88:	89 5b       	subi	r24, 0xB9	; 185
     d8a:	9b 40       	sbci	r25, 0x0B	; 11
     d8c:	10 f0       	brcs	.+4      	; 0xd92 <Charge_Control+0xb6>
     d8e:	21 e0       	ldi	r18, 0x01	; 1
     d90:	30 e0       	ldi	r19, 0x00	; 0
     d92:	24 23       	and	r18, r20
     d94:	35 23       	and	r19, r21
     d96:	40 e0       	ldi	r20, 0x00	; 0
     d98:	50 e0       	ldi	r21, 0x00	; 0
     d9a:	80 91 1d 02 	lds	r24, 0x021D
     d9e:	90 91 1e 02 	lds	r25, 0x021E
     da2:	81 54       	subi	r24, 0x41	; 65
     da4:	9f 41       	sbci	r25, 0x1F	; 31
     da6:	10 f0       	brcs	.+4      	; 0xdac <Charge_Control+0xd0>
     da8:	41 e0       	ldi	r20, 0x01	; 1
     daa:	50 e0       	ldi	r21, 0x00	; 0
     dac:	24 23       	and	r18, r20
     dae:	35 23       	and	r19, r21
     db0:	23 2b       	or	r18, r19
     db2:	09 f0       	breq	.+2      	; 0xdb6 <Charge_Control+0xda>
	{
		CLR_BATT_C;//	充电
     db4:	c7 98       	cbi	0x18, 7	; 24
     db6:	08 95       	ret

00000db8 <Simulation_examination>:
	}
}
//***************模拟量检测******************//
void Simulation_examination(void)
{
     db8:	0f 93       	push	r16
     dba:	1f 93       	push	r17
	read_temperature();//读温度
     dbc:	0e 94 93 1a 	call	0x3526 <read_temperature>
	adv_m=27.5*AdcConvert(ADC_POW);  //电源1电压(25*6)
     dc0:	80 e0       	ldi	r24, 0x00	; 0
     dc2:	0e 94 37 05 	call	0xa6e <AdcConvert>
     dc6:	8c 01       	movw	r16, r24
     dc8:	c8 01       	movw	r24, r16
     dca:	aa 27       	eor	r26, r26
     dcc:	97 fd       	sbrc	r25, 7
     dce:	a0 95       	com	r26
     dd0:	ba 2f       	mov	r27, r26
     dd2:	bc 01       	movw	r22, r24
     dd4:	cd 01       	movw	r24, r26
     dd6:	0e 94 1d 1d 	call	0x3a3a <__floatsisf>
     dda:	17 ff       	sbrs	r17, 7
     ddc:	06 c0       	rjmp	.+12     	; 0xdea <Simulation_examination+0x32>
     dde:	20 e0       	ldi	r18, 0x00	; 0
     de0:	30 e0       	ldi	r19, 0x00	; 0
     de2:	40 e8       	ldi	r20, 0x80	; 128
     de4:	57 e4       	ldi	r21, 0x47	; 71
     de6:	0e 94 be 1c 	call	0x397c <__addsf3>
     dea:	20 e0       	ldi	r18, 0x00	; 0
     dec:	30 e0       	ldi	r19, 0x00	; 0
     dee:	4c ed       	ldi	r20, 0xDC	; 220
     df0:	51 e4       	ldi	r21, 0x41	; 65
     df2:	0e 94 72 1d 	call	0x3ae4 <__mulsf3>
     df6:	dc 01       	movw	r26, r24
     df8:	cb 01       	movw	r24, r22
     dfa:	bc 01       	movw	r22, r24
   

⌨️ 快捷键说明

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