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

📄 atmega16test.lst

📁 用AVR atmega16做的一个完整彩色LED控制程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0840) 										ModeStatus=MODE_NOMALE;
    0443 E081      LDI	R24,1
    0444 9380013F  STS	ModeStatus,R24
(0841) 									       kind=0;
    0446 2400      CLR	R0
    0447 860C      STD	Y+12,R0
(0842) 										break;
    0448 C0DF      RJMP	0x0528
(0843) 									}
(0844) 								   }
(0845) 							}
(0846) 							K4Count++;
    0449 9180013B  LDS	R24,K4Count
    044B 5F8F      SUBI	R24,0xFF
    044C 9380013B  STS	K4Count,R24
(0847) 							switch(K4Count)
    044E 2EC8      MOV	R12,R24
    044F 24DD      CLR	R13
    0450 01C6      MOVW	R24,R12
    0451 3082      CPI	R24,2
    0452 E0E0      LDI	R30,0
    0453 079E      CPC	R25,R30
    0454 F089      BEQ	0x0466
    0455 3083      CPI	R24,3
    0456 E0E0      LDI	R30,0
    0457 079E      CPC	R25,R30
    0458 F091      BEQ	0x046B
    0459 3084      CPI	R24,4
    045A E0E0      LDI	R30,0
    045B 079E      CPC	R25,R30
    045C F099      BEQ	0x0470
    045D 3085      CPI	R24,5
    045E E0E0      LDI	R30,0
    045F 079E      CPC	R25,R30
    0460 F0A1      BEQ	0x0475
    0461 3086      CPI	R24,6
    0462 E0E0      LDI	R30,0
    0463 079E      CPC	R25,R30
    0464 F0A9      BEQ	0x047A
    0465 C018      RJMP	0x047E
(0848) 							{
(0849) 							case	2:   //byte1
(0850) 								PasswordData[0]=KK;
    0466 842D      LDD	R2,Y+13
    0467 843E      LDD	R3,Y+14
    0468 922000B2  STS	PasswordData,R2
(0851) 								break;
    046A C013      RJMP	0x047E
(0852) 							case	3:   //byte2
(0853) 								PasswordData[1]=KK;
    046B 842D      LDD	R2,Y+13
    046C 843E      LDD	R3,Y+14
    046D 922000B3  STS	PasswordData+1,R2
(0854) 								break;
    046F C00E      RJMP	0x047E
(0855) 							case	4:   //byte3
(0856) 								PasswordData[2]=KK;
    0470 842D      LDD	R2,Y+13
    0471 843E      LDD	R3,Y+14
    0472 922000B4  STS	PasswordData+2,R2
(0857) 								break;
    0474 C009      RJMP	0x047E
(0858) 							case	5:   //byte4
(0859) 								PasswordData[3]=KK;
    0475 842D      LDD	R2,Y+13
    0476 843E      LDD	R3,Y+14
    0477 922000B5  STS	PasswordData+3,R2
(0860) 								break;
    0479 C004      RJMP	0x047E
(0861) 							case	6:   //byte5
(0862) 								PasswordData[4]=KK;
    047A 842D      LDD	R2,Y+13
    047B 843E      LDD	R3,Y+14
    047C 922000B6  STS	0xB6,R2
(0863) 								break;
(0864) 							default:
(0865) 								break;
(0866) 							}
(0867) //						   	if(Password_Enable==TRUE && PwModify_flag>=TRUE)
(0868) 						   	if(Password_Enable==TRUE && PwModify_flag==TRUE) //070616 modify
    047E 91800137  LDS	R24,Password_Enable
    0480 3081      CPI	R24,1
    0481 F009      BEQ	0x0483
    0482 C055      RJMP	0x04D8
    0483 91800128  LDS	R24,PwModify_flag
    0485 91900129  LDS	R25,PwModify_flag+1
    0487 3081      CPI	R24,1
    0488 E0E0      LDI	R30,0
    0489 079E      CPC	R25,R30
    048A F009      BEQ	0x048C
    048B C04C      RJMP	0x04D8
(0869) 					   	   	{
(0870) 								if(K4Count==2 && PasswordData[0]==0x3)
    048C 9180013B  LDS	R24,K4Count
    048E 3082      CPI	R24,2
    048F F4D1      BNE	0x04AA
    0490 918000B2  LDS	R24,PasswordData
    0492 3083      CPI	R24,3
    0493 F4B1      BNE	0x04AA
(0871) 								{
(0872) 									ModeStatus=MODE_PASSWORD;
    0494 E084      LDI	R24,4
    0495 9380013F  STS	ModeStatus,R24
(0873) 									PassDate_flag=PASSWORD_SETUP;
    0497 E181      LDI	R24,0x11
    0498 93800136  STS	PassDate_flag,R24
(0874) 									PwModify_flag=3;								
    049A E083      LDI	R24,3
    049B E090      LDI	R25,0
    049C 93900129  STS	PwModify_flag+1,R25
    049E 93800128  STS	PwModify_flag,R24
(0875) 									K1Count=0;
    04A0 2422      CLR	R2
    04A1 9220013C  STS	K1Count,R2
(0876) 									K4Count=0;
    04A3 9220013B  STS	K4Count,R2
(0877) 									KK=0;
    04A5 2400      CLR	R0
    04A6 2411      CLR	R1
    04A7 861E      STD	Y+14,R1
    04A8 860D      STD	Y+13,R0
(0878) 								}
    04A9 C02E      RJMP	0x04D8
(0879) 								else if(K4Count==2 && PasswordData[0]==0x8)
    04AA 9180013B  LDS	R24,K4Count
    04AC 3082      CPI	R24,2
    04AD F4A1      BNE	0x04C2
    04AE 918000B2  LDS	R24,PasswordData
    04B0 3088      CPI	R24,0x8
    04B1 F481      BNE	0x04C2
(0880) 								{
(0881) 									ModeStatus=MODE_PASSWORD;
    04B2 E084      LDI	R24,4
    04B3 9380013F  STS	ModeStatus,R24
(0882) 									PassDate_flag=DATE_SETUP;
    04B5 E282      LDI	R24,0x22
    04B6 93800136  STS	PassDate_flag,R24
(0883) 									K1Count=0;
    04B8 2422      CLR	R2
    04B9 9220013C  STS	K1Count,R2
(0884) 									K4Count=0;
    04BB 9220013B  STS	K4Count,R2
(0885) 									KK=0;
    04BD 2400      CLR	R0
    04BE 2411      CLR	R1
    04BF 861E      STD	Y+14,R1
    04C0 860D      STD	Y+13,R0
(0886) 								}
    04C1 C016      RJMP	0x04D8
(0887) 								else  if(K4Count==3 && PasswordData[0]==38&& PasswordData[1]==83)
    04C2 9180013B  LDS	R24,K4Count
    04C4 3083      CPI	R24,3
    04C5 F491      BNE	0x04D8
    04C6 918000B2  LDS	R24,PasswordData
    04C8 3286      CPI	R24,0x26
    04C9 F471      BNE	0x04D8
    04CA 918000B3  LDS	R24,PasswordData+1
    04CC 3583      CPI	R24,0x53
    04CD F451      BNE	0x04D8
(0888) 								{
(0889) 									K1Count=0;
    04CE 2422      CLR	R2
    04CF 9220013C  STS	K1Count,R2
(0890) 									ModeStatus=MODE_NOMALE;
    04D1 E081      LDI	R24,1
    04D2 9380013F  STS	ModeStatus,R24
(0891) 								       kind=0;
    04D4 2400      CLR	R0
    04D5 860C      STD	Y+12,R0
(0892) 								       PasswordCannel();
    04D6 DCBF      RCALL	_PasswordCannel
(0893) 									break;
    04D7 C050      RJMP	0x0528
(0894) 								}
(0895) 						   	}
(0896) 
(0897) 							KK=0;
    04D8 2400      CLR	R0
    04D9 2411      CLR	R1
    04DA 861E      STD	Y+14,R1
    04DB 860D      STD	Y+13,R0
(0898) 				   	   		}
(0899) 				   	   	}
(0900) 						break;
    04DC C04B      RJMP	0x0528
(0901) 			   	   case	KEY_K1K4RST://k1k4
(0902) 						FactorySetup();
    04DD 940E18D0  CALL	_FactorySetup
(0903) 						EepromICnumberWr();
    04DF 940E17E9  CALL	_EepromICnumberWr
(0904) 						EepromViewModeWr();
    04E1 940E18F6  CALL	_EepromViewModeWr
(0905) 				   		WatchDog(0);
    04E3 2700      CLR	R16
    04E4 D3D8      RCALL	_WatchDog
(0906) 						while(1);
    04E5 CFFF      RJMP	0x04E5
(0907) 			   		    break;
    04E6 C041      RJMP	0x0528
(0908) 			       case	KEY_K3K4RST: //k3k4
(0909) 					       EepromPasswordRd();
    04E7 940E1910  CALL	_EepromPasswordRd
(0910) 						PwModify_flag=FALSE;
    04E9 2422      CLR	R2
    04EA 2433      CLR	R3
    04EB 92300129  STS	PwModify_flag+1,R3
    04ED 92200128  STS	PwModify_flag,R2
(0911) 			       		if(Password_Enable==FALSE)
    04EF 90200137  LDS	R2,Password_Enable
    04F1 2022      TST	R2
    04F2 F481      BNE	0x0503
(0912) 		       			{
(0913) 							ModeStatus=MODE_PASSWORD;
    04F3 E084      LDI	R24,4
    04F4 9380013F  STS	ModeStatus,R24
(0914) 							PassDate_flag=INVALE_SETUP;
    04F6 E383      LDI	R24,0x33
    04F7 93800136  STS	PassDate_flag,R24
(0915) 							K1Count=0;
    04F9 2422      CLR	R2
    04FA 9220013C  STS	K1Count,R2
(0916) 							K4Count=0;
    04FC 9220013B  STS	K4Count,R2
(0917) 							KK=0;
    04FE 2400      CLR	R0
    04FF 2411      CLR	R1
    0500 861E      STD	Y+14,R1
    0501 860D      STD	Y+13,R0
(0918) 		       			}
    0502 C025      RJMP	0x0528
(0919) 						else
(0920) 						{
(0921) 							ModeStatus=MODE_PASSWORD;
    0503 E084      LDI	R24,4
    0504 9380013F  STS	ModeStatus,R24
(0922) 							PassDate_flag=PASSWORD_SETUP;
    0506 E181      LDI	R24,0x11
    0507 93800136  STS	PassDate_flag,R24
(0923) 							K1Count=0;
    0509 2422      CLR	R2
    050A 9220013C  STS	K1Count,R2
(0924) 							K4Count=0;
    050C 9220013B  STS	K4Count,R2
(0925) 							for(i=0;i<PASSWORDLENGHT;i++)
    050E 2400      CLR	R0
    050F 8609      STD	Y+9,R0
    0510 C010      RJMP	0x0521
(0926) 								tempPW[i]=PasswordData[i];
    0511 EB82      LDI	R24,0xB2
    0512 E090      LDI	R25,0
    0513 85E9      LDD	R30,Y+9
    0514 27FF      CLR	R31
    0515 0FE8      ADD	R30,R24
    0516 1FF9      ADC	R31,R25
    0517 8020      LDD	R2,Z+0
    0518 01CE      MOVW	R24,R28
    0519 85E9      LDD	R30,Y+9
    051A 27FF      CLR	R31
    051B 0FE8      ADD	R30,R24
    051C 1FF9      ADC	R31,R25
    051D 8220      STD	Z+0,R2
    051E 8409      LDD	R0,Y+9
    051F 9403      INC	R0
    0520 8609      STD	Y+9,R0
    0521 8589      LDD	R24,Y+9
    0522 3086      CPI	R24,6
    0523 F368      BCS	0x0511
(0927) 							KK=0;
    0524 2400      CLR	R0
    0525 2411      CLR	R1
    0526 861E      STD	Y+14,R1
    0527 860D      STD	Y+13,R0
(0928) 						}
(0929) 			   		    break;
(0930) 			       default:
(0931) 			   		    break;
(0932) 			       }
(0933) 				KeyCode=0;   
    0528 2422      CLR	R2
    0529 9220006E  STS	KeyCode,R2
(0934) 				if(ModeStatus==MODE_LENGHT)
    052B 9180013F  LDS	R24,ModeStatus
    052D 3082      CPI	R24,2
    052E F009      BEQ	0x0530
    052F C066      RJMP	0x0596
