📄 main.lst
字号:
02C8 F560 BCC 0x02F5
02C9 EB88 LDI R24,0xB8
02CA E09B LDI R25,0xB
02CB 1582 CP R24,R2
02CC 0593 CPC R25,R3
02CD F138 BCS 0x02F5
(0340) {
(0341) temp = V[2]-V[1];
02CE 9020011E LDS R2,V+2
02D0 9030011F LDS R3,V+3
02D2 91400120 LDS R20,0x120
02D4 91500121 LDS R21,0x121
02D6 1942 SUB R20,R2
02D7 0953 SBC R21,R3
(0342) if(temp<101) flas3 = 1;
02D8 3645 CPI R20,0x65
02D9 E0E0 LDI R30,0
02DA 075E CPC R21,R30
02DB F420 BCC 0x02E0
02DC E081 LDI R24,1
02DD 93800103 STS flas3,R24
02DF C003 RJMP 0x02E3
(0343) else flas3 = 0;
02E0 2422 CLR R2
02E1 92200103 STS flas3,R2
(0344)
(0345) if(led_time<80 && flas3)
02E3 91800107 LDS R24,led_time
02E5 3580 CPI R24,0x50
02E6 F448 BCC 0x02F0
02E7 90200103 LDS R2,flas3
02E9 2022 TST R2
02EA F029 BEQ 0x02F0
(0346) {
(0347) CLR_LED1;
02EB 985C CBI 0x0B,4
(0348) CLR_LED2;
02EC 985B CBI 0x0B,3
(0349) CLR_LED3;
02ED 9859 CBI 0x0B,1
(0350) CLR_LED4;
02EE 9858 CBI 0x0B,0
(0351) }
02EF C034 RJMP 0x0324
(0352) else
(0353) {
(0354) CLR_LED1;
02F0 985C CBI 0x0B,4
(0355) CLR_LED2;
02F1 985B CBI 0x0B,3
(0356) SET_LED3;
02F2 9A59 SBI 0x0B,1
(0357) CLR_LED4;
02F3 9858 CBI 0x0B,0
(0358) }
(0359)
(0360) }
02F4 C02F RJMP 0x0324
(0361) else if(batt_num>3000)
02F5 EB88 LDI R24,0xB8
02F6 E09B LDI R25,0xB
02F7 90200113 LDS R2,batt_num
02F9 90300114 LDS R3,batt_num+1
02FB 1582 CP R24,R2
02FC 0593 CPC R25,R3
02FD F530 BCC 0x0324
(0362) {
(0363) temp = V[3]-V[2];
02FE 90200120 LDS R2,0x120
0300 90300121 LDS R3,0x121
0302 91400122 LDS R20,0x122
0304 91500123 LDS R21,0x123
0306 1942 SUB R20,R2
0307 0953 SBC R21,R3
(0364) if(temp<101) flas4 = 1;
0308 3645 CPI R20,0x65
0309 E0E0 LDI R30,0
030A 075E CPC R21,R30
030B F420 BCC 0x0310
030C E081 LDI R24,1
030D 93800102 STS flas4,R24
030F C003 RJMP 0x0313
(0365) else flas4 = 0;
0310 2422 CLR R2
0311 92200102 STS flas4,R2
(0366)
(0367) if(led_time<80 && flas4)
0313 91800107 LDS R24,led_time
0315 3580 CPI R24,0x50
0316 F448 BCC 0x0320
0317 90200102 LDS R2,flas4
0319 2022 TST R2
031A F029 BEQ 0x0320
(0368) {
(0369) CLR_LED1;
031B 985C CBI 0x0B,4
(0370) CLR_LED2;
031C 985B CBI 0x0B,3
(0371) CLR_LED3;
031D 9859 CBI 0x0B,1
(0372) CLR_LED4;
031E 9858 CBI 0x0B,0
(0373) }
031F C004 RJMP 0x0324
(0374) else
(0375) {
(0376) CLR_LED1;
0320 985C CBI 0x0B,4
(0377) CLR_LED2;
0321 985B CBI 0x0B,3
(0378) CLR_LED3;
0322 9859 CBI 0x0B,1
(0379) SET_LED4;
0323 9A58 SBI 0x0B,0
(0380) }
(0381)
(0382) }
(0383)
(0384) temp = ((temp*125)/256)*5;
0324 E70D LDI R16,0x7D
0325 E010 LDI R17,0
0326 019A MOVW R18,R20
0327 D27C RCALL empy16s
0328 0198 MOVW R18,R16
0329 2F23 MOV R18,R19
032A 2733 CLR R19
032B E005 LDI R16,5
032C E010 LDI R17,0
032D D276 RCALL empy16s
032E 01A8 MOVW R20,R16
(0385)
(0386) }
032F C02A RJMP 0x035A
(0387) else if(mode==1)
0330 91800112 LDS R24,mode
0332 3081 CPI R24,1
0333 F441 BNE 0x033C
(0388) {
(0389) SET_LED1;
0334 9A5C SBI 0x0B,4
(0390) SET_LED2;
0335 9A5B SBI 0x0B,3
(0391) CLR_LED3;
0336 9859 CBI 0x0B,1
(0392) CLR_LED4;
0337 9858 CBI 0x0B,0
(0393) temp = out_time;
0338 91400111 LDS R20,out_time
033A 2755 CLR R21
(0394) }
033B C01E RJMP 0x035A
(0395) else if(mode==2)
033C 91800112 LDS R24,mode
033E 3082 CPI R24,2
033F F441 BNE 0x0348
(0396) {
(0397) SET_LED1;
0340 9A5C SBI 0x0B,4
(0398) SET_LED2;
0341 9A5B SBI 0x0B,3
(0399) SET_LED3;
0342 9A59 SBI 0x0B,1
(0400) CLR_LED4;
0343 9858 CBI 0x0B,0
(0401) temp = out_time;
0344 91400111 LDS R20,out_time
0346 2755 CLR R21
(0402) }
0347 C012 RJMP 0x035A
(0403) else if(mode==3)
0348 91800112 LDS R24,mode
034A 3083 CPI R24,3
034B F471 BNE 0x035A
(0404) {
(0405) SET_LED1;
034C 9A5C SBI 0x0B,4
(0406) SET_LED2;
034D 9A5B SBI 0x0B,3
(0407) SET_LED3;
034E 9A59 SBI 0x0B,1
(0408) SET_LED4;
034F 9A58 SBI 0x0B,0
(0409) temp = (CH.temp+5)/10;
0350 E02A LDI R18,0xA
0351 E030 LDI R19,0
0352 91000124 LDS R16,CH
0354 91100125 LDS R17,CH+1
0356 5F0B SUBI R16,0xFB
0357 4F1F SBCI R17,0xFF
0358 D231 RCALL div16u
0359 01A8 MOVW R20,R16
(0410) }
(0411)
(0412) h = temp/100;
035A E624 LDI R18,0x64
035B E030 LDI R19,0
035C 018A MOVW R16,R20
035D D22C RCALL div16u
035E 2EA0 MOV R10,R16
(0413) m = temp%100/10;
035F E624 LDI R18,0x64
0360 E030 LDI R19,0
0361 018A MOVW R16,R20
0362 D225 RCALL mod16u
0363 E02A LDI R18,0xA
0364 E030 LDI R19,0
0365 D224 RCALL div16u
0366 2F60 MOV R22,R16
(0414) l = temp%100%10;
0367 E624 LDI R18,0x64
0368 E030 LDI R19,0
0369 018A MOVW R16,R20
036A D21D RCALL mod16u
036B E02A LDI R18,0xA
036C E030 LDI R19,0
036D D21A RCALL mod16u
036E 2F40 MOV R20,R16
(0415)
(0416) dip_bit ++;
036F 91800115 LDS R24,dip_bit
0371 5F8F SUBI R24,0xFF
0372 93800115 STS dip_bit,R24
(0417)
(0418) if(dip_bit==2)
0374 3082 CPI R24,2
0375 F479 BNE 0x0385
(0419) {
(0420) SET_COM1;
0376 9A5F SBI 0x0B,7
(0421) CLR_COM2;
0377 985E CBI 0x0B,6
(0422) CLR_COM3;
0378 985D CBI 0x0B,5
(0423) PORTB = Char_tab[h] | dp;
0379 E384 LDI R24,0x34
037A E090 LDI R25,0
037B 2DEA MOV R30,R10
037C 27FF CLR R31
037D 0FE8 ADD R30,R24
037E 1FF9 ADC R31,R25
037F 91E4 LPM R30,0(Z)
0380 90200101 LDS R2,dp
0382 29E2 OR R30,R2
0383 B9E5 OUT 0x05,R30
(0424) }
0384 C022 RJMP 0x03A7
(0425) else if(dip_bit==4)
0385 91800115 LDS R24,dip_bit
0387 3084 CPI R24,4
0388 F461 BNE 0x0395
(0426) {
(0427) CLR_COM1;
0389 985F CBI 0x0B,7
(0428) SET_COM2;
038A 9A5E SBI 0x0B,6
(0429) CLR_COM3;
038B 985D CBI 0x0B,5
(0430) PORTB = Char_tab[m];
038C E384 LDI R24,0x34
038D E090 LDI R25,0
038E 2FE6 MOV R30,R22
038F 27FF CLR R31
0390 0FE8 ADD R30,R24
0391 1FF9 ADC R31,R25
0392 91E4 LPM R30,0(Z)
0393 B9E5 OUT 0x05,R30
(0431) }
0394 C012 RJMP 0x03A7
(0432) else if(dip_bit==6)
0395 91800115 LDS R24,dip_bit
0397 3086 CPI R24,6
0398 F471 BNE 0x03A7
(0433) {
(0434) CLR_COM1;
0399 985F CBI 0x0B,7
(0435) CLR_COM2;
039A 985E CBI 0x0B,6
(0436) SET_COM3;
039B 9A5D SBI 0x0B,5
(0437) PORTB = Char_tab[l];
039C E384 LDI R24,0x34
039D E090 LDI R25,0
039E 2FE4 MOV R30,R20
039F 27FF CLR R31
03A0 0FE8 ADD R30,R24
03A1 1FF9 ADC R31,R25
03A2 91E4 LPM R30,0(Z)
03A3 B9E5 OUT 0x05,R30
(0438) dip_bit = 0;
03A4 2422 CLR R2
03A5 92200115 STS dip_bit,R2
(0439) }
03A7 D20C RCALL pop_gset3
03A8 9508 RET
(0440) }
(0441)
(0442)
(0443) /*---------------------------------------------------------------
(0444) 按键扫描
(0445) ----------------------------------------------------------------*/
(0446)
(0447) void key_scan(void)
(0448) {
(0449) uchar temp;
(0450)
(0451) PORTC |= 0x0C;
_key_scan:
temp --> R16
03A9 B188 IN R24,0x08
03AA 608C ORI R24,0xC
03AB B988 OUT 0x08,R24
(0452)
(0453) asm("nop"); asm("nop");
03AC 0000 NOP
03AD 0000 NOP
(0454)
(0455) temp = PINC & 0x0C;
03AE B106 IN R16,0x06
03AF 700C ANDI R16,0xC
(0456)
(0457) if(temp==0x00) // 双键
03B0 F009 BEQ 0x03B2
03B1 C049 RJMP 0x03FB
(0458) {
(0459) key ++;
03B2 9180010F LDS R24,key
03B4 91900110 LDS R25,key+1
03B6 9601 ADIW R24,1
03B7 93900110 STS key+1,R25
03B9 9380010F STS key,R24
(0460) if(key>=400)
03BB 3980 CPI R24,0x90
03BC E0E1 LDI R30,1
03BD 079E CPC R25,R30
03BE F408 BCC 0x03C0
03BF C041 RJMP 0x0401
(0461) {
(0462) key = 0;
03C0 2422 CLR R2
03C1 2433 CLR R3
03C2 92300110 STS key+1,R3
03C4 9220010F STS key,R2
(0463) mode ++;
03C6 91800112 LDS R24,mode
03C8 5F8F SUBI R24,0xFF
03C9 93800112 STS mode,R24
(0464)
(0465) if(mode==1||mode==2)
03CB 3081 CPI R24,1
03CC F011 BEQ 0x03CF
03CD 3082 CPI R24,2
03CE F469 BNE 0x03DC
(0466) {
(0467) DDRD = 0xFF;
03CF EF8F LDI R24,0xFF
03D0 B98A OUT 0x0A,R24
(0468) TIMSK1 = 0x01; // 开T1中断
03D1 E081 LDI R24,1
03D2 9380006F STS 0x6F,R24
(0469) EIMSK = 0x00;
03D4 2422 CLR R2
03D5 BA2D OUT 0x1D,R2
(0470) out_time = 150;
03D6 E986 LDI R24,0x96
03D7 93800111 STS out_time,R24
(0471) dp = 0x00;
03D9 92200101 STS dp,R2
(0472)
(0473) }
03DB C025 RJMP 0x0401
(0474) else if(mode==3)
03DC 91800112 LDS R24,mode
03DE 3083 CPI R24,3
03DF F469 BNE 0x03ED
(0475) {
(0476) DDRD = 0xFB;
03E0 EF8B LDI R24,0xFB
03E1 B98A OUT 0x0A,R24
(0477) TIMSK1 = 0x00; // 开T1中断
03E2 2422 CLR R2
03E3 9220006F STS 0x6F,R2
(0478) EICRA = 0x03; //extended ext ints
03E5 E083 LDI R24,3
03E6 93800069 STS 0x69,R24
(0479) EIMSK = 0x01;
03E8 E081 LDI R24,1
03E9 BB8D OUT 0x1D,R24
(0480) dp = 0x00;
03EA 92200101 STS dp,R2
(0481) }
03EC C014 RJMP 0x0401
(0482) else if(mode>=4)
03ED 91800112 LDS R24,mode
03EF 3084 CPI R24,4
03F0 F080 BCS 0x0401
(0483) {
(0484) TIMSK1 = 0x00; // 关T1中断
03F1 2422 CLR R2
03F2 9220006F STS 0x6F,R2
(0485) EIMSK = 0x00;
03F4 BA2D OUT 0x1D,R2
(0486) mode = 0;
03F5 92200112 STS mode,R2
(0487) dp = 0x02;
03F7 E082 LDI R24,2
03F8 93800101 STS dp,R24
(0488) }
(0489) }
(0490) }
03FA C006 RJMP 0x0401
(0491) else key = 0 ;
03FB 2422 CLR R2
03FC 2433 CLR R3
03FD 92300110 STS key+1,R3
03FF 9220010F STS key,R2
(0492)
(0493) if(temp==0x08&&mode==1) // k1
0401 3008 CPI R16,0x8
0402 F559 BNE 0x042E
0403 91800112 LDS R24,mode
0405 3081 CPI R24,1
0406 F539 BNE 0x042E
(0494) {
(0495) if(key1<500)
0407 9180010D LDS R24,key1
0409 9190010E LDS R25,key1+1
040B 3F84 CPI R24,0xF4
040C E0E1 LDI R30,1
040D 079E CPC R25,R30
040E F488 BCC 0x0420
(0496) {
(0497) key1 ++;
040F 9601 ADIW R24,1
0410 9390010E STS key1+1,R25
0412 9380010D STS key1,R24
(0498) if(key1==5) // 短按
0414 3085 CPI R24,5
0415 E0E0 LDI R30,0
0416 079E CPC R25,R30
0417 F4E1 BNE 0x0434
(0499) {
(0500) if(out_time<210) out_time ++;
0418 91800111 LDS R24,out_time
041A 3D82 CPI R24,0xD2
041B F4C0 BCC 0x0434
041C 5F8F SUBI R24,0xFF
041D 93800111 STS out_time,R24
(0501) }
(0502) }
041F C014 RJMP 0x0434
(0503) else // 长按
(0504) {
(0505) key1 = 490;
0420 EE8A LDI R24,0xEA
0421 E091 LDI R25,1
0422 9390010E STS key1+1,R25
0424 9380010D STS key1,R24
(0506) if(out_time<210) out_time ++;
0426 91800111 LDS R24,out_time
0428 3D82 CPI R24,0xD2
0429 F450 BCC 0x0434
042A 5F8F SUBI R24,0xFF
042B 93800111 STS out_time,R24
(0507) }
(0508) }
042D C006 RJMP 0x0434
(0509) else key1 = 0;
042E 2422 CLR R2
042F 2433 CLR R3
0430 9230010E STS key1+1,R3
0432 9220010D STS key1,R2
(0510)
(0511) if(temp==0x04&&mode==1) // k2
0434 3004 CPI R16,4
0435 F579 BNE 0x0465
0436 91800112 LDS R24,mode
0438 3081 CPI R24,1
0439 F559 BNE 0x0465
(0512) {
(0513) if(key2<500)
043A 9180010B LDS R24,key2
043C 9190010C LDS R25,key2+1
043E 3F84 CPI R24,0xF4
043F E0E1 LDI R30,1
0440 079E CPC R25,R30
0441 F498 BCC 0x0455
(0514) {
(0515) key2 ++;
0442 9601 ADIW R24,1
0443 9390010C STS key2+1,R25
0445 9380010B STS key2,R24
(0516) if(key2==5) // 短按
0447 3085 CPI R24,5
0448 E0E0 LDI R30,0
0449 079E CPC R25,R30
044A F501 BNE 0x046B
(0517) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -