📄 main.lss
字号:
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 + -