📄 main.lss
字号:
while((PINC&(1<<ADJUST))==0)
{
DelayMs(1);
}
AdjustTimes=(++Adj)/2;
if(Adj>8)Adj=1;
Save_Flag();
if(Adj%2)alarm_n_short(1);//Beep_short(1,200);
}
else if(AdjustTimesFlag==0)
{
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));
}
/**********
if((Flag==1)&&(KeyState==2))
{KeyState=0;//wdt_reset();
DelayMs(1000);SwitchTimes=1;}//长按关机
************/
break;
case 0x03:
Can_read=0,AllState=0,LevelState=1,OutState=0,ChargeState=0,LedSec=0,Time_minu=0,mh=0,ml=0,SwitchTimes=0,AdjustTimes=0,Time_sec=0;
times=0,ChargeTimes=0,KeyState=0,ChargeFlag=0,LedFlag=0,ChargeFlagTimes=0,VoltageTimes=0,WorkFlag=0,Flag=1,FlagTimes=0,FirstFlag=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();
AllState&=0b01000000;
AllState|=(uchar)(AdjustTimes<<3)+LevelState;
default:
break;
}
}
uchar KeyScan (uchar ret)
{
128: 98 2f mov r25, r24
//puts("KeyScanT");
/****
#define POWER PB6
#define WORK PC4
#define ADJUST PC5
#define RESET PC6
***/
if((PINB&(1<<POWER))==0)
12a: b6 99 sbic 0x16, 6 ; 22
12c: 08 c0 rjmp .+16 ; 0x13e <KeyScan+0x16>
{
//DelayMs(1);
if((PINB&(1<<POWER))==0)
12e: b6 99 sbic 0x16, 6 ; 22
130: 24 c0 rjmp .+72 ; 0x17a <KeyScan+0x52>
{
ret=0;
132: 90 e0 ldi r25, 0x00 ; 0
//AbandonFlag=1;
//break;
//puts("ret=");puts("0x00#");
// if(LedFlag==0){
LedSec=0;
134: 90 93 81 00 sts 0x0081, r25
Flag=0;
138: 90 93 61 00 sts 0x0061, r25
13c: 1d c0 rjmp .+58 ; 0x178 <KeyScan+0x50>
//FirstFlag=1;
PORTC|=(1<<6);//}//LED背光给电10秒
}
}
else if((PINC&(1<<WORK))==0)
13e: 9c 99 sbic 0x13, 4 ; 19
140: 08 c0 rjmp .+16 ; 0x152 <KeyScan+0x2a>
{
//DelayMs(1);
if((Flag==1)&&(PINC&(1<<WORK))==0)
142: 80 91 61 00 lds r24, 0x0061
146: 81 30 cpi r24, 0x01 ; 1
148: c1 f4 brne .+48 ; 0x17a <KeyScan+0x52>
14a: 9c 99 sbic 0x13, 4 ; 19
14c: 16 c0 rjmp .+44 ; 0x17a <KeyScan+0x52>
{
ret=1;
14e: 98 2f mov r25, r24
150: 0b c0 rjmp .+22 ; 0x168 <KeyScan+0x40>
//AbandonFlag=1;
//break;
//puts("ret=");puts("0x01#");
// if(LedFlag==0){
LedSec=0;
PORTC|=(1<<6);//}//LED背光给电10秒
}
}
else if((PINC&(1<<ADJUST))==0)
152: 9d 99 sbic 0x13, 5 ; 19
154: 0c c0 rjmp .+24 ; 0x16e <KeyScan+0x46>
{
//DelayMs(1);
if((Flag==1)&&(PINC&(1<<ADJUST))==0)
156: 80 91 61 00 lds r24, 0x0061
15a: 81 30 cpi r24, 0x01 ; 1
15c: 71 f4 brne .+28 ; 0x17a <KeyScan+0x52>
15e: 9d 99 sbic 0x13, 5 ; 19
160: 0c c0 rjmp .+24 ; 0x17a <KeyScan+0x52>
{
ret=2;
162: 92 e0 ldi r25, 0x02 ; 2
//break;
//puts("ret=");puts("0x02#");
AdjustTimesFlag=1;
164: 80 93 6f 00 sts 0x006F, r24
//AbandonFlag=1;
// if(LedFlag==0){
LedSec=0;
168: 10 92 81 00 sts 0x0081, r1
16c: 05 c0 rjmp .+10 ; 0x178 <KeyScan+0x50>
PORTC|=(1<<6);//}//LED背光给电10秒
}
}
else if((PINB&(1<<RESET))==0)
16e: b1 99 sbic 0x16, 1 ; 22
170: 04 c0 rjmp .+8 ; 0x17a <KeyScan+0x52>
{
//DelayMs(1);
if((PINB&(1<<RESET))==0)
172: b1 99 sbic 0x16, 1 ; 22
174: 02 c0 rjmp .+4 ; 0x17a <KeyScan+0x52>
{
ret=3;
176: 93 e0 ldi r25, 0x03 ; 3
PORTC|=(1<<6);//}//LED背光给电10秒
178: ae 9a sbi 0x15, 6 ; 21
}
}
/******
while(((PINB&_BV(POWER))!=_BV(POWER))||((PINC&(_BV(WORK)|_BV(ADJUST)))!=(_BV(WORK)|_BV(ADJUST)))) //
{ DelayMs(1);}
********/
if(ret!=KeyOld)
17a: 80 91 6e 00 lds r24, 0x006E
17e: 98 17 cp r25, r24
180: a9 f0 breq .+42 ; 0x1ac <KeyScan+0x84>
{
if((PINB&(1<<POWER))==0)
182: b6 99 sbic 0x16, 6 ; 22
184: 05 c0 rjmp .+10 ; 0x190 <KeyScan+0x68>
{
DelayFlag=0;
186: 10 92 70 00 sts 0x0070, r1
Flag=0;
18a: 10 92 61 00 sts 0x0061, r1
18e: 08 c0 rjmp .+16 ; 0x1a0 <KeyScan+0x78>
//FirstFlag=1;
}
else
if((PINC&(1<<WORK))==0)
190: 9c 99 sbic 0x13, 4 ; 19
192: 06 c0 rjmp .+12 ; 0x1a0 <KeyScan+0x78>
{
Flag=0;
194: 10 92 61 00 sts 0x0061, r1
Time_minu=0;
198: 10 92 80 00 sts 0x0080, r1
Time_sec=0;
19c: 10 92 7b 00 sts 0x007B, r1
}
KeyOld=ret;
1a0: 90 93 6e 00 sts 0x006E, r25
return KeyOld;
1a4: 80 91 6e 00 lds r24, 0x006E
1a8: 99 27 eor r25, r25
1aa: 08 95 ret
}
else
{
/***
if(ret=2)
{
while((PINB&_BV(ADJUST))!=_BV(ADJUST))
{asm("nop"::);}
AdjustTimesFlag=1;
}
******/
return ret;
1ac: 89 2f mov r24, r25
1ae: 99 27 eor r25, r25
}
}
1b0: 08 95 ret
000001b2 <Reset_Source>:
1b2: 84 b7 in r24, 0x34 ; 52
1b4: 04 b6 in r0, 0x34 ; 52
1b6: 00 fc sbrc r0, 0
1b8: 03 c0 rjmp .+6 ; 0x1c0 <Reset_Source+0xe>
1ba: 04 b6 in r0, 0x34 ; 52
1bc: 01 fe sbrs r0, 1
1be: 02 c0 rjmp .+4 ; 0x1c4 <Reset_Source+0x12>
1c0: 14 be out 0x34, r1 ; 52
1c2: 08 95 ret
1c4: 84 b7 in r24, 0x34 ; 52
1c6: 99 27 eor r25, r25
1c8: 83 70 andi r24, 0x03 ; 3
1ca: 90 70 andi r25, 0x00 ; 0
1cc: 89 2b or r24, r25
1ce: 09 f0 breq .+2 ; 0x1d2 <Reset_Source+0x20>
1d0: 14 be out 0x34, r1 ; 52
1d2: 08 95 ret
000001d4 <Save_Flag>:
1d4: 8c b3 in r24, 0x1c ; 28
1d6: 99 27 eor r25, r25
1d8: dc 01 movw r26, r24
1da: a2 70 andi r26, 0x02 ; 2
1dc: b0 70 andi r27, 0x00 ; 0
1de: 81 fd sbrc r24, 1
1e0: f9 cf rjmp .-14 ; 0x1d4 <Save_Flag>
Write a byte \c value to EEPROM address \c addr. */
void
eeprom_write_byte (uint8_t *addr,uint8_t value)
{
1e2: 80 91 7c 00 lds r24, 0x007C
asm volatile (
1e6: 08 2e mov r0, r24
1e8: 25 da rcall .-2998 ; 0xfffff634 <__eeprom_end+0xff7ef634>
1ea: 08 95 ret
000001ec <AD_init>:
void putc(uchar c)
{
while(!(UCSRA&(1<<UDRE)));
UDR=c;
}
uchar getc(void)
{
while(!(UCSRA&(1<<RXC)));
return UDR;
}
void puts(char *ptr)
{
while (*ptr)
putc(*ptr++);
}
void AD_init(void)
{
ADCSRA=0X00;
1ec: 16 b8 out 0x06, r1 ; 6
ACSR|=(1<<ACD);//关闭模拟比较器
1ee: 47 9a sbi 0x08, 7 ; 8
ADMUX|=(1<<REFS0)|(6&0x0F); //
1f0: 87 b1 in r24, 0x07 ; 7
1f2: 86 64 ori r24, 0x46 ; 70
1f4: 87 b9 out 0x07, r24 ; 7
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1);//ADC转换 64分频
1f6: 86 ec ldi r24, 0xC6 ; 198
1f8: 86 b9 out 0x06, r24 ; 6
1fa: 08 95 ret
000001fc <Charge_Check>:
1fc: cf 93 push r28
1fe: 80 91 64 00 lds r24, 0x0064
202: 90 91 65 00 lds r25, 0x0065
206: 8a 3f cpi r24, 0xFA ; 250
208: 91 05 cpc r25, r1
20a: a0 f0 brcs .+40 ; 0x234 <Charge_Check+0x38>
20c: c1 e0 ldi r28, 0x01 ; 1
20e: c0 93 82 00 sts 0x0082, r28
212: 80 91 84 00 lds r24, 0x0084
216: 80 64 ori r24, 0x40 ; 64
218: 80 93 84 00 sts 0x0084, r24
21c: 10 92 81 00 sts 0x0081, r1
220: ae 9a sbi 0x15, 6 ; 21
222: 80 91 77 00 lds r24, 0x0077
226: 88 23 and r24, r24
228: 71 f4 brne .+28 ; 0x246 <Charge_Check+0x4a>
22a: 8c 2f mov r24, r28
22c: db d3 rcall .+1974 ; 0x9e4 <alarm_n_short>
22e: c0 93 77 00 sts 0x0077, r28
232: 09 c0 rjmp .+18 ; 0x246 <Charge_Check+0x4a>
234: 10 92 82 00 sts 0x0082, r1
238: 80 91 84 00 lds r24, 0x0084
23c: 8f 7b andi r24, 0xBF ; 191
23e: 80 93 84 00 sts 0x0084, r24
242: 10 92 77 00 sts 0x0077, r1
246: cf 91 pop r28
248: 08 95 ret
0000024a <Close>:
24a: c7 98 cbi 0x18, 7 ; 24
24c: 88 e1 ldi r24, 0x18 ; 24
24e: 90 e0 ldi r25, 0x00 ; 0
250: 2e e0 ldi r18, 0x0E ; 14
252: 0f b6 in r0, 0x3f ; 63
254: f8 94 cli
256: a8 95 wdr
258: 81 bd out 0x21, r24 ; 33
25a: 0f be out 0x3f, r0 ; 63
25c: 21 bd out 0x21, r18 ; 33
25e: a8 95 wdr
260: 08 95 ret
00000262 <Voltage_Check>:
262: 80 91 66 00 lds r24, 0x0066
266: 90 91 67 00 lds r25, 0x0067
26a: 86 53 subi r24, 0x36 ; 54
26c: 93 40 sbci r25, 0x03 ; 3
26e: 30 f0 brcs .+12 ; 0x27c <Voltage_Check+0x1a>
270: 84 e0 ldi r24, 0x04 ; 4
272: 80 93 62 00 sts 0x0062, r24
276: 81 e0 ldi r24, 0x01 ; 1
278: b5 d3 rcall .+1898 ; 0x9e4 <alarm_n_short>
27a: 4c c0 rjmp .+152 ; 0x314 <Voltage_Check+0xb2>
27c: 80 91 66 00 lds r24, 0x0066
280: 90 91 67 00 lds r25, 0x0067
284: 87 52 subi r24, 0x27 ; 39
286: 93 40 sbci r25, 0x03 ; 3
288: 48 f0 brcs .+18 ; 0x29c <Voltage_Check+0x3a>
28a: 80 91 66 00 lds r24, 0x0066
28e: 90 91 67 00 lds r25, 0x0067
292: 86 53 subi r24, 0x36 ; 54
294: 93 40 sbci r25, 0x03 ; 3
296: 10 f4 brcc .+4 ; 0x29c <Voltage_Check+0x3a>
298: 84 e0 ldi r24, 0x04 ; 4
29a: 1f c0 rjmp .+62 ; 0x2da <Voltage_Check+0x78>
29c: 80 91 66 00 lds r24, 0x0066
2a0: 90 91 67 00 lds r25, 0x0067
2a4: 88 50 subi r24, 0x08 ; 8
2a6: 93 40 sbci r25, 0x03 ; 3
2a8: 48 f0 brcs .+18 ; 0x2bc <Voltage_Check+0x5a>
2aa: 80 91 66 00 lds r24, 0x0066
2ae: 90 91 67 00 lds r25, 0x0067
2b2: 87 52 subi r24, 0x27 ; 39
2b4: 93 40 sbci r25, 0x03 ; 3
2b6: 10 f4 brcc .+4 ; 0x2bc <Voltage_Check+0x5a>
2b8: 83 e0 ldi r24, 0x03 ; 3
2ba: 0f c0 rjmp .+30 ; 0x2da <Voltage_Check+0x78>
2bc: 80 91 66 00 lds r24, 0x0066
2c0: 90 91 67 00 lds r25, 0x0067
2c4: 89 5e subi r24, 0xE9 ; 233
2c6: 92 40 sbci r25, 0x02 ; 2
2c8: 58 f0 brcs .+22 ; 0x2e0 <Voltage_Check+0x7e>
2ca: 80 91 66 00 lds r24, 0x0066
2ce: 90 91 67 00 lds r25, 0x0067
2d2: 88 50 subi r24, 0x08 ; 8
2d4: 93 40 sbci r25, 0x03 ; 3
2d6: 20 f4 brcc .+8 ; 0x2e0 <Voltage_Check+0x7e>
2d8: 82 e0 ldi r24, 0x02 ; 2
2da: 80 93 62 00 sts 0x0062, r24
2de: 1a c0 rjmp .+52 ; 0x314 <Voltage_Check+0xb2>
2e0: 80 91 66 00 lds r24, 0x0066
2e4: 90 91 67 00 lds r25, 0x0067
2e8: 8a 5c subi r24, 0xCA ; 202
2ea: 92 40 sbci r25, 0x02 ; 2
2ec: 50 f0 brcs .+20 ; 0x302 <Voltage_Check+0xa0>
2ee: 80 91 66 00 lds r24, 0x0066
2f2: 90 91 67 00 lds r25, 0x0067
2f6: 89 5e subi r24, 0xE9 ; 233
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -