+_-

来自「avr单片机icc写的密码锁」· 代码 · 共 1,672 行 · 第 1/4 页

TXT
1,672
字号
    0021E 2755      CLR	R21
    0021F 3445      CPI	R20,0x45
    00220 E0E0      LDI	R30,0
    00221 075E      CPC	R21,R30
    00222 F1A9      BEQ	0x0258
    00223 3446      CPI	R20,0x46
    00224 E0E0      LDI	R30,0
    00225 075E      CPC	R21,R30
    00226 F409      BNE	0x0228
    00227 C03C      RJMP	0x0264
    00228 3447      CPI	R20,0x47
    00229 E0E0      LDI	R30,0
    0022A 075E      CPC	R21,R30
    0022B F409      BNE	0x022D
    0022C C043      RJMP	0x0270
    0022D 344D      CPI	R20,0x4D
    0022E E0E0      LDI	R30,0
    0022F 075E      CPC	R21,R30
    00230 F159      BEQ	0x025C
    00231 344E      CPI	R20,0x4E
    00232 E0E0      LDI	R30,0
    00233 075E      CPC	R21,R30
    00234 F199      BEQ	0x0268
    00235 344F      CPI	R20,0x4F
    00236 E0E0      LDI	R30,0
    00237 075E      CPC	R21,R30
    00238 F409      BNE	0x023A
    00239 C03A      RJMP	0x0274
    0023A 3445      CPI	R20,0x45
    0023B E0E0      LDI	R30,0
    0023C 075E      CPC	R21,R30
    0023D F40C      BGE	0x023F
    0023E C048      RJMP	0x0287
    0023F 3545      CPI	R20,0x55
    00240 E0E0      LDI	R30,0
    00241 075E      CPC	R21,R30
    00242 F0E9      BEQ	0x0260
    00243 3546      CPI	R20,0x56
    00244 E0E0      LDI	R30,0
    00245 075E      CPC	R21,R30
    00246 F129      BEQ	0x026C
    00247 3547      CPI	R20,0x57
    00248 E0E0      LDI	R30,0
    00249 075E      CPC	R21,R30
    0024A F169      BEQ	0x0278
    0024B 354D      CPI	R20,0x5D
    0024C E0E0      LDI	R30,0
    0024D 075E      CPC	R21,R30
    0024E F169      BEQ	0x027C
    0024F 354E      CPI	R20,0x5E
    00250 E0E0      LDI	R30,0
    00251 075E      CPC	R21,R30
    00252 F169      BEQ	0x0280
    00253 354F      CPI	R20,0x5F
    00254 E0E0      LDI	R30,0
    00255 075E      CPC	R21,R30
    00256 F169      BEQ	0x0284
    00257 C02F      RJMP	0x0287
(0017)   {
(0018)     case keycode_s1:  g=1;break;
    00258 E081      LDI	R24,1
    00259 9380 0061 STS	g,R24
    0025B C02B      RJMP	0x0287
(0019) 	case keycode_s2:  g=2;break;
    0025C E082      LDI	R24,2
    0025D 9380 0061 STS	g,R24
    0025F C027      RJMP	0x0287
(0020) 	case keycode_s3:  g=3;break;
    00260 E083      LDI	R24,3
    00261 9380 0061 STS	g,R24
    00263 C023      RJMP	0x0287
(0021) 	case keycode_s9:  g=4;break;
    00264 E084      LDI	R24,4
    00265 9380 0061 STS	g,R24
    00267 C01F      RJMP	0x0287
(0022) 	case keycode_s10: g=5;break;
    00268 E085      LDI	R24,5
    00269 9380 0061 STS	g,R24
    0026B C01B      RJMP	0x0287
(0023) 	case keycode_s11: g=6;break;
    0026C E086      LDI	R24,6
    0026D 9380 0061 STS	g,R24
    0026F C017      RJMP	0x0287
(0024) 	case keycode_s17: g=7;break;
    00270 E087      LDI	R24,7
    00271 9380 0061 STS	g,R24
    00273 C013      RJMP	0x0287
(0025) 	case keycode_s18: g=8;break;
    00274 E088      LDI	R24,0x8
    00275 9380 0061 STS	g,R24
    00277 C00F      RJMP	0x0287
(0026) 	case keycode_s19: g=9;break;
    00278 E089      LDI	R24,0x9
    00279 9380 0061 STS	g,R24
    0027B C00B      RJMP	0x0287
(0027) 	case keycode_s4:  g=0;break;
    0027C 2422      CLR	R2
    0027D 9220 0061 STS	g,R2
    0027F C007      RJMP	0x0287
(0028)     case keycode_s12: g=12;break;
    00280 E08C      LDI	R24,0xC
    00281 9380 0061 STS	g,R24
    00283 C003      RJMP	0x0287
(0029) 	case keycode_s20: g=20;break;
    00284 E184      LDI	R24,0x14
    00285 9380 0061 STS	g,R24
(0030) }
(0031) if(g>=0&&g<=9)
    00287 9020 0061 LDS	R2,g
    00289 2D82      MOV	R24,R2
    0028A 3080      CPI	R24,0
    0028B F0B8      BCS	0x02A3
    0028C E089      LDI	R24,0x9
    0028D 1582      CP	R24,R2
    0028E F0A0      BCS	0x02A3
