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

📄 main.s

📁 用AVR atmega16做的一个完整彩色LED控制程序
💻 S
📖 第 1 页 / 共 5 页
字号:
	lds R14,_ModeStatus
	clr R15
	movw R24,R14
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	breq L125
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	breq L126
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	breq L131
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	breq L132
	xjmp L89
X2:
	.dbline 762
; 			   	             	{
L125:
	.dbline 764
; 			   	             	case	MODE_NOMALE:
; 							ModeStatus=MODE_LENGHT;
	ldi R24,2
	sts _ModeStatus,R24
	.dbline 765
; 							break;
	xjmp L89
L126:
	.dbline 767
; 			   	             	case	MODE_LENGHT:
; 							if(K1Count==2)
	lds R24,_K1Count
	cpi R24,2
	brne L127
	.dbline 768
; 							{
	.dbline 769
; 								ModeStatus=MODE_KIND;
	ldi R24,3
	sts _ModeStatus,R24
	.dbline 770
; 							}
	xjmp L89
L127:
	.dbline 771
; 							else if(K1Count==7) //base 5
	lds R24,_K1Count
	cpi R24,7
	breq X15
	xjmp L89
X15:
	.dbline 772
; 							{
	.dbline 773
; 								K1Count=0;
	clr R2
	sts _K1Count,R2
	.dbline 774
; 								ModeStatus=MODE_NOMALE;
	ldi R24,1
	sts _ModeStatus,R24
	.dbline 775
; 							       kind=0;
	clr R0
	std y+12,R0
	.dbline 776
; 							   EepromICnumberWr();
	xcall _EepromICnumberWr
	.dbline 777
; 							}
	.dbline 778
; 							break;
	xjmp L89
L131:
	.dbline 780
; 			   	             	case	MODE_KIND:
; 							K1Count=0;
	clr R2
	sts _K1Count,R2
	.dbline 781
; 							ModeStatus=MODE_NOMALE;
	ldi R24,1
	sts _ModeStatus,R24
	.dbline 782
; 							kind=0;
	clr R0
	std y+12,R0
	.dbline 783
; 				   			EepromViewModeWr();
	xcall _EepromViewModeWr
	.dbline 784
; 							break;
	xjmp L89
L132:
	.dbline 786
; 						case	MODE_PASSWORD:
; 							if(PassDate_flag==INVALE_SETUP || PassDate_flag==DATE_SETUP)
	lds R24,_PassDate_flag
	cpi R24,51
	breq L135
	cpi R24,34
	breq X16
	xjmp L89
X16:
L135:
	.dbline 787
; 							{
	.dbline 788
; 								PassDate_flag=DATE_SETUP;
	ldi R24,34
	sts _PassDate_flag,R24
	.dbline 789
; 								if(K1Count==2)
	lds R24,_K1Count
	cpi R24,2
	breq X17
	xjmp L89
X17:
	.dbline 790
; 								{
	.dbline 791
; 									K1Count=0;
	clr R2
	sts _K1Count,R2
	.dbline 792
; 									ModeStatus=MODE_NOMALE;
	ldi R24,1
	sts _ModeStatus,R24
	.dbline 793
; 								       kind=0;
	clr R0
	std y+12,R0
	.dbline 794
; 									DayData[0]=KK;
	ldd R2,y+13
	ldd R3,y+14
	sts _DayData,R2
	.dbline 795
; 									DayData[1]=0x00;
	clr R2
	sts _DayData+1,R2
	.dbline 796
; 							       	EepromDayDataWr();
	xcall _EepromDayDataWr
	.dbline 797
; 								}
	.dbline 798
; 			   	             		}
	.dbline 799
; 							break;
	.dbline 801
; 			   	             	default:
; 							break;
	.dbline 803
; 			   	             	}
; 			   		    break;
	xjmp L89
L139:
	.dbline 805
; 			   	   case	KEY_K4:  //k4
; 				   	   	if(ModeStatus==MODE_PASSWORD)
	lds R24,_ModeStatus
	cpi R24,4
	breq X18
	xjmp L89
X18:
	.dbline 806
; 				   	   	{
	.dbline 807
	lds R24,_PassDate_flag
	cpi R24,51
	breq L144
	cpi R24,17
	breq X19
	xjmp L89
X19:
L144:
	.dbline 807
; 				   	   		if(PassDate_flag==INVALE_SETUP || PassDate_flag==PASSWORD_SETUP){
	.dbline 808
; 							PassDate_flag=PASSWORD_SETUP;
	ldi R24,17
	sts _PassDate_flag,R24
	.dbline 810
; //							if(KK==0 && K4Count>0)
; 							if(K4Count>5)
	ldi R24,5
	lds R2,_K4Count
	cp R24,R2
	brlo X20
	xjmp L145
X20:
	.dbline 811
; 							{
	.dbline 812
; 								   if(Password_Enable==FALSE)
	lds R2,_Password_Enable
	tst R2
	brne L147
	.dbline 813
; 								   {
	.dbline 814
; 									K1Count=0;
	clr R2
	sts _K1Count,R2
	.dbline 815
; 									ModeStatus=MODE_NOMALE;
	ldi R24,1
	sts _ModeStatus,R24
	.dbline 816
; 								       kind=0;
	clr R0
	std y+12,R0
	.dbline 817
; 								       EepromPasswordWr();
	xcall _EepromPasswordWr
	.dbline 818
; 								   	Password_Enable=TRUE;
	ldi R24,1
	sts _Password_Enable,R24
	.dbline 819
; 									break;
	xjmp L89
L147:
	.dbline 822
; 								   }
; 								   else
; 							   	   {
	.dbline 823
; 									if(tempPW[0]==PasswordData[0] &&tempPW[1]==PasswordData[1]&&tempPW[2]==PasswordData[2]&&tempPW[3]==PasswordData[3]&&tempPW[4]==PasswordData[4])
	lds R2,_PasswordData
	ldd R3,y+0
	cp R3,R2
	brne L149
	lds R2,_PasswordData+1
	ldd R3,y+1
	cp R3,R2
	brne L149
	lds R2,_PasswordData+2
	ldd R3,y+2
	cp R3,R2
	brne L149
	lds R2,_PasswordData+3
	ldd R3,y+3
	cp R3,R2
	brne L149
	lds R2,_PasswordData+4
	ldd R3,y+4
	cp R3,R2
	brne L149
	.dbline 824
; 									{
	.dbline 825
; 										ModeStatus=MODE_PASSWORD;
	ldi R24,4
	sts _ModeStatus,R24
	.dbline 826
; 										PassDate_flag=PASSWORD_SETUP;
	ldi R24,17
	sts _PassDate_flag,R24
	.dbline 827
; 										PwModify_flag=TRUE;
	ldi R24,1
	ldi R25,0
	sts _PwModify_flag+1,R25
	sts _PwModify_flag,R24
	.dbline 828
; 										K1Count=0;
	clr R2
	sts _K1Count,R2
	.dbline 829
; 										K4Count=0;
	sts _K4Count,R2
	.dbline 830
; 										KK=0;
	clr R0
	clr R1
	std y+14,R1
	std y+13,R0
	.dbline 831
; 										break;
	xjmp L89
L149:
	.dbline 834
; 									}
; 									else
; 									{
	.dbline 835
; 										if(PwModify_flag==3)
	lds R24,_PwModify_flag
	lds R25,_PwModify_flag+1
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	brne L159
	.dbline 836
; 										{
	.dbline 837
; 											EepromPasswordWr();
	xcall _EepromPasswordWr
	.dbline 838
; 										}
L159:
	.dbline 839
; 										K1Count=0;
	clr R2
	sts _K1Count,R2
	.dbline 840
; 										ModeStatus=MODE_NOMALE;
	ldi R24,1
	sts _ModeStatus,R24
	.dbline 841
; 									       kind=0;
	clr R0
	std y+12,R0
	.dbline 842
; 										break;
	xjmp L89
L145:
	.dbline 846
; 									}
; 								   }
; 							}
; 							K4Count++;
	lds R24,_K4Count
	subi R24,255    ; addi 1
	sts _K4Count,R24
	.dbline 847
; 							switch(K4Count)
	mov R12,R24
	clr R13
	movw R24,R12
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	breq L164
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	breq L165
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	breq L167
	cpi R24,5
	ldi R30,0
	cpc R25,R30
	breq L169
	cpi R24,6
	ldi R30,0
	cpc R25,R30
	breq L171
	xjmp L162
X3:
	.dbline 848
; 							{
L164:
	.dbline 850
; 							case	2:   //byte1
; 								PasswordData[0]=KK;
	ldd R2,y+13
	ldd R3,y+14
	sts _PasswordData,R2
	.dbline 851
; 								break;
	xjmp L162
L165:
	.dbline 853
; 							case	3:   //byte2
; 								PasswordData[1]=KK;
	ldd R2,y+13
	ldd R3,y+14
	sts _PasswordData+1,R2
	.dbline 854
; 								break;
	xjmp L162
L167:
	.dbline 856
; 							case	4:   //byte3
; 								PasswordData[2]=KK;
	ldd R2,y+13
	ldd R3,y+14
	sts _PasswordData+2,R2
	.dbline 857
; 								break;
	xjmp L162
L169:
	.dbline 859
; 							case	5:   //byte4
; 								PasswordData[3]=KK;
	ldd R2,y+13
	ldd R3,y+14
	sts _PasswordData+3,R2
	.dbline 860
; 								break;
	xjmp L162
L171:
	.dbline 862
; 							case	6:   //byte5
; 								PasswordData[4]=KK;
	ldd R2,y+13
	ldd R3,y+14
	sts _PasswordData+4,R2
	.dbline 863
; 								break;
	.dbline 865
; 							default:
; 								break;
L162:
	.dbline 868
; 							}
; //						   	if(Password_Enable==TRUE && PwModify_flag>=TRUE)
; 						   	if(Password_Enable==TRUE && PwModify_flag==TRUE) //070616 modify
	lds R24,_Password_Enable
	cpi R24,1
	breq X21
	xjmp L173
X21:
	lds R24,_PwModify_flag
	lds R25,_PwModify_flag+1
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	breq X22
	xjmp L173
X22:
	.dbline 869
; 					   	   	{
	.dbline 870
; 								if(K4Count==2 && PasswordData[0]==0x3)
	lds R24,_K4Count
	cpi R24,2
	brne L175
	lds R24,_PasswordData
	cpi R24,3
	brne L175
	.dbline 871
; 								{
	.dbline 872
; 									ModeStatus=MODE_PASSWORD;
	ldi R24,4
	sts _ModeStatus,R24
	.dbline 873
; 									PassDate_flag=PASSWORD_SETUP;
	ldi R24,17
	sts _PassDate_flag,R24
	.dbline 874
; 									PwModify_flag=3;								
	ldi R24,3
	ldi R25,0
	sts _PwModify_flag+1,R25
	sts _PwModify_flag,R24
	.dbline 875
; 									K1Count=0;
	clr R2
	sts _K1Count,R2
	.dbline 876
; 									K4Count=0;
	sts _K4Count,R2
	.dbline 877
; 									KK=0;
	clr R0
	clr R1
	std y+14,R1
	std y+13,R0
	.dbline 878
; 								}
	xjmp L176
L175:
	.dbline 879
; 								else if(K4Count==2 && PasswordData[0]==0x8)
	lds R24,_K4Count
	cpi R24,2
	brne L177
	lds R24,_PasswordData
	cpi R24,8
	brne L177
	.dbline 880
; 								{
	.dbline 881
; 									ModeStatus=MODE_PASSWORD;
	ldi R24,4
	sts _ModeStatus,R24
	.dbline 882
; 									PassDate_flag=DATE_SETUP;
	ldi R24,34
	sts _PassDate_flag,R24
	.dbline 883
; 									K1Count=0;
	clr R2
	sts _K1Count,R2
	.dbline 884
; 									K4Count=0;
	sts _K4Count,R2
	.dbline 885
; 									KK=0;
	clr R0
	clr R1
	std y+14,R1
	std y+13,R0
	.dbline 886
; 								}
	xjmp L178
L177:
	.dbline 887
; 								else  if(K4Count==3 && PasswordData[0]==38&& PasswordData[1]==83)
	lds R24,_K4Count
	cpi R24,3
	brne L179
	lds R24,_PasswordData
	cpi R24,38
	brne L179
	lds R24,_PasswordData+1
	cpi R24,83
	brne L179
	.dbline 888
; 								{
	.dbline 889
; 									K1Count=0;
	clr R2
	sts _K1Count,R2
	.dbline 890
; 									ModeStatus=MODE_NOMALE;
	ldi R24,1
	sts _ModeStatus,R24
	.dbline 891
; 								       kind=0;
	clr R0
	std y+12,R0
	.dbline 892
; 								       PasswordCannel();
	xcall _PasswordCannel
	.dbline 893
; 									break;
	xjmp L89
L179:
L178:
L176:
	.dbline 895
; 								}
; 						   	}
L173:
	.dbline 897
; 
; 							KK=0;
	clr R0
	clr R1
	std y+14,R1
	std y+13,R0
	.dbline 898
; 				   	   		}
	.dbline 899
; 				   	   	}
	.dbline 900
; 						break;
	xjmp L89
L182:
	.dbline 902
; 			   	   case	KEY_K1K4RST://k1k4
; 						FactorySetup();
	xcall _FactorySetup
	.dbline 903
; 						EepromICnumberWr();
	xcall _EepromICnumberWr
	.dbline 904
; 						EepromViewModeWr();
	xcall _EepromViewModeWr
	.dbline 905
; 				   		WatchDog(0);
	clr R16
	xcall _WatchDog
L183:
	.dbline 906
L184:
	.dbline 906
; 						while(1);
	xjmp L183
X4:
	.dbline 907
; 			   		    break;
	xjmp L89
L186:
	.dbline 909
; 			       case	KEY_K3K4RST: //k3k4
; 					       EepromPasswordRd();
	xcall _EepromPasswordRd
	.dbline 910
; 						PwModify_flag=FALSE;
	clr R2
	clr R3
	sts _PwModify_flag+1,R3
	sts _PwModify_flag,R2
	.dbline 911
; 			       		if(Password_Enable==FALSE)
	lds R2,_Password_Enable
	tst R2
	brne L187
	.dbline 912
; 		       			{
	.dbline 913
; 							ModeStatus=MODE_PASSWORD;
	ldi R24,4
	sts _ModeStatus,R24
	.dbline 914
; 							PassDate_flag=INVALE_SETUP;
	ldi R24,51
	sts _PassDate_flag,R24
	.dbline 915
; 							K1Count=0;
	clr R2
	sts _K1Count,R2
	.dbline 916
; 							K4Count=0;
	sts _K4Count,R2
	.dbline 917
; 							KK=0;
	clr R0
	clr R1
	std y+14,R1
	std y+13,R0
	.dbline 918
; 		       			}
	xjmp L89
L187:
	.dbline 920
; 						else
; 						{
	.dbline 921
; 							ModeStatus=MODE_PASSWORD;
	ldi R24,4
	sts _ModeStatus,R24
	.dbline 922
; 							PassDate_flag=PASSWORD_SETUP;
	ldi R24,17
	sts _PassDate_flag,R24
	.dbline 923
; 							K1Count=0;
	clr R2
	sts _K1Count,R2
	.dbline 924
; 							K4Count=0;
	sts _K4Count,R2
	.dbline 925
; 							for(i=0;i<PASSWORDLENGHT;i++)
	clr R0
	std y+9,R0
	xjmp L192
L189:
	.dbline 926
	ldi R24,<_PasswordData
	ldi R25,>_PasswordData
	ldd R30,y+9
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	movw R24,R28
	ldd R30,y+9
	clr R31
	add R30,R24
	adc R31,R25

⌨️ 快捷键说明

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