(0935) 				{
(0936) 				   DispBuffer[0]=CharFont[17];
    0530 EFE5      LDI	R30,0xF5
    0531 E0F1      LDI	R31,1
    0532 91E4      LPM	R30,0(Z)
    0533 93E00073  STS	DispBuffer,R30
(0937) 				   loop=val_lenght;
    0535 90200134  LDS	R2,val_lenght
    0537 90300135  LDS	R3,val_lenght+1
    0539 823F      STD	Y+7,R3
    053A 822E      STD	Y+6,R2
(0938) 			          bit=loop/1000;
    053B EE28      LDI	R18,0xE8
    053C E033      LDI	R19,3
    053D 0181      MOVW	R16,R2
    053E 940E1B3B  CALL	div16u
    0540 8708      STD	Y+8,R16
(0939) 				   DispBuffer[1]=CharFont[bit];
    0541 EE84      LDI	R24,0xE4
    0542 E091      LDI	R25,1
    0543 2FE0      MOV	R30,R16
    0544 27FF      CLR	R31
    0545 0FE8      ADD	R30,R24
    0546 1FF9      ADC	R31,R25
    0547 91E4      LPM	R30,0(Z)
    0548 93E00074  STS	DispBuffer+1,R30
(0940) 				   loop=loop-bit *1000;
    054A 2F20      MOV	R18,R16
    054B 2733      CLR	R19
    054C EE08      LDI	R16,0xE8
    054D E013      LDI	R17,3
    054E 940E1BC6  CALL	empy16s
    0550 800E      LDD	R0,Y+6
    0551 801F      LDD	R1,Y+7
    0552 1A00      SUB	R0,R16
    0553 0A11      SBC	R1,R17
    0554 821F      STD	Y+7,R1
    0555 820E      STD	Y+6,R0
(0941) 			          bit=loop/100;
    0556 E624      LDI	R18,0x64
    0557 E030      LDI	R19,0
    0558 0180      MOVW	R16,R0
    0559 940E1B3B  CALL	div16u
    055B 8708      STD	Y+8,R16
(0942) 				   DispBuffer[2]=CharFont[bit];
    055C EE84      LDI	R24,0xE4
    055D E091      LDI	R25,1
    055E 2FE0      MOV	R30,R16
    055F 27FF      CLR	R31
    0560 0FE8      ADD	R30,R24
    0561 1FF9      ADC	R31,R25
    0562 91E4      LPM	R30,0(Z)
    0563 93E00075  STS	DispBuffer+2,R30
(0943) 				   loop=loop-bit *100;
    0565 E684      LDI	R24,0x64
    0566 2E00      MOV	R0,R16
    0567 9D80      MUL	R24,R0
    0568 810E      LDD	R16,Y+6
    0569 811F      LDD	R17,Y+7
    056A 1900      SUB	R16,R0
    056B 0911      SBC	R17,R1
    056C 831F      STD	Y+7,R17
    056D 830E      STD	Y+6,R16
(0944) 			          bit=loop/10;
    056E E02A      LDI	R18,0xA
    056F E030      LDI	R19,0
    0570 940E1B3B  CALL	div16u
    0572 8708      STD	Y+8,R16
(0945) 				   DispBuffer[3]=CharFont[bit];
    0573 EE84      LDI	R24,0xE4
    0574 E091      LDI	R25,1
    0575 2FE0      MOV	R30,R16
    0576 27FF      CLR	R31
    0577 0FE8      ADD	R30,R24
    0578 1FF9      ADC	R31,R25
    0579 91E4      LPM	R30,0(Z)
    057A 93E00076  STS	DispBuffer+3,R30
(0946) 				   loop=loop-bit *10;
    057C E08A      LDI	R24,0xA
    057D 2E00      MOV	R0,R16
    057E 9D80      MUL	R24,R0
    057F 810E      LDD	R16,Y+6
    0580 811F      LDD	R17,Y+7
    0581 1900      SUB	R16,R0
    0582 0911      SBC	R17,R1
    0583 831F      STD	Y+7,R17
    0584 830E      STD	Y+6,R16
(0947) 				   DispBuffer[4]=CharFont[loop];
    0585 EE84      LDI	R24,0xE4
    0586 E091      LDI	R25,1
    0587 01F8      MOVW	R30,R16
    0588 0FE8      ADD	R30,R24
    0589 1FF9      ADC	R31,R25
    058A 91E4      LPM	R30,0(Z)
    058B 93E00077  STS	0x77,R30
(0948) 
(0949) 				   BLenghtCount=val_lenght;
    058D 9020013

⌨️ 快捷键说明

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