(0032) {j++,mimas[j-1]=g;
    0028F 9180 0060 LDS	R24,j
    00291 5F8F      SUBI	R24,0xFF
    00292 9380 0060 STS	j,R24
    00294 E686      LDI	R24,0x66
    00295 E090      LDI	R25,0
    00296 91E0 0060 LDS	R30,j
    00298 27FF      CLR	R31
    00299 0FE8      ADD	R30,R24
    0029A 1FF9      ADC	R31,R25
    0029B 8220      ST	Z,R2
(0033) if(j==7){j=0;}}
    0029C 9180 0060 LDS	R24,j
    0029E 3087      CPI	R24,7
    0029F F419      BNE	0x02A3
    002A0 2422      CLR	R2
    002A1 9220 0060 STS	j,R2
(0034) if(g==12)
    002A3 9180 0061 LDS	R24,g
    002A5 308C      CPI	R24,0xC
    002A6 F441      BNE	0x02AF
(0035) {j=0,write_com12864(0x01),  
    002A7 2422      CLR	R2
    002A8 9220 0060 STS	j,R2
    002AA E001      LDI	R16,1
    002AB DE51      RCALL	_write_com12864
    002AC E005      LDI	R16,5
    002AD E010      LDI	R17,0
    002AE DDE4      RCALL	_delay
(0036)       delay(5); }
(0037) if(g==20)
    002AF 9180 0061 LDS	R24,g
    002B1 3184      CPI	R24,0x14
    002B2 F449      BNE	0x02BC
(0038) {j=0,xg=1;
    002B3 2422      CLR	R2
    002B4 9220 0060 STS	j,R2
    002B6 E081      LDI	R24,1
    002B7 E090      LDI	R25,0
    002B8 9390 0064 STS	xg+1,R25
    002BA 9380 0063 STS	xg,R24
(0039) }
    002BC 940E 04F5 CALL	pop_xgset300C
    002BE 9009      LD	R0,Y+
    002BF BE0F      OUT	0x3F,R0
    002C0 91F9      LD	R31,Y+
    002C1 91E9      LD	R30,Y+
    002C2 91B9      LD	R27,Y+
    002C3 91A9      LD	R26,Y+
    002C4 9199      LD	R25,Y+
    002C5 9189      LD	R24,Y+
    002C6 9139      LD	R19,Y+
    002C7 9129      LD	R18,Y+
    002C8 9119      LD	R17,Y+
    002C9 9109      LD	R16,Y+
    002CA 9099      LD	R9,Y+
    002CB 9089      LD	R8,Y+
    002CC 9079      LD	R7,Y+
    002CD 9069      LD	R6,Y+
    002CE 9059      LD	R5,Y+
    002CF 9049      LD	R4,Y+
    002D0 9039      LD	R3,Y+
    002D1 9029      LD	R2,Y+
    002D2 9019      LD	R1,Y+
    002D3 9009      LD	R0,Y+
    002D4 9518      RETI
