📄 atmega16test.lst
字号:
(0709) {
(0710) KindData[val_kind]=TRUE;
02FE EB88 LDI R24,0xB8
02FF E090 LDI R25,0
0300 91E00139 LDS R30,val_kind
0302 27FF CLR R31
0303 0FE8 ADD R30,R24
0304 1FF9 ADC R31,R25
0305 E081 LDI R24,1
0306 8380 STD Z+0,R24
(0711) val_kind++;
0307 91800139 LDS R24,val_kind
0309 5F8F SUBI R24,0xFF
030A 93800139 STS val_kind,R24
(0712)
(0713) }
030C C21B RJMP 0x0528
(0714) else val_kind=0;
030D 2422 CLR R2
030E 92200139 STS val_kind,R2
(0715) }
0310 C217 RJMP 0x0528
(0716) else if(ModeStatus==MODE_PASSWORD)
0311 9180013F LDS R24,ModeStatus
0313 3084 CPI R24,4
0314 F009 BEQ 0x0316
0315 C212 RJMP 0x0528
(0717) {
(0718) if(PassDate_flag==PASSWORD_SETUP)
0316 91800136 LDS R24,PassDate_flag
0318 3181 CPI R24,0x11
0319 F451 BNE 0x0324
(0719) {
(0720) if(KK<MAXNUMBER) KK++;
031A 858D LDD R24,Y+13
031B 859E LDD R25,Y+14
031C 3683 CPI R24,0x63
031D E0E0 LDI R30,0
031E 079E CPC R25,R30
031F F468 BCC 0x032D
0320 9601 ADIW R24,1
0321 879E STD Y+14,R25
0322 878D STD Y+13,R24
(0721)
(0722) }
0323 C009 RJMP 0x032D
(0723) else
(0724) {
(0725) if(KK<MAXDATE) KK++;
0324 858D LDD R24,Y+13
0325 859E LDD R25,Y+14
0326 3F8A CPI R24,0xFA
0327 E0E0 LDI R30,0
0328 079E CPC R25,R30
0329 F418 BCC 0x032D
032A 9601 ADIW R24,1
032B 879E STD Y+14,R25
032C 878D STD Y+13,R24
(0726) }
(0727) K1Count=0;
032D 2422 CLR R2
032E 9220013C STS K1Count,R2
(0728) //K4Count=0;
(0729) }
(0730) break;
0330 C1F7 RJMP 0x0528
(0731) case KEY_DOWN://k3
(0732) // DS1302_Init();
(0733) // ReadTime();
(0734) if(ModeStatus==MODE_LENGHT)
0331 9180013F LDS R24,ModeStatus
0333 3082 CPI R24,2
0334 F499 BNE 0x0348
(0735) {
(0736) if(val_lenght>MINVAL_LENGHT)
0335 E084 LDI R24,4
0336 E090 LDI R25,0
0337 90200134 LDS R2,val_lenght
0339 90300135 LDS R3,val_lenght+1
033B 1582 CP R24,R2
033C 0593 CPC R25,R3
033D F430 BCC 0x0344
(0737) val_lenght--;
033E 01C1 MOVW R24,R2
033F 9701 SBIW R24,1
0340 93900135 STS val_lenght+1,R25
0342 93800134 STS val_lenght,R24
(0738) K1Count=5;
0344 E085 LDI R24,5
0345 9380013C STS K1Count,R24
(0739)
(0740) }
0347 C1E0 RJMP 0x0528
(0741) else if(ModeStatus==MODE_KIND)
0348 9180013F LDS R24,ModeStatus
034A 3083 CPI R24,3
034B F4B9 BNE 0x0363
(0742) {
(0743) if(val_kind<MAXVAL_KIND)
034C 91800139 LDS R24,val_kind
034E 3780 CPI R24,0x70
034F F478 BCC 0x035F
(0744) {
(0745) KindData[val_kind]=FALSE;
0350 EB88 LDI R24,0xB8
0351 E090 LDI R25,0
0352 91E00139 LDS R30,val_kind
0354 27FF CLR R31
0355 0FE8 ADD R30,R24
0356 1FF9 ADC R31,R25
0357 2422 CLR R2
0358 8220 STD Z+0,R2
(0746) val_kind++;
0359 91800139 LDS R24,val_kind
035B 5F8F SUBI R24,0xFF
035C 93800139 STS val_kind,R24
(0747) }
035E C1C9 RJMP 0x0528
(0748) else val_kind=0;
035F 2422 CLR R2
0360 92200139 STS val_kind,R2
(0749) }
0362 C1C5 RJMP 0x0528
(0750) else if(ModeStatus==MODE_PASSWORD)
0363 9180013F LDS R24,ModeStatus
0365 3084 CPI R24,4
0366 F009 BEQ 0x0368
0367 C1C0 RJMP 0x0528
(0751) {
(0752) if(KK>0) KK--;
0368 840D LDD R0,Y+13
0369 841E LDD R1,Y+14
036A 2000 TST R0
036B F411 BNE 0x036E
036C 2011 TST R1
036D F029 BEQ 0x0373
036E 858D LDD R24,Y+13
036F 859E LDD R25,Y+14
0370 9701 SBIW R24,1
0371 879E STD Y+14,R25
0372 878D STD Y+13,R24
(0753) K1Count=0;
0373 2422 CLR R2
0374 9220013C STS K1Count,R2
(0754) // K4Count=0;
(0755) }
(0756) break;
0376 C1B1 RJMP 0x0528
(0757) case KEY_FUNCTION://k1
(0758) BackKey=CurrentKey;
0377 9020013E LDS R2,CurrentKey
0379 9220013D STS BackKey,R2
(0759) CurrentKey=KEY_FUNCTION;
037B E483 LDI R24,0x43
037C 9380013E STS CurrentKey,R24
(0760) K1Count++;
037E 9180013C LDS R24,K1Count
0380 5F8F SUBI R24,0xFF
0381 9380013C STS K1Count,R24
(0761) switch(ModeStatus)
0383 90E0013F LDS R14,ModeStatus
0385 24FF CLR R15
0386 01C7 MOVW R24,R14
0387 3081 CPI R24,1
0388 E0E0 LDI R30,0
0389 079E CPC R25,R30
038A F069 BEQ 0x0398
038B 3082 CPI R24,2
038C E0E0 LDI R30,0
038D 079E CPC R25,R30
038E F069 BEQ 0x039C
038F 3083 CPI R24,3
0390 E0E0 LDI R30,0
0391 079E CPC R25,R30
0392 F109 BEQ 0x03B4
0393 3084 CPI R24,4
0394 E0E0 LDI R30,0
0395 079E CPC R25,R30
0396 F141 BEQ 0x03BF
0397 C190 RJMP 0x0528
(0762) {
(0763) case MODE_NOMALE:
(0764) ModeStatus=MODE_LENGHT;
0398 E082 LDI R24,2
0399 9380013F STS ModeStatus,R24
(0765) break;
039B C18C RJMP 0x0528
(0766) case MODE_LENGHT:
(0767) if(K1Count==2)
039C 9180013C LDS R24,K1Count
039E 3082 CPI R24,2
039F F421 BNE 0x03A4
(0768) {
(0769) ModeStatus=MODE_KIND;
03A0 E083 LDI R24,3
03A1 9380013F STS ModeStatus,R24
(0770) }
03A3 C184 RJMP 0x0528
(0771) else if(K1Count==7) //base 5
03A4 9180013C LDS R24,K1Count
03A6 3087 CPI R24,7
03A7 F009 BEQ 0x03A9
03A8 C17F RJMP 0x0528
(0772) {
(0773) K1Count=0;
03A9 2422 CLR R2
03AA 9220013C STS K1Count,R2
(0774) ModeStatus=MODE_NOMALE;
03AC E081 LDI R24,1
03AD 9380013F STS ModeStatus,R24
(0775) kind=0;
03AF 2400 CLR R0
03B0 860C STD Y+12,R0
(0776) EepromICnumberWr();
03B1 940E17E9 CALL _EepromICnumberWr
(0777) }
(0778) break;
03B3 C174 RJMP 0x0528
(0779) case MODE_KIND:
(0780) K1Count=0;
03B4 2422 CLR R2
03B5 9220013C STS K1Count,R2
(0781) ModeStatus=MODE_NOMALE;
03B7 E081 LDI R24,1
03B8 9380013F STS ModeStatus,R24
(0782) kind=0;
03BA 2400 CLR R0
03BB 860C STD Y+12,R0
(0783) EepromViewModeWr();
03BC 940E18F6 CALL _EepromViewModeWr
(0784) break;
03BE C169 RJMP 0x0528
(0785) case MODE_PASSWORD:
(0786) if(PassDate_flag==INVALE_SETUP || PassDate_flag==DATE_SETUP)
03BF 91800136 LDS R24,PassDate_flag
03C1 3383 CPI R24,0x33
03C2 F019 BEQ 0x03C6
03C3 3282 CPI R24,0x22
03C4 F009 BEQ 0x03C6
03C5 C162 RJMP 0x0528
(0787) {
(0788) PassDate_flag=DATE_SETUP;
03C6 E282 LDI R24,0x22
03C7 93800136 STS PassDate_flag,R24
(0789) if(K1Count==2)
03C9 9180013C LDS R24,K1Count
03CB 3082 CPI R24,2
03CC F009 BEQ 0x03CE
03CD C15A RJMP 0x0528
(0790) {
(0791) K1Count=0;
03CE 2422 CLR R2
03CF 9220013C STS K1Count,R2
(0792) ModeStatus=MODE_NOMALE;
03D1 E081 LDI R24,1
03D2 9380013F STS ModeStatus,R24
(0793) kind=0;
03D4 2400 CLR R0
03D5 860C STD Y+12,R0
(0794) DayData[0]=KK;
03D6 842D LDD R2,Y+13
03D7 843E LDD R3,Y+14
03D8 922000AC STS DayData,R2
(0795) DayData[1]=0x00;
03DA 2422 CLR R2
03DB 922000AD STS DayData+1,R2
(0796) EepromDayDataWr();
03DD 940E1950 CALL _EepromDayDataWr
(0797) }
(0798) }
(0799) break;
(0800) default:
(0801) break;
(0802) }
(0803) break;
03DF C148 RJMP 0x0528
(0804) case KEY_K4: //k4
(0805) if(ModeStatus==MODE_PASSWORD)
03E0 9180013F LDS R24,ModeStatus
03E2 3084 CPI R24,4
03E3 F009 BEQ 0x03E5
03E4 C143 RJMP 0x0528
(0806) {
(0807) if(PassDate_flag==INVALE_SETUP || PassDate_flag==PASSWORD_SETUP){
03E5 91800136 LDS R24,PassDate_flag
03E7 3383 CPI R24,0x33
03E8 F019 BEQ 0x03EC
03E9 3181 CPI R24,0x11
03EA F009 BEQ 0x03EC
03EB C13C RJMP 0x0528
(0808) PassDate_flag=PASSWORD_SETUP;
03EC E181 LDI R24,0x11
03ED 93800136 STS PassDate_flag,R24
(0809) // if(KK==0 && K4Count>0)
(0810) if(K4Count>5)
03EF E085 LDI R24,5
03F0 9020013B LDS R2,K4Count
03F2 1582 CP R24,R2
03F3 F008 BCS 0x03F5
03F4 C054 RJMP 0x0449
(0811) {
(0812) if(Password_Enable==FALSE)
03F5 90200137 LDS R2,Password_Enable
03F7 2022 TST R2
03F8 F471 BNE 0x0407
(0813) {
(0814) K1Count=0;
03F9 2422 CLR R2
03FA 9220013C STS K1Count,R2
(0815) ModeStatus=MODE_NOMALE;
03FC E081 LDI R24,1
03FD 9380013F STS ModeStatus,R24
(0816) kind=0;
03FF 2400 CLR R0
0400 860C STD Y+12,R0
(0817) EepromPasswordWr();
0401 940E1936 CALL _EepromPasswordWr
(0818) Password_Enable=TRUE;
0403 E081 LDI R24,1
0404 93800137 STS Password_Enable,R24
(0819) break;
0406 C121 RJMP 0x0528
(0820) }
(0821) else
(0822) {
(0823) if(tempPW[0]==PasswordData[0] &&tempPW[1]==PasswordData[1]&&tempPW[2]==PasswordData[2]&&tempPW[3]==PasswordData[3]&&tempPW[4]==PasswordData[4])
0407 902000B2 LDS R2,PasswordData
0409 8038 LDD R3,Y+0
040A 1432 CP R3,R2
040B F551 BNE 0x0436
040C 902000B3 LDS R2,PasswordData+1
040E 8039 LDD R3,Y+1
040F 1432 CP R3,R2
0410 F529 BNE 0x0436
0411 902000B4 LDS R2,PasswordData+2
0413 803A LDD R3,Y+2
0414 1432 CP R3,R2
0415 F501 BNE 0x0436
0416 902000B5 LDS R2,PasswordData+3
0418 803B LDD R3,Y+3
0419 1432 CP R3,R2
041A F4D9 BNE 0x0436
041B 902000B6 LDS R2,0xB6
041D 803C LDD R3,Y+4
041E 1432 CP R3,R2
041F F4B1 BNE 0x0436
(0824) {
(0825) ModeStatus=MODE_PASSWORD;
0420 E084 LDI R24,4
0421 9380013F STS ModeStatus,R24
(0826) PassDate_flag=PASSWORD_SETUP;
0423 E181 LDI R24,0x11
0424 93800136 STS PassDate_flag,R24
(0827) PwModify_flag=TRUE;
0426 E081 LDI R24,1
0427 E090 LDI R25,0
0428 93900129 STS PwModify_flag+1,R25
042A 93800128 STS PwModify_flag,R24
(0828) K1Count=0;
042C 2422 CLR R2
042D 9220013C STS K1Count,R2
(0829) K4Count=0;
042F 9220013B STS K4Count,R2
(0830) KK=0;
0431 2400 CLR R0
0432 2411 CLR R1
0433 861E STD Y+14,R1
0434 860D STD Y+13,R0
(0831) break;
0435 C0F2 RJMP 0x0528
(0832) }
(0833) else
(0834) {
(0835) if(PwModify_flag==3)
0436 91800128 LDS R24,PwModify_flag
0438 91900129 LDS R25,PwModify_flag+1
043A 3083 CPI R24,3
043B E0E0 LDI R30,0
043C 079E CPC R25,R30
043D F411 BNE 0x0440
(0836) {
(0837) EepromPasswordWr();
043E 940E1936 CALL _EepromPasswordWr
(0838) }
(0839) K1Count=0;
0440 2422 CLR R2
0441 9220013C STS K1Count,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -