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

📄 main.s

📁 用AVR atmega16做的一个完整彩色LED控制程序
💻 S
📖 第 1 页 / 共 5 页
字号:
	xjmp L51
L50:
	.dbline 614
; 			else
; 			{
	.dbline 615
; 				val=CompareDate();
	xcall _CompareDate
	movw R20,R16
	.dbline 616
	cpi R16,255
	ldi R30,255
	cpc R17,R30
	breq L57
	lds R2,_DayData
	clr R3
	cp R2,R16
	cpc R3,R17
	brge L55
L57:
	.dbline 616
; 				if((val==-1) ||( val > DayData[0]))	Password_alarm=TRUE;
	ldi R24,1
	sts _Password_alarm,R24
	xjmp L56
L55:
	.dbline 618
; 				else
; 				{
	.dbline 619
; 					if(val!=Oneday)
	lds R2,_Oneday
	clr R3
	cp R20,R2
	cpc R21,R3
	breq L58
	.dbline 620
; 					{
	.dbline 621
; 						Oneday=val;
	sts _Oneday,R20
	.dbline 622
; 						DayData[0]=DayData[0]-val;
	lds R2,_DayData
	clr R3
	sub R2,R20
	sbc R3,R21
	sts _DayData,R2
	.dbline 623
; 						EepromDayDataWr();
	xcall _EepromDayDataWr
	.dbline 624
; 					}
L58:
	.dbline 625
; 					Password_alarm=FALSE;
	clr R2
	sts _Password_alarm,R2
	.dbline 626
; 				}
L56:
	.dbline 627
; 			}
L51:
	.dbline 628
L49:
	.dbline -2
L47:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r val 20 I
	.dbend
	.dbfunc e main _main fV
;             KK -> y+13
;         tempPW -> y+0
;           kind -> y+12
;         pwloop -> y+10
;              i -> y+9
;            bit -> y+8
;           loop -> y+6
	.even
_main::
	sbiw R28,17
	.dbline -1
	.dbline 632
; 		}
; }
; 
; void   main(void)
; {
	.dbline 633
;  	   char		 bit,i=0,kind=0;
	clr R0
	std y+9,R0
	.dbline 633
	std y+12,R0
	.dbline 634
; 	   uint		 loop=0,KK=0,pwloop=0;
	clr R1
	std y+7,R1
	std y+6,R0
	.dbline 634
	std y+14,R1
	std y+13,R0
	.dbline 634
	std y+11,R1
	std y+10,R0
	.dbline 636
; 	   uchar		tempPW[PASSWORDLENGHT];
;  	   val=0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _val+1,R21
	sts _val,R20
	sts _val+2+1,R23
	sts _val+2,R22
	.dbline 637
; 	   KeyCode=0;
	clr R2
	sts _KeyCode,R2
	.dbline 638
; 	   DispBuffer[0]=CharFont[16];
	ldi R30,<_CharFont+16
	ldi R31,>_CharFont+16
	lpm R30,Z
	sts _DispBuffer,R30
	.dbline 639
; 	   DispBuffer[1]=CharFont[16];
	ldi R30,<_CharFont+16
	ldi R31,>_CharFont+16
	lpm R30,Z
	sts _DispBuffer+1,R30
	.dbline 640
; 	   DispBuffer[2]=CharFont[0];
	ldi R30,<_CharFont
	ldi R31,>_CharFont
	lpm R30,Z
	sts _DispBuffer+2,R30
	.dbline 641
; 	   DispBuffer[3]=CharFont[0];
	ldi R30,<_CharFont
	ldi R31,>_CharFont
	lpm R30,Z
	sts _DispBuffer+3,R30
	.dbline 642
; 	   DispBuffer[4]=CharFont[0];
	ldi R30,<_CharFont
	ldi R31,>_CharFont
	lpm R30,Z
	sts _DispBuffer+4,R30
	.dbline 643
; 	   DispBuffer[5]=0x00;
	sts _DispBuffer+5,R2
	.dbline 644
; 	   SI_Count=0;
	sts _SI_Count,R2
	.dbline 645
;   	   CLI(); //关中断 
	cli
	.dbline 646
; 	   init_devices();
	xcall _init_devices
	.dbline 651
; 
; //	   timer0_init();
; 	   
; //	   FactorySetup();
; 	  ModeStatus=MODE_NOMALE;
	ldi R24,1
	sts _ModeStatus,R24
	.dbline 652
; 	  CurrentKey=KEY_FUNCTION;
	ldi R24,67
	sts _CurrentKey,R24
	.dbline 653
; 	  BackKey=KEY_FUNCTION;
	sts _BackKey,R24
	.dbline 654
; 	  CurrentKind=KIND0;
	clr R2
	sts _CurrentKind,R2
	.dbline 655
; 	  K1Count=0;
	sts _K1Count,R2
	.dbline 656
; 	  val_kind=0;	  	
	sts _val_kind,R2
	.dbline 657
; 	  Password_alarm=FALSE;
	sts _Password_alarm,R2
	.dbline 659
; 
; 	  EepromDateValueRd();
	xcall _EepromDateValueRd
	.dbline 661
; #ifdef   VERSION_CONTROL
; 	if(DateValue[0]==0xff && DateValue[1]==0xff && DateValue[2]==0xff && DateValue[3]==0xff ) //070617 mask
	lds R24,_DateValue
	cpi R24,255
	brne L68
	lds R24,_DateValue+1
	cpi R24,255
	brne L68
	lds R24,_DateValue+2
	cpi R24,255
	brne L68
	lds R24,_DateValue+3
	cpi R24,255
	brne L68
	.dbline 663
; #endif
; 	{
	.dbline 664
; 	  FactorySetup();
	xcall _FactorySetup
	.dbline 665
; 	  val_lenght=MINVAL_LENGHT;
	ldi R24,4
	ldi R25,0
	sts _val_lenght+1,R25
	sts _val_lenght,R24
	.dbline 666
; 	  EepromICnumberWr();
	xcall _EepromICnumberWr
	.dbline 667
; 	  EepromViewModeWr();
	xcall _EepromViewModeWr
	.dbline 668
; 	  DS1302_Init();
	xcall _DS1302_Init
	.dbline 669
; 	  EepromDateValueWr();
	xcall _EepromDateValueWr
	.dbline 670
; 	  EepromDayDataWr();
	xcall _EepromDayDataWr
	.dbline 671
; 	  PasswordCannel();
	xcall _PasswordCannel
	.dbline 672
; 	}
L68:
	.dbline 673
; 	   EepromICnumberRd();
	xcall _EepromICnumberRd
	.dbline 674
; 	   EepromViewModeRd();
	xcall _EepromViewModeRd
	.dbline 675
; 	for(i=MAXVAL_KIND-1;i>=0;i--)
	ldi R24,111
	std y+9,R24
	xjmp L76
L73:
	.dbline 676
; 	{
	.dbline 677
; 		if(KindData[i]!=0)
	ldi R24,<_KindData
	ldi R25,>_KindData
	ldd R30,y+9
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	tst R2
	breq L77
	.dbline 678
; 		{
	.dbline 679
; 			i=i+1;
	ldd R0,y+9
	inc R0
	std y+9,R0
	.dbline 680
; 			break;
	xjmp L75
L77:
	.dbline 682
L74:
	.dbline 675
	ldd R0,y+9
	dec R0
	std y+9,R0
L76:
	.dbline 675
	ldd R24,y+9
	cpi R24,0
	brsh L73
L75:
	.dbline 683
; 		}
; 	}
; 	val_kind=i;
	ldd R0,y+9
	sts _val_kind,R0
	.dbline 684
; 	   EepromPasswordRd();
	xcall _EepromPasswordRd
	.dbline 685
; 	   if(Password_Enable==TRUE)
	lds R24,_Password_Enable
	cpi R24,1
	brne L79
	.dbline 686
;    	   {
	.dbline 687
;    	   	PasswordProcess();
	xcall _PasswordProcess
	.dbline 688
; 	   }
L79:
	.dbline 690
; 
;   	   SEI(); //开中断 
	sei
	.dbline 692
; #ifdef   VERSION_CONTROL
; 	WatchDog(7);
	ldi R16,7
	xcall _WatchDog
	xjmp L82
L81:
	.dbline 695
; #endif	   
; 	   while(1)
; 	   {            if(KeyCode==0)	   KeyCode=PressKeyProcess();
	.dbline 695
	lds R2,_KeyCode
	tst R2
	brne L84
	.dbline 695
	xcall _PressKeyProcess
	sts _KeyCode,R16
L84:
	.dbline 696
; 			   if(KeyCode!=0){
	lds R2,_KeyCode
	tst R2
	brne X7
	xjmp L86
X7:
	.dbline 696
	.dbline 697
; 			   	   switch(KeyCode)
	clr R3
	std y+16,R3
	std y+15,R2
	movw R24,R2
	cpi R24,131
	ldi R30,0
	cpc R25,R30
	breq L91
	ldi R24,131
	movw R0,R2
	cp R24,R2
	cpc R25,R3
	brlt L194
L193:
	ldd R24,y+15
	ldd R25,y+16
	cpi R24,65
	ldi R30,0
	cpc R25,R30
	brne X8
	xjmp L182
X8:
	cpi R24,67
	ldi R30,0
	cpc R25,R30
	brne X9
	xjmp L121
X9:
	xjmp L89
L194:
	ldd R24,y+15
	ldd R25,y+16
	cpi R24,192
	ldi R30,0
	cpc R25,R30
	brne X10
	xjmp L186
X10:
	cpi R24,193
	ldi R30,0
	cpc R25,R30
	brne X11
	xjmp L139
X11:
	cpi R24,194
	ldi R30,0
	cpc R25,R30
	brne X12
	xjmp L108
X12:
	xjmp L89
X0:
	.dbline 698
; 			       {
L91:
	.dbline 700
; 			   	   case	KEY_UP://k2
; 				   		if(ModeStatus==MODE_LENGHT)
	lds R24,_ModeStatus
	cpi R24,2
	brne L92
	.dbline 701
; 				   		{
	.dbline 702
; 			   				if(val_lenght<MAXVAL_LENGHT)
	lds R24,_val_lenght
	lds R25,_val_lenght+1
	cpi R24,15
	ldi R30,39
	cpc R25,R30
	brsh L94
	.dbline 703
; 			   		   	  	val_lenght++;
	adiw R24,1
	sts _val_lenght+1,R25
	sts _val_lenght,R24
L94:
	.dbline 704
; 							K1Count=5;							
	ldi R24,5
	sts _K1Count,R24
	.dbline 705
; 			   		   	 }
	xjmp L89
L92:
	.dbline 706
; 						else if(ModeStatus==MODE_KIND)
	lds R24,_ModeStatus
	cpi R24,3
	brne L96
	.dbline 707
; 						{
	.dbline 708
; 			   				if(val_kind<MAXVAL_KIND)
	lds R24,_val_kind
	cpi R24,112
	brsh L98
	.dbline 709
; 							{
	.dbline 710
; 								KindData[val_kind]=TRUE;
	ldi R24,<_KindData
	ldi R25,>_KindData
	lds R30,_val_kind
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,1
	std z+0,R24
	.dbline 711
; 					   		   	val_kind++;
	lds R24,_val_kind
	subi R24,255    ; addi 1
	sts _val_kind,R24
	.dbline 713
; 
; 							}
	xjmp L89
L98:
	.dbline 714
; 							else val_kind=0;
	clr R2
	sts _val_kind,R2
	.dbline 715
; 						}
	xjmp L89
L96:
	.dbline 716
; 						else if(ModeStatus==MODE_PASSWORD)
	lds R24,_ModeStatus
	cpi R24,4
	breq X13
	xjmp L89
X13:
	.dbline 717
; 						{
	.dbline 718
; 							if(PassDate_flag==PASSWORD_SETUP)
	lds R24,_PassDate_flag
	cpi R24,17
	brne L102
	.dbline 719
; 							{
	.dbline 720
; 								if(KK<MAXNUMBER) KK++;	
	ldd R24,y+13
	ldd R25,y+14
	cpi R24,99
	ldi R30,0
	cpc R25,R30
	brsh L103
	.dbline 720
	adiw R24,1
	std y+14,R25
	std y+13,R24
	.dbline 722
; 
; 							}
	xjmp L103
L102:
	.dbline 724
; 							else
; 							{
	.dbline 725
; 								if(KK<MAXDATE) 	KK++;	
	ldd R24,y+13
	ldd R25,y+14
	cpi R24,250
	ldi R30,0
	cpc R25,R30
	brsh L106
	.dbline 725
	adiw R24,1
	std y+14,R25
	std y+13,R24
L106:
	.dbline 726
; 							}
L103:
	.dbline 727
; 							K1Count=0;
	clr R2
	sts _K1Count,R2
	.dbline 729
; 							//K4Count=0;
; 						}
	.dbline 730
; 			   			break;
	xjmp L89
L108:
	.dbline 734
; 				   case	KEY_DOWN://k3
; //					  	DS1302_Init();
; //					   	ReadTime();
; 				   		if(ModeStatus==MODE_LENGHT)
	lds R24,_ModeStatus
	cpi R24,2
	brne L109
	.dbline 735
; 			   			{
	.dbline 736
; 			   		    		if(val_lenght>MINVAL_LENGHT)
	ldi R24,4
	ldi R25,0
	lds R2,_val_lenght
	lds R3,_val_lenght+1
	cp R24,R2
	cpc R25,R3
	brsh L111
	.dbline 737
; 					      		val_lenght--;
	movw R24,R2
	sbiw R24,1
	sts _val_lenght+1,R25
	sts _val_lenght,R24
L111:
	.dbline 738
; 							K1Count=5;		
	ldi R24,5
	sts _K1Count,R24
	.dbline 740
; 							
; 			   		   	 }
	xjmp L89
L109:
	.dbline 741
; 						else if(ModeStatus==MODE_KIND)
	lds R24,_ModeStatus
	cpi R24,3
	brne L113
	.dbline 742
; 						{
	.dbline 743
; 			   		    		if(val_kind<MAXVAL_KIND)
	lds R24,_val_kind
	cpi R24,112
	brsh L115
	.dbline 744
; 			   		    		{
	.dbline 745
; 								KindData[val_kind]=FALSE;
	ldi R24,<_KindData
	ldi R25,>_KindData
	lds R30,_val_kind
	clr R31
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 746
; 					      			val_kind++;
	lds R24,_val_kind
	subi R24,255    ; addi 1
	sts _val_kind,R24
	.dbline 747
; 			   		    		}
	xjmp L89
L115:
	.dbline 748
; 							else val_kind=0;
	clr R2
	sts _val_kind,R2
	.dbline 749
; 						} 
	xjmp L89
L113:
	.dbline 750
; 						else if(ModeStatus==MODE_PASSWORD)
	lds R24,_ModeStatus
	cpi R24,4
	breq X14
	xjmp L89
X14:
	.dbline 751
; 						{
	.dbline 752
; 							if(KK>0) 	KK--;	
	ldd R0,y+13
	ldd R1,y+14
	tst R0
	brne X1
	tst R1
	breq L119
X1:
	.dbline 752
	ldd R24,y+13
	ldd R25,y+14
	sbiw R24,1
	std y+14,R25
	std y+13,R24
L119:
	.dbline 753
; 							K1Count=0;
	clr R2
	sts _K1Count,R2
	.dbline 755
; 						//	K4Count=0;
; 						}
	.dbline 756
; 			   		    break;
	xjmp L89
L121:
	.dbline 758
; 			   	   case	KEY_FUNCTION://k1
; 			   	   		BackKey=CurrentKey;
	lds R2,_CurrentKey
	sts _BackKey,R2
	.dbline 759
; 			   	   		CurrentKey=KEY_FUNCTION;
	ldi R24,67
	sts _CurrentKey,R24
	.dbline 760
; 						K1Count++;
	lds R24,_K1Count
	subi R24,255    ; addi 1
	sts _K1Count,R24
	.dbline 761
; 			   	             switch(ModeStatus)

⌨️ 快捷键说明

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