📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000164c 00000000 00000000 00000094 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000004 00800060 0000164c 000016e0 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000026 00800064 00800064 000016e4 2**0
ALLOC
3 .noinit 00000000 0080008a 0080008a 000016e4 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 000016e4 2**0
CONTENTS
5 .stab 0000036c 00000000 00000000 000016e4 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 00001a50 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 00000050 00000000 00000000 00001ad4 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 0000070a 00000000 00000000 00001b24 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 00001a6b 00000000 00000000 0000222e 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 00000435 00000000 00000000 00003c99 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 00000fd4 00000000 00000000 000040ce 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 000004da 00000000 00000000 000050a2 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 64 c0 rjmp .+200 ; 0xca <__init>
2: 7d c0 rjmp .+250 ; 0xfe <__bad_interrupt>
4: 7c c0 rjmp .+248 ; 0xfe <__bad_interrupt>
6: 7b c0 rjmp .+246 ; 0xfe <__bad_interrupt>
8: 7a c0 rjmp .+244 ; 0xfe <__bad_interrupt>
a: 79 c0 rjmp .+242 ; 0xfe <__bad_interrupt>
c: e4 c3 rjmp .+1992 ; 0x7d6 <__vector_6>
e: 77 c0 rjmp .+238 ; 0xfe <__bad_interrupt>
10: 76 c0 rjmp .+236 ; 0xfe <__bad_interrupt>
12: 75 c0 rjmp .+234 ; 0xfe <__bad_interrupt>
14: 74 c0 rjmp .+232 ; 0xfe <__bad_interrupt>
16: 73 c0 rjmp .+230 ; 0xfe <__bad_interrupt>
18: 72 c0 rjmp .+228 ; 0xfe <__bad_interrupt>
1a: 71 c0 rjmp .+226 ; 0xfe <__bad_interrupt>
1c: 70 c0 rjmp .+224 ; 0xfe <__bad_interrupt>
1e: 6f c0 rjmp .+222 ; 0xfe <__bad_interrupt>
20: 6e c0 rjmp .+220 ; 0xfe <__bad_interrupt>
22: 6d c0 rjmp .+218 ; 0xfe <__bad_interrupt>
24: 6c c0 rjmp .+216 ; 0xfe <__bad_interrupt>
00000026 <__ctors_end>:
26: 14 c5 rjmp .+2600 ; 0xa50 <Show_State+0x1c>
28: 19 c5 rjmp .+2610 ; 0xa5c <Show_State+0x28>
2a: 1c c5 rjmp .+2616 ; 0xa64 <Show_State+0x30>
2c: 22 c5 rjmp .+2628 ; 0xa72 <Show_State+0x3e>
2e: 25 c5 rjmp .+2634 ; 0xa7a <Show_State+0x46>
30: 2a c5 rjmp .+2644 ; 0xa86 <Show_State+0x52>
32: 2d c5 rjmp .+2650 ; 0xa8e <Show_State+0x5a>
34: 32 c5 rjmp .+2660 ; 0xa9a <Show_State+0x66>
36: 7e c5 rjmp .+2812 ; 0xb34 <Time_Display_Test+0x28>
38: 84 c5 rjmp .+2824 ; 0xb42 <Time_Display_Test+0x36>
3a: 87 c5 rjmp .+2830 ; 0xb4a <Time_Display_Test+0x3e>
3c: 90 c5 rjmp .+2848 ; 0xb5e <Time_Display_Test+0x52>
3e: 9a c5 rjmp .+2868 ; 0xb74 <Time_Display_Test+0x68>
40: a1 c5 rjmp .+2882 ; 0xb84 <Time_Display_Test+0x78>
42: a5 c5 rjmp .+2890 ; 0xb8e <Time_Display_Test+0x82>
44: ab c5 rjmp .+2902 ; 0xb9c <Time_Display_Test+0x90>
46: b4 c5 rjmp .+2920 ; 0xbb0 <Time_Display_Test+0xa4>
48: bc c5 rjmp .+2936 ; 0xbc2 <Time_Display_Test+0xb6>
4a: d3 c5 rjmp .+2982 ; 0xbf2 <Time_Display_Test+0xe6>
4c: d9 c5 rjmp .+2994 ; 0xc00 <Time_Display_Test+0xf4>
4e: dc c5 rjmp .+3000 ; 0xc08 <Time_Display_Test+0xfc>
50: e5 c5 rjmp .+3018 ; 0xc1c <Time_Display_Test+0x110>
52: ef c5 rjmp .+3038 ; 0xc32 <Time_Display_Test+0x126>
54: f6 c5 rjmp .+3052 ; 0xc42 <Time_Display_Test+0x136>
56: fa c5 rjmp .+3060 ; 0xc4c <Time_Display_Test+0x140>
58: 00 c6 rjmp .+3072 ; 0xc5a <Time_Display_Test+0x14e>
5a: 09 c6 rjmp .+3090 ; 0xc6e <Time_Display_Test+0x162>
5c: 11 c6 rjmp .+3106 ; 0xc80 <Time_Display_Test+0x174>
0000005e <OutAdjustData>:
5e: 00 00 00 40 ...@
00000062 <BottomData>:
62: 00 02 02 00 ....
00000066 <ChargeStayData>:
66: 02 00 00 00 ....
0000006a <BatteryCapData>:
6a: 00 00 00 00 00 00 00 01 01 00 00 01 01 01 00 01 ................
7a: 01 01 01 01 ....
0000007e <TherapyDymData>:
7e: 04 00 00 00 04 04 00 00 04 04 04 00 04 04 04 04 ................
0000008e <OutStateData>:
8e: 00 00 00 00 80 00 00 00 80 80 00 00 80 80 80 00 ................
9e: 80 80 80 80 ....
000000a2 <NumData>:
a2: 18 08 18 08 00 08 08 00 08 18 10 08 08 18 08 08 ................
b2: 10 18 08 00 18 10 08 08 18 10 18 08 08 08 08 00 ................
c2: 18 18 18 08 18 18 08 08 ........
000000ca <__init>:
ca: 11 24 eor r1, r1
cc: 1f be out 0x3f, r1 ; 63
ce: cf e5 ldi r28, 0x5F ; 95
d0: d4 e0 ldi r29, 0x04 ; 4
d2: de bf out 0x3e, r29 ; 62
d4: cd bf out 0x3d, r28 ; 61
000000d6 <__do_copy_data>:
d6: 10 e0 ldi r17, 0x00 ; 0
d8: a0 e6 ldi r26, 0x60 ; 96
da: b0 e0 ldi r27, 0x00 ; 0
dc: ec e4 ldi r30, 0x4C ; 76
de: f6 e1 ldi r31, 0x16 ; 22
e0: 02 c0 rjmp .+4 ; 0xe6 <.do_copy_data_start>
000000e2 <.do_copy_data_loop>:
e2: 05 90 lpm r0, Z+
e4: 0d 92 st X+, r0
000000e6 <.do_copy_data_start>:
e6: a4 36 cpi r26, 0x64 ; 100
e8: b1 07 cpc r27, r17
ea: d9 f7 brne .-10 ; 0xe2 <.do_copy_data_loop>
000000ec <__do_clear_bss>:
ec: 10 e0 ldi r17, 0x00 ; 0
ee: a4 e6 ldi r26, 0x64 ; 100
f0: b0 e0 ldi r27, 0x00 ; 0
f2: 01 c0 rjmp .+2 ; 0xf6 <.do_clear_bss_start>
000000f4 <.do_clear_bss_loop>:
f4: 1d 92 st X+, r1
000000f6 <.do_clear_bss_start>:
f6: aa 38 cpi r26, 0x8A ; 138
f8: b1 07 cpc r27, r17
fa: e1 f7 brne .-8 ; 0xf4 <.do_clear_bss_loop>
fc: c0 c2 rjmp .+1408 ; 0x67e <main>
000000fe <__bad_interrupt>:
fe: 80 cf rjmp .-256 ; 0x0 <__vectors>
00000100 <Init_Flag>:
void Init_Flag(void) //从EEPROM中读出当前功率状态
{
eeprom_busy_wait();
100: 8c b3 in r24, 0x1c ; 28
102: 99 27 eor r25, r25
104: dc 01 movw r26, r24
106: a2 70 andi r26, 0x02 ; 2
108: b0 70 andi r27, 0x00 ; 0
10a: 81 fd sbrc r24, 1
10c: f9 cf rjmp .-14 ; 0x100 <Init_Flag>
uint8_t
eeprom_read_byte (const uint8_t *addr)
{
uint8_t result;
asm volatile
10e: 8a da rcall .-2796 ; 0xfffff624 <__eeprom_end+0xff7ef624>
110: 80 2d mov r24, r0
112: 99 27 eor r25, r25
114: 80 93 7c 00 sts 0x007C, r24
AdjustTimes=eeprom_read_byte(0);
if(AdjustTimes==0xFF)AdjustTimes=1;
118: 80 91 7c 00 lds r24, 0x007C
11c: 8f 3f cpi r24, 0xFF ; 255
11e: 19 f4 brne .+6 ; 0x126 <Init_Flag+0x26>
120: 81 e0 ldi r24, 0x01 ; 1
122: 80 93 7c 00 sts 0x007C, r24
126: 08 95 ret
00000128 <KeyScan>:
}
void Save_Flag(void) //将调整后的功率状态存入EEPROM中
{
eeprom_busy_wait();
eeprom_write_byte(0,AdjustTimes);
}
void AD_Shift(void) //开始进行A/D转换
{
/********
//ADCH=0;ADCL=0;
ADCSRA=0xD7;
ADMUX=0x47;//ADMUX=0x44;//DIP-M8-UART测试
ADCSRA|=(1<<ADSC);
_delay_loop_1(60);
while(ADCSRA&(1<<ADSC))
_delay_loop_1(60);
ChargeResult_AD=ADCL;
ChargeResult_AD|=(uint)(ADCH<<8);
//ADCH=0;ADCL=0;
ADCSRA=0xD7;
ADMUX=0x46;//ADMUX=0x45;//DIP-M8-UART测试
ADCSRA|=(1<<ADSC);
_delay_loop_1(60);
while(ADCSRA&(1<<ADSC))
_delay_loop_1(60);
VoltageResult_AD=ADCL;
VoltageResult_AD|=(uint)(ADCH<<8);
************/
AD_init();
VoltageResult_AD=BT_V();
ChargeResult_AD=BT_C();
Can_read=1;
}
void Voltage_Check(void) //当前工作电压监测
{
if(VoltageResult_AD>=VREFH){LevelState=4;alarm_n_short(1);}//Beep_middle(1,200);}
else if((VoltageResult_AD>=VREFMH)&&(VoltageResult_AD<VREFH)){LevelState=4;}
else if((VoltageResult_AD>=VREFML)&&(VoltageResult_AD<VREFMH)){LevelState=3;}
else if((VoltageResult_AD>=VREFL)&&(VoltageResult_AD<VREFML)){LevelState=2;}
else if((VoltageResult_AD>=VREFC)&&(VoltageResult_AD<VREFL)){LevelState=0;}
else {LevelState=1;KeyState=0;SwitchTimes=1;alarm_n_short(1);Close();}
AllState=(AllState&0b11111000)+LevelState;
}
void Charge_Check(void) //充电状态监测
{
//if(ChargeResult_AD>=VREFH_CHARGE){ChargeState=2;Beep_long(1,200);}
//else
if(ChargeResult_AD>=VREFL_CHARGE)//&&ChargeResult_AD<VREFH_CHARGE)
{
//if(++ChargeFlagTimes>3)
//{
//ChargeFlagTimes=0;
ChargeState=1;
AllState|=(1<<6);
LedSec=0;
PORTC|=(1<<6);//}//LED背光给电10秒
if(ChargeFlag==0){alarm_n_short(1);ChargeFlag=1;}//Beep_short(1,200);ChargeFlag=1;}
//}
}
else
{
//ChargeFlagTimes=0;
ChargeState=0;
AllState&=~(1<<6);
ChargeFlag=0;
}
}
void Close(void) //关机
{
//Beep_short(3,200); //关机前报警
//Reset_Source();//PORTC&=~(1<<6);
PORTB&=~(1<<7);//PORTB|=(1<<7); //置高,使POWER断开,关机
wdt_enable(WDTO_1S);
wdt_reset();
/*****
DelayMs(1000);
cli();
Can_read=0;AllState=0;LevelState=1;OutState=0;ChargeState=0;Time_minu=0;mh=0;ml=0;SwitchTimes=0;AdjustTimes=0;Time_sec=0;
times=0;ChargeTimes=0;KeyState=0;ChargeFlag=0;ChargeFlagTimes=0;VoltageTimes=0;FlagTimes=0;DelayFlag=0;AdjustTimesFlag=0;KeyOld=0;Adj=1;AlarmFlag=0;
AbandonFlag=0;mid=0;ADTimes=0;VoltageResult_AD=0;ChargeResult_AD=0;
Init_Device();
Init_Flag();
//Reset_Source();
//AbandonFlag=0;
sei();
******/
}
void TaskTurn (void)
{
/**********
Flag 用于按下WORK时,ADJUST的屏蔽
SwitchTimes 用于开关机记数
DelayFlag 用于开机后待机状态显示稳定及扬声器发声及laserpower给电
AdjustTimesFlag为有按键进行调整的标志
*********/
switch(KeyState)
{
case 0x00: //POWER/RA5键-PB6//待机状态
//AllState&=0b01000000;
//AllState|=(uchar)(AdjustTimes<<3)+LevelState;
if(DelayFlag==0)
{
//wdt_reset();
if(((AllState&0b01000000)>>6)==1)ChargePOWERState_Display(10);
else POWERState_Display(10);
alarm_n_short(1);//Beep_middle(1,200);
DelayFlag=1;
}
else
{
if(((AllState&0b01000000)>>6)==1)ChargePOWERState_Display(10);
else POWERState_Display(10);
}
if((Flag==0)&&(KeyState==0))//if((FirstFlag==1)&&(Flag==0)&&(KeyState==0))
{
//FirstFlag=0;
KeyState=0;
if(((AllState&0b01000000)>>6)==1)ChargePOWERState_Display(10);
else POWERState_Display(10);
DelayMs(1000);
SwitchTimes=1;
}//长按关机
if(SwitchTimes==1)
{
//wdt_reset();
alarm_n_short(3);//Beep_middle(3,200);
Flag=1;
SwitchTimes=0;
Close();
}
break;
case 0x01: //WORK键-PC4//工作状态
PORTB&=~(1<<5);//laserpower给电 PB5置0
//AllState&=0b01000000;
//AllState|=(uchar)(AdjustTimes<<3)+LevelState;
if(WorkFlag==0){alarm_n_short(1);WorkFlag=1;}//Beep_short(1,200);WorkFlag=1;}
if(((AllState&0b01000000)>>6)==1)ChargeWORKState_Display(10,(uchar)((AllState&0b00111000)>>3),(uchar)(AllState&0b00000111));
else WORKState_Display(10,(uchar)((AllState&0b00111000)>>3),(uchar)(AllState&0b00000111));
if(AdjustTimes==1){PORTB&=~(1<<0);PORTB&=~(1<<3);PORTB&=~(1<<4);}//PB0:PB3:PB4:->000 //给激光器调整功率状态
else if(AdjustTimes==2){PORTB&=~(1<<0);PORTB&=~(1<<3);PORTB|=(1<<4);}//PB0:PB3:PB4:->001
else if(AdjustTimes==3){PORTB&=~(1<<0);PORTB|=(1<<3);PORTB&=~(1<<4);}//PB0:PB3:PB4:->010
else if(AdjustTimes==4){PORTB|=(1<<0);PORTB&=~(1<<3);PORTB&=~(1<<4);}//PB0:PB3:PB4:->100
if((Time_minu==15)&&(AlarmFlag==0)){alarm_n_short(5);AlarmFlag=1;}//Beep_middle(5,200);AlarmFlag=1;}
else if((Time_sec>=58)&&(Time_sec<=60)&&(Time_minu==29)&&(AlarmFlag==1)){alarm_n_short(15);AlarmFlag=0;SwitchTimes=1;KeyState=0;Close(); }//Beep_middle(15,200);AlarmFlag=0;SwitchTimes=0;}
/*************
if((Flag==1)&&(KeyState==1))
{KeyState=0;//wdt_reset();
DelayMs(1000);SwitchTimes=1;}//长按关机
***********/
break;
case 0x02: //ADJUST_P键-PC5//功率调整状态
//wdt_reset();
if(AdjustTimesFlag==1)
{
if(((AllState&0b01000000)>>6)==1)ChargeADJUSTState_Display(10,(uchar)((AllState&0b00111000)>>3),(uchar)(AllState&0b00000111));
else ADJUSTState_Display(10,(uchar)((AllState&0b00111000)>>3),(uchar)(AllState&0b00000111));
AdjustTimesFlag=0;
/*********
//AdjustTimes++; //AdjustTimes为功率状态(第几格)
//wdt_reset();
AdjustTimes=(++Adj)/2;
//AllState&=0b01000000;
//AllState|=(uchar)(AdjustTimes<<3)+LevelState;
Save_Flag();
if(Adj>8)Adj=1;
if(Adj%2)alarm_n_short(1);//Beep_short(1,200);
DelayMs(500);//延时消抖,防止AdjustTimes重复++
*********/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -