+_-

来自「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 + -
显示快捷键?