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

📄 ds1203.lst

📁 DS1302
💻 LST
📖 第 1 页 / 共 5 页
字号:
    048D 8380      STD	Z+0,R24
(0275) 				} 
(0276) 			if(WriteTime[i]==0x79)
    048E E687      LDI	R24,0x67
    048F E090      LDI	R25,0
    0490 01F8      MOVW	R30,R16
    0491 0FE8      ADD	R30,R24
    0492 1FF9      ADC	R31,R25
    0493 8180      LDD	R24,Z+0
    0494 3789      CPI	R24,0x79
    0495 F439      BNE	0x049D
(0277) 			{WriteTime[i]=0x7f;
    0496 E687      LDI	R24,0x67
    0497 E090      LDI	R25,0
    0498 01F8      MOVW	R30,R16
    0499 0FE8      ADD	R30,R24
    049A 1FF9      ADC	R31,R25
    049B E78F      LDI	R24,0x7F
    049C 8380      STD	Z+0,R24
(0278) 				}
(0279) 			 if(WriteTime[i]==0x89)
    049D E687      LDI	R24,0x67
    049E E090      LDI	R25,0
    049F 01F8      MOVW	R30,R16
    04A0 0FE8      ADD	R30,R24
    04A1 1FF9      ADC	R31,R25
    04A2 8180      LDD	R24,Z+0
    04A3 3889      CPI	R24,0x89
    04A4 F439      BNE	0x04AC
(0280) 			{WriteTime[i]=0x8f;
    04A5 E687      LDI	R24,0x67
    04A6 E090      LDI	R25,0
    04A7 01F8      MOVW	R30,R16
    04A8 0FE8      ADD	R30,R24
    04A9 1FF9      ADC	R31,R25
    04AA E88F      LDI	R24,0x8F
    04AB 8380      STD	Z+0,R24
(0281) 				} 
(0282) 			if(WriteTime[i]==0x99)
    04AC E687      LDI	R24,0x67
    04AD E090      LDI	R25,0
    04AE 01F8      MOVW	R30,R16
    04AF 0FE8      ADD	R30,R24
    04B0 1FF9      ADC	R31,R25
    04B1 8180      LDD	R24,Z+0
    04B2 3989      CPI	R24,0x99
    04B3 F441      BNE	0x04BC
(0283) 			{WriteTime[i]=0x00;
    04B4 E687      LDI	R24,0x67
    04B5 E090      LDI	R25,0
    04B6 01F8      MOVW	R30,R16
    04B7 0FE8      ADD	R30,R24
    04B8 1FF9      ADC	R31,R25
    04B9 2422      CLR	R2
    04BA 8220      STD	Z+0,R2
(0284) 				} 
    04BB C009      RJMP	0x04C5
(0285) 			else
(0286) 			WriteTime[i]=WriteTime[i]+1;
    04BC E687      LDI	R24,0x67
    04BD E090      LDI	R25,0
    04BE 0118      MOVW	R2,R16
    04BF 0E28      ADD	R2,R24
    04C0 1E39      ADC	R3,R25
    04C1 01F1      MOVW	R30,R2
    04C2 8180      LDD	R24,Z+0
    04C3 5F8F      SUBI	R24,0xFF
    04C4 8380      STD	Z+0,R24
    04C5 9508      RET
(0287) 		   
(0288) }
(0289) //减
(0290) void SubYear(int i)
(0291) {
(0292) if(WriteTime[i]==0x00)
_SubYear:
  i                    --> R16
    04C6 E687      LDI	R24,0x67
    04C7 E090      LDI	R25,0
    04C8 01F8      MOVW	R30,R16
    04C9 0FE8      ADD	R30,R24
    04CA 1FF9      ADC	R31,R25
    04CB 8020      LDD	R2,Z+0
    04CC 2022      TST	R2
    04CD F429      BNE	0x04D3
(0293) 			{ WriteTime[i]=0x5a;
    04CE 01F8      MOVW	R30,R16
    04CF 0FE8      ADD	R30,R24
    04D0 1FF9      ADC	R31,R25
    04D1 E58A      LDI	R24,0x5A
    04D2 8380      STD	Z+0,R24
(0294) 			  }
(0295) 			if(WriteTime[i]==0x10)
    04D3 E687      LDI	R24,0x67
    04D4 E090      LDI	R25,0
    04D5 01F8      MOVW	R30,R16
    04D6 0FE8      ADD	R30,R24
    04D7 1FF9      ADC	R31,R25
    04D8 8180      LDD	R24,Z+0
    04D9 3180      CPI	R24,0x10
    04DA F439      BNE	0x04E2
(0296) 		    {WriteTime[i]=0x0a;
    04DB E687      LDI	R24,0x67
    04DC E090      LDI	R25,0
    04DD 01F8      MOVW	R30,R16
    04DE 0FE8      ADD	R30,R24
    04DF 1FF9      ADC	R31,R25
    04E0 E08A      LDI	R24,0xA
    04E1 8380      STD	Z+0,R24
(0297) 			} 
(0298) 			if(WriteTime[i]==0x20)
    04E2 E687      LDI	R24,0x67
    04E3 E090      LDI	R25,0
    04E4 01F8      MOVW	R30,R16
    04E5 0FE8      ADD	R30,R24
    04E6 1FF9      ADC	R31,R25
    04E7 8180      LDD	R24,Z+0
    04E8 3280      CPI	R24,0x20
    04E9 F439      BNE	0x04F1
(0299) 			 {WriteTime[i]=0x1a;
    04EA E687      LDI	R24,0x67
    04EB E090      LDI	R25,0
    04EC 01F8      MOVW	R30,R16
    04ED 0FE8      ADD	R30,R24
    04EE 1FF9      ADC	R31,R25
    04EF E18A      LDI	R24,0x1A
    04F0 8380      STD	Z+0,R24
(0300) 			} 
(0301) 	    	if(WriteTime[i]==0x30)
    04F1 E687      LDI	R24,0x67
    04F2 E090      LDI	R25,0
    04F3 01F8      MOVW	R30,R16
    04F4 0FE8      ADD	R30,R24
    04F5 1FF9      ADC	R31,R25
    04F6 8180      LDD	R24,Z+0
    04F7 3380      CPI	R24,0x30
    04F8 F439      BNE	0x0500
(0302) 		    {WriteTime[i]=0x2a;
    04F9 E687      LDI	R24,0x67
    04FA E090      LDI	R25,0
    04FB 01F8      MOVW	R30,R16
    04FC 0FE8      ADD	R30,R24
    04FD 1FF9      ADC	R31,R25
    04FE E28A      LDI	R24,0x2A
    04FF 8380      STD	Z+0,R24
(0303) 			} 
(0304) 			if(WriteTime[i]==0x40)
    0500 E687      LDI	R24,0x67
    0501 E090      LDI	R25,0
    0502 01F8      MOVW	R30,R16
    0503 0FE8      ADD	R30,R24
    0504 1FF9      ADC	R31,R25
    0505 8180      LDD	R24,Z+0
    0506 3480      CPI	R24,0x40
    0507 F439      BNE	0x050F
(0305) 			{WriteTime[i]=0x3a;
    0508 E687      LDI	R24,0x67
    0509 E090      LDI	R25,0
    050A 01F8      MOVW	R30,R16
    050B 0FE8      ADD	R30,R24
    050C 1FF9      ADC	R31,R25
    050D E38A      LDI	R24,0x3A
    050E 8380      STD	Z+0,R24
(0306) 				} 
(0307) 			if(WriteTime[i]==0x50)
    050F E687      LDI	R24,0x67
    0510 E090      LDI	R25,0
    0511 01F8      MOVW	R30,R16
    0512 0FE8      ADD	R30,R24
    0513 1FF9      ADC	R31,R25
    0514 8180      LDD	R24,Z+0
    0515 3580      CPI	R24,0x50
    0516 F439      BNE	0x051E
(0308) 			{WriteTime[i]=0x4a;
    0517 E687      LDI	R24,0x67
    0518 E090      LDI	R25,0
    0519 01F8      MOVW	R30,R16
    051A 0FE8      ADD	R30,R24
    051B 1FF9      ADC	R31,R25
    051C E48A      LDI	R24,0x4A
    051D 8380      STD	Z+0,R24
(0309) 				} 
(0310) 			if(WriteTime[i]==0x60)
    051E E687      LDI	R24,0x67
    051F E090      LDI	R25,0
    0520 01F8      MOVW	R30,R16
    0521 0FE8      ADD	R30,R24
    0522 1FF9      ADC	R31,R25
    0523 8180      LDD	R24,Z+0
    0524 3680      CPI	R24,0x60
    0525 F439      BNE	0x052D
(0311) 		    {WriteTime[i]=0x5a;
    0526 E687      LDI	R24,0x67
    0527 E090      LDI	R25,0
    0528 01F8      MOVW	R30,R16
    0529 0FE8      ADD	R30,R24
    052A 1FF9      ADC	R31,R25
    052B E58A      LDI	R24,0x5A
    052C 8380      STD	Z+0,R24
(0312) 			} 
(0313) 			if(WriteTime[i]==0x70)
    052D E687      LDI	R24,0x67
    052E E090      LDI	R25,0
    052F 01F8      MOVW	R30,R16
    0530 0FE8      ADD	R30,R24
    0531 1FF9      ADC	R31,R25
    0532 8180      LDD	R24,Z+0
    0533 3780      CPI	R24,0x70
    0534 F439      BNE	0x053C
(0314) 			{WriteTime[i]=0x6a;
    0535 E687      LDI	R24,0x67
    0536 E090      LDI	R25,0
    0537 01F8      MOVW	R30,R16
    0538 0FE8      ADD	R30,R24
    0539 1FF9      ADC	R31,R25
    053A E68A      LDI	R24,0x6A
    053B 8380      STD	Z+0,R24
(0315) 				} 
(0316) 			if(WriteTime[i]==0x80)
    053C E687      LDI	R24,0x67
    053D E090      LDI	R25,0
    053E 01F8      MOVW	R30,R16
    053F 0FE8      ADD	R30,R24
    0540 1FF9      ADC	R31,R25
    0541 8180      LDD	R24,Z+0
    0542 3880      CPI	R24,0x80
    0543 F439      BNE	0x054B
(0317) 			{WriteTime[i]=0x7a;
    0544 E687      LDI	R24,0x67
    0545 E090      LDI	R25,0
    0546 01F8      MOVW	R30,R16
    0547 0FE8      ADD	R30,R24
    0548 1FF9      ADC	R31,R25
    0549 E78A      LDI	R24,0x7A
    054A 8380      STD	Z+0,R24
(0318) 				} 
(0319) 				if(WriteTime[i]==0x90)
    054B E687      LDI	R24,0x67
    054C E090      LDI	R25,0
    054D 01F8      MOVW	R30,R16
    054E 0FE8      ADD	R30,R24
    054F 1FF9      ADC	R31,R25
    0550 8180      LDD	R24,Z+0
    0551 3980      CPI	R24,0x90
    0552 F441      BNE	0x055B
(0320) 		    {WriteTime[i]=0x89;
    0553 E687      LDI	R24,0x67
    0554 E090      LDI	R25,0
    0555 01F8      MOVW	R30,R16
    0556 0FE8      ADD	R30,R24
    0557 1FF9      ADC	R31,R25
    0558 E889      LDI	R24,0x89
    0559 8380      STD	Z+0,R24
(0321) 			} 
    055A C009      RJMP	0x0564
(0322) 			else
(0323) 			WriteTime[i]=WriteTime[i]-1;
    055B E687      LDI	R24,0x67
    055C E090      LDI	R25,0
    055D 0118      MOVW	R2,R16
    055E 0E28      ADD	R2,R24
    055F 1E39      ADC	R3,R25
    0560 01F1      MOVW	R30,R2
    0561 8180      LDD	R24,Z+0
    0562 5081      SUBI	R24,1
    0563 8380      STD	Z+0,R24
    0564 9508      RET
_keypress:
  NoGong               --> R20
  move                 --> R22
    0565 D295      RCALL	push_gset2
    0566 9721      SBIW	R28,1
(0324) }
(0325) /*ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
(0326)      按键检测主程序
(0327) cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
(0328)  void keypress(void)//按键检测程序
(0329)  {
(0330)   	  if(!(PINC&0X08))
    0567 999B      SBIC	0x13,3
    0568 C18A      RJMP	0x06F3
(0331)  	  {int NoGong=0,move=0;
    0569 2744      CLR	R20
    056A 2755      CLR	R21
    056B 2766      CLR	R22
    056C 2777      CLR	R23
(0332) 	   while(!(PINC&0X08));//检测按键释放
    056D 9B9B      SBIS	0x13,3
    056E CFFE      RJMP	0x056D
(0333) 	    NoGong=1;
    056F E041      LDI	R20,1
    0570 E050      LDI	R21,0
    0571 C17C      RJMP	0x06EE
(0334) 	    while(NoGong==1)//功能键按下
(0335) 		{
(0336) 	             black(13,0);//闪烁时的背景线
    0572 2722      CLR	R18
    0573 2733      CLR	R19
    0574 E00D      LDI	R16,0xD
    0575 E010      LDI	R17,0
    0576 DC8D      RCALL	_black
(0337) 				 LCD_write_char(13,0,secondtl+48);//初始状态second闪烁
    0577 918000CD  LDS	R24,secondtl
    0579 5D80      SUBI	R24,0xD0
    057A 8388      STD	Y+0,R24
    057B 2722      CLR	R18
    057C E00D      LDI	R16,0xD
    057D D269      RCALL	_LCD_write_char
(0338) 				               DS1302_ReadTime(); //读取当前时间
    057E DB9A      RCALL	_DS1302_ReadTime
(0339) 							   SendDataForDisplay();//显示设置
    057F DC08      RCALL	_SendDataForDisplay
(0340) //cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
(0341)                             if(!(PINC&0x20))  //检测加一按键
    0580 999D      SBIC	0x13,5
    0581 C00B      RJMP	0x058D
(0342)                               {delay_nus(30);
    0582 E10E      LDI	R16,0x1E
    0583 E010      LDI	R17,0
    0584 DBC5      RCALL	_delay_nus
(0343) 							    while(!(PINC&0X20));
    0585 9B9D      SBIS	0x13,5
    0586 CFFE      RJMP	0x0585
(0344) 							    PlusForSET(5);//设置秒
    0587 E005      LDI	R16,5
    0588 E010      LDI	R17,0
    0589 DC89      RCALL	_PlusForSET
(0345) 							   DS1302_WriteTime();  	
    058A DBA8      RCALL	_DS1302_WriteTime
(0346) 		                       DS1302_ReadTime(); //读取当前时间
    058B DB8D      RCALL	_DS1302_ReadTime
(0347) 							   SendDataForDisplay();//显示设置
    058C DBFB      RCALL	_SendDataForDisplay
(0348) 					          } 
(0349) 						    if(!(PINB&0x01))//检测减一按键
    058D 99B0      SBIC	0x16,0
    058E C008      RJMP	0x0597
(0350)                               {while(!(PINB&0X01));
    058F 9BB0      SBIS	0x16,0
    0590 CFFE      RJMP	0x058F
(0351) 							   SubForSET(5);//设置秒
    0591 E005      LDI	R16,5
    0592 E010      LDI	R17,0
    0593 DCE4      RCALL	_SubForSET
(0352) 							   DS1302_WriteTime();  	
    0594 DB9E      RCALL	_DS1302_WriteTime
(0353) 		                       DS1302_ReadTime(); //读取当前时间
    0595 DB83      RCALL	_DS1302_ReadTime
(0354) 							   SendDataForDisplay();//显示设置
    0596 DBF1      RCALL	_SendDataForDisplay
(0355) 					          }
(0356) //cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc			 
(0357) 	             
(0358)                   if(!(PINC&0x10))//检测移位按键
    0597 999C      SBIC	0x13,4
    0598 C14F      RJMP	0x06E8
(0359)                    {while(!(PINC&0X10));
    0599 9B9C      SBIS	0x13,4
    059A CFFE      RJMP	0x0599
(0360)     				move=1;
    059B E061      LDI	R22,1
    059C E070      LDI	R23,0
    059D C145      RJMP	0x06E3
(0361) 	                 while(NoGong==1)
(0362) 				      {
(0363) 					  
(0364) 					           DS1302_ReadTime(); //读取当前时间
    059E DB7A      RCALL	_DS1302_ReadTime
(0365) 							   SendDataForDisplay();//显示设置
    059F DBE8      RCALL	_SendDataForDisplay
    05A0 C030      RJMP	0x05D1
(0366) //cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc					   
(0367) 					   while(move==1) //设置分钟位置
(0368) 					    {  black(10,0);
    05A1 2722      CLR	R18
    05A2 2733      CLR	R19
    05A3 E00A      LDI	R16,0xA
    05A4 E010      LDI	R17,0
    05A5 DC5E      RCALL	_black
(0369) 						   LCD_write_char(10,0,minutetl+48);
    05A6 918000CB  LDS	R24,minutetl
    05A8 5D80      SUBI	R24,0xD0
    05A9 8388      STD	Y+0,R24
    05AA 2722      CLR	R18
    05AB E00A      LDI	R16,0xA
    05AC D23A      RCALL	_LCD_write_char
(0370) 						       DS1302_ReadTime(); //读取当前时间
    05AD DB6B      RCALL	_DS1302_ReadTime
(0371) 							   SendDataForDisplay();//显示设置
    05AE DBD9      RCALL	_SendDataForDisplay
(0372) 							//cccccccccccccccccccccccccccccccccccc   
(0373) 						      if(!(PINC&0x20))  //检测加一按键
    05AF 999D      SBIC	0x13,5
    05B0 C008      RJMP	0x05B9
(0374)                               {while(!(PINC&0X20));						  
    05B1 9B9D      SBIS	0x13,5
    05B2 CFFE      RJMP	0x05B1
(0375) 						       PlusForSET(4);//设置分钟
    05B3 E004      LDI	R16,4
    05B4 E010      LDI

⌨️ 快捷键说明

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