+_-
来自「avr单片机icc写的密码锁」· 代码 · 共 1,672 行 · 第 1/4 页
TXT
1,672 行
00385 2700 CLR R16
00386 DDA2 RCALL _lcd_pos12864
(0108) write_dat12864(0X0f);
00387 E00F LDI R16,0xF
00388 DD8A RCALL _write_dat12864
(0109) write_dat12864(0X0f);
00389 E00F LDI R16,0xF
0038A DD88 RCALL _write_dat12864
(0110) break;}
0038B CF70 RJMP 0x02FC
(0111) case 5:
(0112) {lcd_pos12864(0,7);
0038C E027 LDI R18,7
0038D 2700 CLR R16
0038E DD9A RCALL _lcd_pos12864
(0113) write_dat12864(0X0f);
0038F E00F LDI R16,0xF
00390 DD82 RCALL _write_dat12864
(0114) break;}
00391 CF6A RJMP 0x02FC
(0115) case 6:
(0116) {lcd_pos12864(0,7);
00392 E027 LDI R18,7
00393 2700 CLR R16
00394 DD94 RCALL _lcd_pos12864
(0117) write_dat12864(0X0f);
00395 E00F LDI R16,0xF
00396 DD7C RCALL _write_dat12864
(0118) write_dat12864(0X0f);
00397 E00F LDI R16,0xF
00398 DD7A RCALL _write_dat12864
(0119) if(xg==3){
00399 9180 0063 LDS R24,xg
0039B 9190 0064 LDS R25,xg+1
0039D 3083 CPI R24,3
0039E E0E0 LDI R30,0
0039F 079E CPC R25,R30
003A0 F009 BEQ 0x03A2
003A1 C081 RJMP 0x0423
(0120) if(mimas[0]==mima_xg[0]&&mimas[1]==mima_xg[1]&&mimas[2]==mima_xg[2]&&mimas[3]==mima_xg[3]&&mimas[4]==mima_xg[4]&&mimas[5]==mima_xg[5])
003A2 9020 0073 LDS R2,mima_xg
003A4 9030 0067 LDS R3,mimas
003A6 1432 CP R3,R2
003A7 F009 BEQ 0x03A9
003A8 C05E RJMP 0x0407
003A9 9020 0074 LDS R2,mima_xg+1
003AB 9030 0068 LDS R3,mimas+1
003AD 1432 CP R3,R2
003AE F009 BEQ 0x03B0
003AF C057 RJMP 0x0407
003B0 9020 0075 LDS R2,mima_xg+2
003B2 9030 0069 LDS R3,mimas+2
003B4 1432 CP R3,R2
003B5 F009 BEQ 0x03B7
003B6 C050 RJMP 0x0407
003B7 9020 0076 LDS R2,mima_xg+3
003B9 9030 006A LDS R3,mimas+3
003BB 1432 CP R3,R2
003BC F009 BEQ 0x03BE
003BD C049 RJMP 0x0407
003BE 9020 0077 LDS R2,mima_xg+4
003C0 9030 006B LDS R3,mimas+4
003C2 1432 CP R3,R2
003C3 F009 BEQ 0x03C5
003C4 C042 RJMP 0x0407
003C5 9020 0078 LDS R2,mima_xg+5
003C7 9030 006C LDS R3,mimas+5
003C9 1432 CP R3,R2
003CA F009 BEQ 0x03CC
003CB C03B RJMP 0x0407
(0121) {for(i=0;i<6;i++)
003CC 2744 CLR R20
003CD 2755 CLR R21
003CE C018 RJMP 0x03E7
(0122) {
(0123) mimac[i]=mima_xg[i];
003CF E783 LDI R24,0x73
003D0 E090 LDI R25,0
003D1 01FA MOVW R30,R20
003D2 0FE8 ADD R30,R24
003D3 1FF9 ADC R31,R25
003D4 8020 LD R2,Z
003D5 E68D LDI R24,0x6D
003D6 E090 LDI R25,0
003D7 01FA MOVW R30,R20
003D8 0FE8 ADD R30,R24
003D9 1FF9 ADC R31,R25
003DA 8220 ST Z,R2
(0124) aa=mimac[i];
003DB 01FA MOVW R30,R20
003DC 0FE8 ADD R30,R24
003DD 1FF9 ADC R31,R25
003DE 8020 LD R2,Z
003DF 9220 0062 STS aa,R2
(0125) write_eep(i,aa);
003E1 2D22 MOV R18,R2
003E2 2733 CLR R19
003E3 018A MOVW R16,R20
003E4 DE0F RCALL _write_eep
003E5 5F4F SUBI R20,0xFF
003E6 4F5F SBCI R21,0xFF
003E7 3046 CPI R20,6
003E8 E0E0 LDI R30,0
003E9 075E CPC R21,R30
003EA F320 BCS 0x03CF
(0126) }
(0127) write_com12864(0x06);
003EB E006 LDI R16,6
003EC DD10 RCALL _write_com12864
(0128) delay(5);
003ED E005 LDI R16,5
003EE E010 LDI R17,0
003EF DCA3 RCALL _delay
(0129) lcd_pos12864(1,0);
003F0 2722 CLR R18
003F1 E001 LDI R16,1
003F2 DD36 RCALL _lcd_pos12864
(0130) writeString12864("密码修改成功!"),delay_ms(1000),write_com12864(0x01),
003F3 EB01 LDI R16,0xB1
003F4 E010 LDI R17,0
003F5 DD5A RCALL _writeString12864
003F6 EE08 LDI R16,0xE8
003F7 E013 LDI R17,3
003F8 DCB1 RCALL _delay_ms
003F9 E001 LDI R16,1
003FA DD02 RCALL _write_com12864
003FB E005 LDI R16,5
003FC E010 LDI R17,0
003FD DC95 RCALL _delay
003FE 2422 CLR R2
003FF 2433 CLR R3
00400 9230 0064 STS xg+1,R3
00402 9220 0063 STS xg,R2
00404 9220 0060 STS j,R2
(0131) delay(5),xg=0,j=0;}
00406 C01C RJMP 0x0423
(0132) else{write_com12864(0x06);
00407 E006 LDI R16,6
00408 DCF4 RCALL _write_com12864
(0133) delay(5);
00409 E005 LDI R16,5
0040A E010 LDI R17,0
0040B DC87 RCALL _delay
(0134) lcd_pos12864(1,0);
0040C 2722 CLR R18
0040D E001 LDI R16,1
0040E DD1A RCALL _lcd_pos12864
(0135) writeString12864("两次密码输入不一样!");delay_ms(1000),write_com12864(0x01),
0040F E90C LDI R16,0x9C
00410 E010 LDI R17,0
00411 DD3E RCALL _writeString12864
00412 EE08 LDI R16,0xE8
00413 E013 LDI R17,3
00414 DC95 RCALL _delay_ms
00415 E001 LDI R16,1
00416 DCE6 RCALL _write_com12864
00417 E005 LDI R16,5
00418 E010 LDI R17,0
00419 DC79 RCALL _delay
0041A E081 LDI R24,1
0041B E090 LDI R25,0
0041C 9390 0064 STS xg+1,R25
0041E 9380 0063 STS xg,R24
00420 2422 CLR R2
00421 9220 0060 STS j,R2
(0136) delay(5),xg=1,j=0;}
(0137) }
(0138) if(xg==2)
00423 9180 0063 LDS R24,xg
00425 9190 0064 LDS R25,xg+1
00427 3082 CPI R24,2
00428 E0E0 LDI R30,0
00429 079E CPC R25,R30
0042A F519 BNE 0x044E
(0139) {for(i=0;i<6;i++){mima_xg[i]=mimas[i];} j=0,write_com12864(0x01);
0042B 2744 CLR R20
0042C 2755 CLR R21
0042D C00E RJMP 0x043C
0042E E687 LDI R24,0x67
0042F E090 LDI R25,0
00430 01FA MOVW R30,R20
00431 0FE8 ADD R30,R24
00432 1FF9 ADC R31,R25
00433 8020 LD R2,Z
00434 E783 LDI R24,0x73
00435 E090 LDI R25,0
00436 01FA MOVW R30,R20
00437 0FE8 ADD R30,R24
00438 1FF9 ADC R31,R25
00439 8220 ST Z,R2
0043A 5F4F SUBI R20,0xFF
0043B 4F5F SBCI R21,0xFF
0043C 3046 CPI R20,6
0043D E0E0 LDI R30,0
0043E 075E CPC R21,R30
0043F F370 BCS 0x042E
00440 2422 CLR R2
00441 9220 0060 STS j,R2
00443 E001 LDI R16,1
00444 DCB8 RCALL _write_com12864
(0140) delay(5); xg=3;}
00445 E005 LDI R16,5
00446 E010 LDI R17,0
00447 DC4B RCALL _delay
00448 E083 LDI R24,3
00449 E090 LDI R25,0
0044A 9390 0064 STS xg+1,R25
0044C 9380 0063 STS xg,R24
(0141) if(xg<=1)
0044E E081 LDI R24,1
0044F E090 LDI R25,0
00450 9020 0063 LDS R2,xg
00452 9030 0064 LDS R3,xg+1
00454 1582 CP R24,R2
00455 0593 CPC R25,R3
00456 F408 BCC 0x0458
00457 CEA4 RJMP 0x02FC
(0142) {if(mimas[0]==mimac[0]&&mimas[1]==mimac[1]&&mimas[2]==mimac[2]&&mimas[3]==mimac[3]&&mimas[4]==mimac[4]&&mimas[5]==mimac[5])
00458 9020 006D LDS R2,mimac
0045A 9030 0067 LDS R3,mimas
0045C 1432 CP R3,R2
0045D F009 BEQ 0x045F
0045E C046 RJMP 0x04A5
0045F 9020 006E LDS R2,mimac+1
00461 9030 0068 LDS R3,mimas+1
00463 1432 CP R3,R2
00464 F009 BEQ 0x0466
00465 C03F RJMP 0x04A5
00466 9020 006F LDS R2,mimac+2
00468 9030 0069 LDS R3,mimas+2
0046A 1432 CP R3,R2
0046B F009 BEQ 0x046D
0046C C038 RJMP 0x04A5
0046D 9020 0070 LDS R2,mimac+3
0046F 9030 006A LDS R3,mimas+3
00471 1432 CP R3,R2
00472 F591 BNE 0x04A5
00473 9020 0071 LDS R2,mimac+4
00475 9030 006B LDS R3,mimas+4
00477 1432 CP R3,R2
00478 F561 BNE 0x04A5
00479 9020 0072 LDS R2,mimac+5
0047B 9030 006C LDS R3,mimas+5
0047D 1432 CP R3,R2
0047E F531 BNE 0x04A5
(0143) {
(0144) write_com12864(0x06);
0047F E006 LDI R16,6
00480 DC7C RCALL _write_com12864
(0145) delay(5);
00481 E005 LDI R16,5
00482 E010 LDI R17,0
00483 DC0F RCALL _delay
(0146) lcd_pos12864(1,0);
00484 2722 CLR R18
00485 E001 LDI R16,1
00486 DCA2 RCALL _lcd_pos12864
(0147) writeString12864("密码正确!");
00487 E901 LDI R16,0x91
00488 E010 LDI R17,0
00489 DCC6 RCALL _writeString12864
(0148) if(xg==1){delay_ms(1000),j=0,xg=2,write_com12864(0x01),
0048A 9180 0063 LDS R24,xg
0048C 9190 0064 LDS R25,xg+1
0048E 3081 CPI R24,1
0048F E0E0 LDI R30,0
00490 079E CPC R25,R30
00491 F009 BEQ 0x0493
00492 CE69 RJMP 0x02FC
00493 EE08 LDI R16,0xE8
00494 E013 LDI R17,3
00495 DC14 RCALL _delay_ms
00496 2422 CLR R2
00497 9220 0060 STS j,R2
00499 E082 LDI R24,2
0049A E090 LDI R25,0
0049B 9390 0064 STS xg+1,R25
0049D 9380 0063 STS xg,R24
0049F E001 LDI R16,1
004A0 DC5C RCALL _write_com12864
004A1 E005 LDI R16,5
004A2 E010 LDI R17,0
004A3 DBEF RCALL _delay
(0149) delay(5);}
(0150) }
004A4 CE57 RJMP 0x02FC
(0151) else{ if(suo<=1){
004A5 E081 LDI R24,1
004A6 E090 LDI R25,0
004A7 9020 0065 LDS R2,suo
004A9 9030 0066 LDS R3,suo+1
004AB 1582 CP R24,R2
004AC 0593 CPC R25,R3
004AD F100 BCS 0x04CE
(0152) write_com12864(0x06);
004AE E006 LDI R16,6
004AF DC4D RCALL _write_com12864
(0153) delay(5);
004B0 E005 LDI R16,5
004B1 E010 LDI R17,0
004B2 DBE0 RCALL _delay
(0154) lcd_pos12864(1,0);
004B3 2722 CLR R18
004B4 E001 LDI R16,1
004B5 DC73 RCALL _lcd_pos12864
(0155) writeString12864("密码错误!");delay_ms(1000),j=0,suo++;
004B6 E806 LDI R16,0x86
004B7 E010 LDI R17,0
004B8 DC97 RCALL _writeString12864
004B9 EE08 LDI R16,0xE8
004BA E013 LDI R17,3
004BB DBEE RCALL _delay_ms
004BC 2422 CLR R2
004BD 9220 0060 STS j,R2
004BF 9180 0065 LDS R24,suo
004C1 9190 0066 LDS R25,suo+1
004C3 9601 ADIW R24,1
004C4 9390 0066 STS suo+1,R25
004C6 9380 0065 STS suo,R24
(0156) write_com12864(0x01),
004C8 E001 LDI R16,1
004C9 DC33 RCALL _write_com12864
004CA E005 LDI R16,5
004CB E010 LDI R17,0
004CC DBC6 RCALL _delay
(0157) delay(5); }
004CD CE2E RJMP 0x02FC
(0158) else{write_com12864(0x01);
004CE E001 LDI R16,1
004CF DC2D RCALL _write_com12864
(0159) delay(5);
004D0 E005 LDI R16,5
004D1 E010 LDI R17,0
004D2 DBC0 RCALL _delay
(0160) for(;;){write_com12864(0x06);
004D3 E006 LDI R16,6
004D4 DC28 RCALL _write_com12864
(0161) delay(5);
004D5 E005 LDI R16,5
004D6 E010 LDI R17,0
004D7 DBBB RCALL _delay
(0162) lcd_pos12864(1,0);
004D8 2722 CLR R18
004D9 E001 LDI R16,1
004DA DC4E RCALL _lcd_pos12864
(0163) writeString12864("系统已自锁!");}
FILE: <library>
004DB E709 LDI R16,0x79
004DC E010 LDI R17,0
004DD DC72 RCALL _writeString12864
004DE CFF4 RJMP 0x04D3
004DF 9508 RET
empy16s:
004E0 920A ST -Y,R0
004E1 921A ST -Y,R1
004E2 938A ST -Y,R24
004E3 939A ST -Y,R25
004E4 9F02 MUL R16,R18
004E5 01C0 MOVW R24,R0
004E6 9F12 MUL R17,R18
004E7 0D90 ADD R25,R0
004E8 9F03 MUL R16,R19
004E9 0D90 ADD R25,R0
004EA 018C MOVW R16,R24
004EB 9199 LD R25,Y+
004EC 9189 LD R24,Y+
004ED 9019 LD R1,Y+
004EE 9009 LD R0,Y+
004EF 9508 RET
push_xgset300C:
004F0 935A ST -Y,R21
004F1 934A ST -Y,R20
004F2 92BA ST -Y,R11
004F3 92AA ST -Y,R10
004F4 9508 RET
pop_xgset300C:
004F5 90A9 LD R10,Y+
004F6 90B9 LD R11,Y+
004F7 9149 LD R20,Y+
004F8 9159 LD R21,Y+
004F9 9508 RET
push_xgsetF000:
004FA 937A ST -Y,R23
004FB 936A ST -Y,R22
004FC 935A ST -Y,R21
004FD 934A ST -Y,R20
004FE 9508 RET
pop_xgsetF000:
004FF 9149 LD R20,Y+
00500 9159 LD R21,Y+
00501 9169 LD R22,Y+
00502 9179 LD R23,Y+
00503 9508 RET
push_xgsetF00C:
00504 937A ST -Y,R23
00505 936A ST -Y,R22
00506 935A ST -Y,R21
00507 934A ST -Y,R20
00508 92BA ST -Y,R11
00509 92AA ST -Y,R10
0050A 9508 RET
pop_xgsetF00C:
0050B 90A9 LD R10,Y+
0050C 90B9 LD R11,Y+
0050D 9149 LD R20,Y+
0050E 9159 LD R21,Y+
0050F 9169 LD R22,Y+
00510 9179 LD R23,Y+
00511 9508 RET
lsl16:
00512 2322 TST R18
00513 F021 BEQ 0x0518
00514 0F00 LSL R16
00515 1F11 ROL R17
00516 952A DEC R18
00517 CFFA RJMP lsl16
00518 9508 RET
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?