(0040) 
(0041) }
(0042) 
(0043) void main()
(0044) {uint i;
(0045) for(i=0;i<6;i++)
_main:
  i                    --> R20
    002D5 2744      CLR	R20
    002D6 2755      CLR	R21
    002D7 C00A      RJMP	0x02E2
(0046) {mimac[i]=read_eep(i);
    002D8 018A      MOVW	R16,R20
    002D9 DF22      RCALL	_read_eep
    002DA E68D      LDI	R24,0x6D
    002DB E090      LDI	R25,0
    002DC 01FA      MOVW	R30,R20
    002DD 0FE8      ADD	R30,R24
    002DE 1FF9      ADC	R31,R25
    002DF 8300      ST	Z,R16
    002E0 5F4F      SUBI	R20,0xFF
    002E1 4F5F      SBCI	R21,0xFF
    002E2 3046      CPI	R20,6
    002E3 E0E0      LDI	R30,0
    002E4 075E      CPC	R21,R30
    002E5 F390      BCS	0x02D8
(0047) }
(0048)  //液晶配置
(0049)    port_init12864();
    002E6 DDD8      RCALL	_port_init12864
(0050)    lcd_init12864();
    002E7 DDDF      RCALL	_lcd_init12864
(0051)    
(0052)    write_com12864(0x01);
    002E8 E001      LDI	R16,1
    002E9 DE13      RCALL	_write_com12864
(0053)    delay_ms(10);
    002EA E00A      LDI	R16,0xA
    002EB E010      LDI	R17,0
    002EC DDBD      RCALL	_delay_ms
(0054)    
(0055)    //451配置
(0056)    port_init451();
    002ED DEB5      RCALL	_port_init451
(0057)    int0_init();
    002EE DEFA      RCALL	_int0_init
(0058)    ch451_init();
    002EF DEF6      RCALL	_ch451_init
(0059)    ch451_write(CH451_RESET);
    002F0 E001      LDI	R16,1
    002F1 E012      LDI	R17,2
    002F2 DEBA      RCALL	_ch451_write
(0060)    ch451_write(CH451_SYSON2);
    002F3 E003      LDI	R16,3
    002F4 E014      LDI	R17,4
    002F5 DEB7      RCALL	_ch451_write
(0061)    ch451_write(CH451_TWINKLE);
    002F6 E000      LDI	R16,0
    002F7 E016      LDI	R17,6
    002F8 DEB4      RCALL	_ch451_write
(0062)    ch451_write(CH451_BCD);
    002F9 E80F      LDI	R16,0x8F
    002FA E015      LDI	R17,5
    002FB DEB1      RCALL	_ch451_write
(0063)    for(;;)
(0064)    {
(0065)    switch(j)
    002FC 9160 0060 LDS	R22,j
    002FE 2777      CLR	R23
    002FF 3060      CPI	R22,0
    00300 0767      CPC	R22,R23
    00301 F0F9      BEQ	0x0321
    00302 3061      CPI	R22,1
    00303 E0E0      LDI	R30,0
    00304 077E      CPC	R23,R30
    00305 F409      BNE	0x0307
    00306 C069      RJMP	0x0370
    00307 3062      CPI	R22,2
    00308 E0E0      LDI	R30,0
    00309 077E      CPC	R23,R30
    0030A F409      BNE	0x030C
    0030B C06A      RJMP	0x0376
    0030C 3063      CPI	R22,3
    0030D E0E0      LDI	R30,0
    0030E 077E      CPC	R23,R30
    0030F F409      BNE	0x0311
    00310 C06D      RJMP	0x037E
    00311 3064      CPI	R22,4
    00312 E0E0      LDI	R30,0
    00313 077E      CPC	R23,R30
    00314 F409      BNE	0x0316
    00315 C06E      RJMP	0x0384
    00316 3065      CPI	R22,5
    00317 E0E0      LDI	R30,0
    00318 077E      CPC	R23,R30
    00319 F409      BNE	0x031B
    0031A C071      RJMP	0x038C
    0031B 3066      CPI	R22,6
    0031C E0E0      LDI	R30,0
    0031D 077E      CPC	R23,R30
    0031E F409      BNE	0x0320
    0031F C072      RJMP	0x0392
    00320 CFDB      RJMP	0x02FC
(0066)       {
(0067)      case 0:
(0068)      {if(xg==3){
    00321 9180 0063 LDS	R24,xg
    00323 9190 0064 LDS	R25,xg+1
    00325 3083      CPI	R24,3
    00326 E0E0      LDI	R30,0
    00327 079E      CPC	R25,R30
    00328 F459      BNE	0x0334
(0069) 	 write_com12864(0x06);  
    00329 E006      LDI	R16,6
    0032A DDD2      RCALL	_write_com12864
(0070)       delay(5);
    0032B E005      LDI	R16,5
    0032C E010      LDI	R17,0
    0032D DD65      RCALL	_delay
(0071)      lcd_pos12864(0,0);
    0032E 2722      CLR	R18
    0032F 2700      CLR	R16
    00330 DDF8      RCALL	_lcd_pos12864
(0072)      writeString12864("再入新密码");
    00331 EE01      LDI	R16,0xE1
    00332 E010      LDI	R17,0
    00333 DE1C      RCALL	_writeString12864
(0073) 	           }
(0074) 	 if(xg==2){
    00334 9180 0063 LDS	R24,xg
    00336 9190 0064 LDS	R25,xg+1
    00338 3082      CPI	R24,2
    00339 E0E0      LDI	R30,0
    0033A 079E      CPC	R25,R30
    0033B F459      BNE	0x0347
(0075) 	 write_com12864(0x06);  
    0033C E006      LDI	R16,6
    0033D DDBF      RCALL	_write_com12864
(0076)       delay(5);
    0033E E005      LDI	R16,5
    0033F E010      LDI	R17,0
    00340 DD52      RCALL	_delay
(0077)      lcd_pos12864(0,0);
    00341 2722      CLR	R18
    00342 2700      CLR	R16
    00343 DDE5      RCALL	_lcd_pos12864
(0078)      writeString12864("输入新密码");
    00344 ED06      LDI	R16,0xD6
    00345 E010      LDI	R17,0
    00346 DE09      RCALL	_writeString12864
(0079) 	           }
(0080) 	 if(xg==1){
    00347 9180 0063 LDS	R24,xg
    00349 9190 0064 LDS	R25,xg+1
    0034B 3081      CPI	R24,1
    0034C E0E0      LDI	R30,0
    0034D 079E      CPC	R25,R30
    0034E F459      BNE	0x035A
(0081) 	 write_com12864(0x06);  
    0034F E006      LDI	R16,6
    00350 DDAC      RCALL	_write_com12864
(0082)       delay(5);
    00351 E005      LDI	R16,5
    00352 E010      LDI	R17,0
    00353 DD3F      RCALL	_delay
(0083)      lcd_pos12864(0,0);
    00354 2722      CLR	R18
    00355 2700      CLR	R16
    00356 DDD2      RCALL	_lcd_pos12864
(0084)      writeString12864("输入原密码");
    00357 EC0B      LDI	R16,0xCB
    00358 E010      LDI	R17,0
    00359 DDF6      RCALL	_writeString12864
(0085) 	           }
(0086) 	 if(xg==0){
    0035A 9020 0063 LDS	R2,xg
    0035C 9030 0064 LDS	R3,xg+1
    0035E 2022      TST	R2
    0035F F009      BEQ	0x0361
    00360 CF9B      RJMP	0x02FC
    00361 2033      TST	R3
    00362 F009      BEQ	0x0364
    00363 CF98      RJMP	0x02FC
(0087) 	 write_com12864(0x06);  
    00364 E006      LDI	R16,6
    00365 DD97      RCALL	_write_com12864
(0088)       delay(5);
    00366 E005      LDI	R16,5
    00367 E010      LDI	R17,0
    00368 DD2A      RCALL	_delay
(0089)      lcd_pos12864(0,0);
    00369 2722      CLR	R18
    0036A 2700      CLR	R16
    0036B DDBD      RCALL	_lcd_pos12864
(0090)      writeString12864("请输入密码");
    0036C EC00      LDI	R16,0xC0
    0036D E010      LDI	R17,0
    0036E DDE1      RCALL	_writeString12864
(0091) 	          }
(0092)      break;}
    0036F CF8C      RJMP	0x02FC
(0093) 	  case 1:
(0094) 	  {lcd_pos12864(0,5);
    00370 E025      LDI	R18,5
    00371 2700      CLR	R16
    00372 DDB6      RCALL	_lcd_pos12864
(0095)       write_dat12864(0X0f);
    00373 E00F      LDI	R16,0xF
    00374 DD9E      RCALL	_write_dat12864
(0096) 	  break;}
    00375 CF86      RJMP	0x02FC
(0097) 	  case 2:
(0098) 	  {lcd_pos12864(0,5);
    00376 E025      LDI	R18,5
    00377 2700      CLR	R16
    00378 DDB0      RCALL	_lcd_pos12864
(0099)       write_dat12864(0X0f);
    00379 E00F      LDI	R16,0xF
    0037A DD98      RCALL	_write_dat12864
(0100) 	  write_dat12864(0X0f); 
    0037B E00F      LDI	R16,0xF
    0037C DD96      RCALL	_write_dat12864
(0101) 	  break;}
    0037D CF7E      RJMP	0x02FC
(0102) 	  case 3:
(0103) 	  {lcd_pos12864(0,6);
    0037E E026      LDI	R18,6
    0037F 2700      CLR	R16
    00380 DDA8      RCALL	_lcd_pos12864
(0104)       write_dat12864(0X0f);
    00381 E00F      LDI	R16,0xF
    00382 DD90      RCALL	_write_dat12864
(0105) 	  break;}
    00383 CF78      RJMP	0x02FC
(0106) 	  case 4:
(0107) 	  {lcd_pos12864(0,6);
    00384 E026      LDI	R18,6

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?