⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atmega16test.lst

📁 用AVR atmega16做的一个完整彩色LED控制程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
(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 + -