📄 pro.lst
字号:
038D 9D82 MUL R24,R2
038E 01F0 MOVW R30,R0
038F EE85 LDI R24,0xE5
0390 E090 LDI R25,0
0391 0FE8 ADD R30,R24
0392 1FF9 ADC R31,R25
0393 8351 STD Z+1,R21
0394 8340 STD Z+0,R20
0395 C061 RJMP 0x03F7
(0202)
(0203) case 4:temp=4;SET_VALUE[cn]=temp;break;
0396 E044 LDI R20,4
0397 E050 LDI R21,0
0398 90200087 LDS R2,cn
039A E082 LDI R24,2
039B 9D82 MUL R24,R2
039C 01F0 MOVW R30,R0
039D EE85 LDI R24,0xE5
039E E090 LDI R25,0
039F 0FE8 ADD R30,R24
03A0 1FF9 ADC R31,R25
03A1 8351 STD Z+1,R21
03A2 8340 STD Z+0,R20
03A3 C053 RJMP 0x03F7
(0204)
(0205) case 5:temp=5;SET_VALUE[cn]=temp;break;
03A4 E045 LDI R20,5
03A5 E050 LDI R21,0
03A6 90200087 LDS R2,cn
03A8 E082 LDI R24,2
03A9 9D82 MUL R24,R2
03AA 01F0 MOVW R30,R0
03AB EE85 LDI R24,0xE5
03AC E090 LDI R25,0
03AD 0FE8 ADD R30,R24
03AE 1FF9 ADC R31,R25
03AF 8351 STD Z+1,R21
03B0 8340 STD Z+0,R20
03B1 C045 RJMP 0x03F7
(0206)
(0207) case 6:temp=6;SET_VALUE[cn]=temp;break;
03B2 E046 LDI R20,6
03B3 E050 LDI R21,0
03B4 90200087 LDS R2,cn
03B6 E082 LDI R24,2
03B7 9D82 MUL R24,R2
03B8 01F0 MOVW R30,R0
03B9 EE85 LDI R24,0xE5
03BA E090 LDI R25,0
03BB 0FE8 ADD R30,R24
03BC 1FF9 ADC R31,R25
03BD 8351 STD Z+1,R21
03BE 8340 STD Z+0,R20
03BF C037 RJMP 0x03F7
(0208)
(0209) case 7:temp=7;SET_VALUE[cn]=temp;break;
03C0 E047 LDI R20,7
03C1 E050 LDI R21,0
03C2 90200087 LDS R2,cn
03C4 E082 LDI R24,2
03C5 9D82 MUL R24,R2
03C6 01F0 MOVW R30,R0
03C7 EE85 LDI R24,0xE5
03C8 E090 LDI R25,0
03C9 0FE8 ADD R30,R24
03CA 1FF9 ADC R31,R25
03CB 8351 STD Z+1,R21
03CC 8340 STD Z+0,R20
03CD C029 RJMP 0x03F7
(0210)
(0211) case 8:temp=8;SET_VALUE[cn]=temp;break;
03CE E048 LDI R20,0x8
03CF E050 LDI R21,0
03D0 90200087 LDS R2,cn
03D2 E082 LDI R24,2
03D3 9D82 MUL R24,R2
03D4 01F0 MOVW R30,R0
03D5 EE85 LDI R24,0xE5
03D6 E090 LDI R25,0
03D7 0FE8 ADD R30,R24
03D8 1FF9 ADC R31,R25
03D9 8351 STD Z+1,R21
03DA 8340 STD Z+0,R20
03DB C01B RJMP 0x03F7
(0212)
(0213) case 9:temp=9;SET_VALUE[cn]=temp;break;
03DC E049 LDI R20,0x9
03DD E050 LDI R21,0
03DE 90200087 LDS R2,cn
03E0 E082 LDI R24,2
03E1 9D82 MUL R24,R2
03E2 01F0 MOVW R30,R0
03E3 EE85 LDI R24,0xE5
03E4 E090 LDI R25,0
03E5 0FE8 ADD R30,R24
03E6 1FF9 ADC R31,R25
03E7 8351 STD Z+1,R21
03E8 8340 STD Z+0,R20
03E9 C00D RJMP 0x03F7
(0214)
(0215) case 13:temp=0x2e;SET_VALUE[cn]=temp;break;
03EA E24E LDI R20,0x2E
03EB E050 LDI R21,0
03EC 90200087 LDS R2,cn
03EE E082 LDI R24,2
03EF 9D82 MUL R24,R2
03F0 01F0 MOVW R30,R0
03F1 EE85 LDI R24,0xE5
03F2 E090 LDI R25,0
03F3 0FE8 ADD R30,R24
03F4 1FF9 ADC R31,R25
03F5 8351 STD Z+1,R21
03F6 8340 STD Z+0,R20
(0216)
(0217)
(0218) }
(0219)
(0220) if((cn==2)&&(SET_VALUE[2]!=0x2e))
03F7 91800087 LDS R24,cn
03F9 3082 CPI R24,2
03FA F491 BNE 0x040D
03FB 918000E9 LDS R24,0xE9
03FD 919000EA LDS R25,0xEA
03FF 328E CPI R24,0x2E
0400 E0E0 LDI R30,0
0401 079E CPC R25,R30
0402 F051 BEQ 0x040D
(0221) {
(0222) Write_Position(1,5);
0403 E025 LDI R18,5
0404 E030 LDI R19,0
0405 E001 LDI R16,1
0406 E010 LDI R17,0
0407 940E074E CALL _Write_Position
(0223) Write_String(error);
0409 EB02 LDI R16,0xB2
040A E010 LDI R17,0
040B 940E0768 CALL _Write_String
(0224) }
(0225) Set_Value=10*SET_VALUE[1]+SET_VALUE[3];
040D 912000E7 LDS R18,SET_VALUE+2
040F 913000E8 LDS R19,SET_VALUE+3
0411 E00A LDI R16,0xA
0412 E010 LDI R17,0
0413 940E086D CALL empy16s
0415 0118 MOVW R2,R16
0416 904000EB LDS R4,0xEB
0418 905000EC LDS R5,0xEC
041A 0C24 ADD R2,R4
041B 1C35 ADC R3,R5
041C 92300077 STS Set_Value+1,R3
041E 92200076 STS Set_Value,R2
(0226) Display_VOL();
0420 DD4B RCALL _Display_VOL
(0227) }
(0228)
(0229) if(cn == 3)//输入预定电压值完毕
0421 91800087 LDS R24,cn
0423 3083 CPI R24,3
0424 F459 BNE 0x0430
(0230) {
(0231)
(0232) if(KeyScan()==14)//等待ENTER键按下
0425 DE0A RCALL _KeyScan
0426 300E CPI R16,0xE
0427 E0E0 LDI R30,0
0428 071E CPC R17,R30
0429 F431 BNE 0x0430
(0233) {
(0234) cn=0;
042A 2422 CLR R2
042B 92200087 STS cn,R2
(0235) ENTER=1;
042D E081 LDI R24,1
042E 93800085 STS ENTER,R24
(0236) }
(0237) }
(0238)
(0239) if(KeyScan()==11)
0430 DDFF RCALL _KeyScan
0431 300B CPI R16,0xB
0432 E0E0 LDI R30,0
0433 071E CPC R17,R30
0434 F419 BNE 0x0438
(0240) {
(0241) ahead_flag=1;
0435 E081 LDI R24,1
0436 93800083 STS ahead_flag,R24
(0242) }
(0243) if(KeyScan()==10)
0438 DDF7 RCALL _KeyScan
0439 300A CPI R16,0xA
043A E0E0 LDI R30,0
043B 071E CPC R17,R30
043C F419 BNE 0x0440
(0244) {
(0245) back_flag=1;
043D E081 LDI R24,1
043E 93800084 STS back_flag,R24
(0246) }
(0247) if(KeyScan()== 12)
0440 DDEF RCALL _KeyScan
0441 300C CPI R16,0xC
0442 E0E0 LDI R30,0
0443 071E CPC R17,R30
0444 F419 BNE 0x0448
(0248) {
(0249) clear_flag=1;
0445 E081 LDI R24,1
0446 93800082 STS clear_flag,R24
(0250) }
0448 940E08AD CALL pop_gset2
044A 9508 RET
_signal_function:
i --> R20
044B 940E08BE CALL push_gset1
(0251)
(0252)
(0253)
(0254) }
(0255)
(0256) static uchar auto_flag=0;
(0257) void signal_function(void)
(0258) {
(0259) switch(auto_flag)
044D 914000B8 LDS R20,auto_flag
044F 2755 CLR R21
0450 3040 CPI R20,0
0451 0745 CPC R20,R21
0452 F0A1 BEQ 0x0467
0453 3041 CPI R20,1
0454 E0E0 LDI R30,0
0455 075E CPC R21,R30
0456 F121 BEQ 0x047B
0457 3042 CPI R20,2
0458 E0E0 LDI R30,0
0459 075E CPC R21,R30
045A F409 BNE 0x045C
045B C046 RJMP 0x04A2
045C 3043 CPI R20,3
045D E0E0 LDI R30,0
045E 075E CPC R21,R30
045F F409 BNE 0x0461
0460 C06C RJMP 0x04CD
0461 3044 CPI R20,4
0462 E0E0 LDI R30,0
0463 075E CPC R21,R30
0464 F409 BNE 0x0466
0465 C08B RJMP 0x04F1
0466 C0AE RJMP 0x0515
(0260) {
(0261) case 0:Write_Position(1,12);
0467 E02C LDI R18,0xC
0468 E030 LDI R19,0
0469 E001 LDI R16,1
046A E010 LDI R17,0
046B 940E074E CALL _Write_Position
(0262) Write_String("off");
046D EC0D LDI R16,0xCD
046E E010 LDI R17,0
046F 940E0768 CALL _Write_String
(0263) if(KeyScan()==15)
0471 DDBE RCALL _KeyScan
0472 300F CPI R16,0xF
0473 E0E0 LDI R30,0
0474 071E CPC R17,R30
0475 F009 BEQ 0x0477
0476 C09E RJMP 0x0515
(0264) auto_flag=1;
0477 E081 LDI R24,1
0478 938000B8 STS auto_flag,R24
(0265) break;
047A C09A RJMP 0x0515
(0266) case 1:
(0267) Write_Position(1,12);
047B E02C LDI R18,0xC
047C E030 LDI R19,0
047D E001 LDI R16,1
047E E010 LDI R17,0
047F 940E074E CALL _Write_Position
(0268) Write_String("+ ");
0481 EC09 LDI R16,0xC9
0482 E010 LDI R17,0
0483 940E0768 CALL _Write_String
(0269) if(Set_Value<99)
0485 91800076 LDS R24,Set_Value
0487 91900077 LDS R25,Set_Value+1
0489 3683 CPI R24,0x63
048A E0E0 LDI R30,0
048B 079E CPC R25,R30
048C F440 BCC 0x0495
(0270) {
(0271) Set_Value++;
048D 9601 ADIW R24,1
048E 93900077 STS Set_Value+1,R25
0490 93800076 STS Set_Value,R24
(0272) DAC_DATA=Set_Value;
0492 BB88 OUT 0x18,R24
(0273) control();
0493 D10E RCALL _control
(0274) }
0494 C003 RJMP 0x0498
(0275) else
(0276) auto_flag=2;
0495 E082 LDI R24,2
0496 938000B8 STS auto_flag,R24
(0277) if(KeyScan()==15)
0498 DD97 RCALL _KeyScan
0499 300F CPI R16,0xF
049A E0E0 LDI R30,0
049B 071E CPC R17,R30
049C F009 BEQ 0x049E
049D C077 RJMP 0x0515
(0278) auto_flag=2;
049E E082 LDI R24,2
049F 938000B8 STS auto_flag,R24
(0279) break;
04A1 C073 RJMP 0x0515
(0280) case 2:
(0281) Write_Position(1,12);
04A2 E02C LDI R18,0xC
04A3 E030 LDI R19,0
04A4 E001 LDI R16,1
04A5 E010 LDI R17,0
04A6 940E074E CALL _Write_Position
(0282) Write_String("- ");
04A8 EC05 LDI R16,0xC5
04A9 E010 LDI R17,0
04AA 940E0768 CALL _Write_String
(0283) if(Set_Value>0)
04AC 90200076 LDS R2,Set_Value
04AE 90300077 LDS R3,Set_Value+1
04B0 2022 TST R2
04B1 F411 BNE 0x04B4
04B2 2033 TST R3
04B3 F061 BEQ 0x04C0
(0284) {
(0285) Set_Value--;
04B4 91800076 LDS R24,Set_Value
04B6 91900077 LDS R25,Set_Value+1
04B8 9701 SBIW R24,1
04B9 93900077 STS Set_Value+1,R25
04BB 93800076 STS Set_Value,R24
(0286) DAC_DATA=Set_Value;
04BD BB88 OUT 0x18,R24
(0287) control();
04BE D0E3 RCALL _control
(0288) }
04BF C003 RJMP 0x04C3
(0289) else
(0290) auto_flag=1;
04C0 E081 LDI R24,1
04C1 938000B8 STS auto_flag,R24
(0291) if(KeyScan()==15)
04C3 DD6C RCALL _KeyScan
04C4 300F CPI R16,0xF
04C5 E0E0 LDI R30,0
04C6 071E CPC R17,R30
04C7 F009 BEQ 0x04C9
04C8 C04C RJMP 0x0515
(0292) auto_flag=3;
04C9 E083 LDI R24,3
04CA 938000B8 STS auto_flag,R24
(0293) break;
04CC C048 RJMP 0x0515
(0294) case 3:Write_Position(1,12);
04CD E02C LDI R18,0xC
04CE E030 LDI R19,0
04CF E001 LDI R16,1
04D0 E010 LDI R17,0
04D1 940E074E CALL _Write_Position
(0295) Write_String("squ");
04D3 EC01 LDI R16,0xC1
04D4 E010 LDI R17,0
04D5 940E0768 CALL _Write_String
04D7 C014 RJMP 0x04EC
(0296) while(auto_flag ==3)
(0297) {
(0298) DAC_DATA=0x00;
04D8 2422 CLR R2
04D9 BA28 OUT 0x18,R2
(0299) delay_nms(50);
04DA E302 LDI R16,0x32
04DB E010 LDI R17,0
04DC 940E010B CALL _delay_nms
(0300) DAC_DATA=0xff;
04DE EF8F LDI R24,0xFF
04DF BB88 OUT 0x18,R24
(0301) delay_nms(10);
04E0 E00A LDI R16,0xA
04E1 E010 LDI R17,0
04E2 940E010B CALL _delay_nms
(0302) if(KeyScan()==15)
04E4 DD4B RCALL _KeyScan
04E5 300F CPI R16,0xF
04E6 E0E0 LDI R30,0
04E7 071E CPC R17,R30
04E8 F419 BNE 0x04EC
(0303) auto_flag=4;
04E9 E084 LDI R24,4
04EA 938000B8 STS auto_flag,R24
04EC 918000B8 LDS R24,auto_flag
04EE 3083 CPI R24,3
04EF F341 BEQ 0x04D8
(0304) }
(0305) break;
04F0 C024 RJMP 0x0515
(0306) case 4:
(0307) Write_Position(1,12);
04F1 E02C LDI R18,0xC
04F2 E030 LDI R19,0
04F3 E001 LDI R16,1
04F4 E010 LDI R17,0
04F5 940E074E CALL _Write_Position
(0308) Write_String("saw");
04F7 EB0D LDI R16,0xBD
04F8 E010 LDI R17,0
04F9 940E0768 CALL _Write_String
04FB C015 RJMP 0x0511
(0309) while(auto_flag == 4)
(0310) {
(0311) uint i=255;
04FC EF4F LDI R20,0xFF
04FD E050 LDI R21,0
(0312)
(0313) for(;i>0;i--)
04FE C007 RJMP 0x0506
(0314) {
(0315) DAC_DATA=i;
04FF BB48 OUT 0x18,R20
(0316) delay_nus(10);
0500 E00A LDI R16,0xA
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -