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

📄 yj12864.lst

📁 12864菜单
💻 LST
📖 第 1 页 / 共 5 页
字号:
_DS1302_init:
    05FF 2722      CLR	R18
    0600 E80E      LDI	R16,0x8E
    0601 DF77      RCALL	_DS1302_writeD
(0197)  DS1302_writeD(C_SEC|WR,CLK_START);		//启动振荡器,DS1302开始工作
    0602 2722      CLR	R18
    0603 E800      LDI	R16,0x80
    0604 DF74      RCALL	_DS1302_writeD
(0198)  DS1302_writeD(C_WP|WR,PROTECT); 		//控制命令,WP位为1,不允许写操作	  
    0605 E820      LDI	R18,0x80
    0606 E80E      LDI	R16,0x8E
    0607 DF71      RCALL	_DS1302_writeD
    0608 9508      RET
(0199) }
(0200) /*******************************************
(0201) 函数名称: BCD_ASCII
(0202) 功    能: 将压缩BCD码转换成ascii码
(0203) 参    数: BCD--将要转换的压缩BCD码
(0204) 	  	  ptasc--转换后的ASCII码数组指针
(0205) 返回值  : 无
(0206) /********************************************/
(0207) void BCD_ASCII(uchar BCD,uchar *ptasc)
(0208) { 	
(0209) 	*ptasc=BCD/16|0x30;		   //转换十位
_BCD_ASCII:
  ptasc                --> R18
  BCD                  --> R16
    0609 2F80      MOV	R24,R16
    060A 9582      SWAP	R24
    060B 708F      ANDI	R24,0xF
    060C 6380      ORI	R24,0x30
    060D 01F9      MOVW	R30,R18
    060E 8380      STD	Z+0,R24
(0210) 	*(ptasc+1)=BCD&0x0F|0x30;  //转换个位
    060F 2F80      MOV	R24,R16
    0610 708F      ANDI	R24,0xF
    0611 6380      ORI	R24,0x30
    0612 8381      STD	Z+1,R24
    0613 9508      RET
_Disp_time:
  i                    --> Y+1
  linex2_2             --> Y+34
  linex2               --> Y+29
  linex1_1             --> Y+24
  linex1               --> Y+19
  linex3               --> Y+2
  asc                  --> Y+0
  time                 --> R20
    0614 940E0A80  CALL	push_gset1
    0616 01A8      MOVW	R20,R16
    0617 97A5      SBIW	R28,0x25
(0211) }
(0212) /*******************************************
(0213) 函数名称: Disp_time
(0214) 功    能: 在1602液晶上显示当前时间(第1行格式:年-月-日 星期;第2行格式:时-分-秒)
(0215) 参    数: time[]--时间数组
(0216) 返回值  : 无
(0217) /********************************************/
(0218) void Disp_time(uchar time[])
(0219) {
(0220)  uchar i,asc[2];
(0221)  //uchar line1[11]={0,0,'-',0,0,'-',0,0,' ',0,'\0'};//显示第1行的字符数组
(0222) // uchar line2[9]={0,0,':',0,0,':',0,0,'\0'};		  //显示第2行的字符数组
(0223) 
(0224)  
(0225)   uchar linex1[5]={' ','0',' ','0','\0'};//显示第1行的字符数组
    0618 E584      LDI	R24,0x54
    0619 E094      LDI	R25,4
    061A 01FE      MOVW	R30,R28
    061B 9673      ADIW	R30,0x13
    061C E005      LDI	R16,5
    061D E010      LDI	R17,0
    061E 93FA      ST	R31,-Y
    061F 93EA      ST	R30,-Y
    0620 939A      ST	R25,-Y
    0621 938A      ST	R24,-Y
    0622 940E0A97  CALL	asgncblk
(0226)   uchar linex1_1[5]={' ','0',' ','0','\0'};//显示第1行的字符数组
    0624 E589      LDI	R24,0x59
    0625 E094      LDI	R25,4
    0626 01FE      MOVW	R30,R28
    0627 9678      ADIW	R30,0x18
    0628 E005      LDI	R16,5
    0629 E010      LDI	R17,0
    062A 93FA      ST	R31,-Y
    062B 93EA      ST	R30,-Y
    062C 939A      ST	R25,-Y
    062D 938A      ST	R24,-Y
    062E 940E0A97  CALL	asgncblk
(0227)   uchar linex2[5]={' ',0,' ',0,'\0'};//显示第1行的字符数组
    0630 E58E      LDI	R24,0x5E
    0631 E094      LDI	R25,4
    0632 01FE      MOVW	R30,R28
    0633 967D      ADIW	R30,0x1D
    0634 E005      LDI	R16,5
    0635 E010      LDI	R17,0
    0636 93FA      ST	R31,-Y
    0637 93EA      ST	R30,-Y
    0638 939A      ST	R25,-Y
    0639 938A      ST	R24,-Y
    063A 940E0A97  CALL	asgncblk
(0228)    uchar linex2_2[3]={' ','0','\0'};//显示第1行的字符数组
    063C E683      LDI	R24,0x63
    063D E094      LDI	R25,4
    063E 01FE      MOVW	R30,R28
    063F 96B2      ADIW	R30,0x22
    0640 E003      LDI	R16,3
    0641 E010      LDI	R17,0
    0642 93FA      ST	R31,-Y
    0643 93EA      ST	R30,-Y
    0644 939A      ST	R25,-Y
    0645 938A      ST	R24,-Y
    0646 940E0A97  CALL	asgncblk
(0229)   uchar linex3[17]={' ',0,' ',0,' ',':',' ','0',' ','0',' ',':',' ','0',' ','0','\0'};//显示第1行的字符数组
    0648 E686      LDI	R24,0x66
    0649 E094      LDI	R25,4
    064A 01FE      MOVW	R30,R28
    064B 9632      ADIW	R30,2
    064C E101      LDI	R16,0x11
    064D E010      LDI	R17,0
    064E 93FA      ST	R31,-Y
    064F 93EA      ST	R30,-Y
    0650 939A      ST	R25,-Y
    0651 938A      ST	R24,-Y
    0652 940E0A97  CALL	asgncblk
(0230)  // uchar linex4[11]={'\0'};//显示第1行的字符数组
(0231)   
(0232)  
(0233) /* 
(0234)  for(i=0;i<3;i++)								  //为第2行的字符数组赋值
(0235)   {
(0236)    BCD_ASCII(time[2-i],asc);
(0237)    line2[i*3]=asc[0]&0x7F;
(0238)    line2[i*3+1]=asc[1];
(0239)   } */
(0240)    
(0241)   BCD_ASCII(time[0],asc);   		//秒			  //为第1行的年赋值
    0654 019E      MOVW	R18,R28
    0655 01FA      MOVW	R30,R20
    0656 8100      LDD	R16,Z+0
    0657 DFB1      RCALL	_BCD_ASCII
(0242)   linex3[13]=asc[0];
    0658 8028      LDD	R2,Y+0
    0659 862F      STD	Y+15,R2
(0243)   linex3[15]=asc[1];
    065A 8029      LDD	R2,Y+1
    065B 8A29      STD	Y+17,R2
(0244)  
(0245)    BCD_ASCII(time[1],asc);   		//分				  //为第1行的年赋值
    065C 019E      MOVW	R18,R28
    065D 01FA      MOVW	R30,R20
    065E 8101      LDD	R16,Z+1
    065F DFA9      RCALL	_BCD_ASCII
(0246)   linex3[7]=asc[0];
    0660 8028      LDD	R2,Y+0
    0661 8629      STD	Y+9,R2
(0247)   linex3[9]=asc[1];
    0662 8029      LDD	R2,Y+1
    0663 862B      STD	Y+11,R2
(0248)  
(0249)    BCD_ASCII(time[2],asc);   		//时			  //为第1行的年赋值
    0664 019E      MOVW	R18,R28
    0665 01FA      MOVW	R30,R20
    0666 8102      LDD	R16,Z+2
    0667 DFA1      RCALL	_BCD_ASCII
(0250)   linex3[1]=asc[0];
    0668 8028      LDD	R2,Y+0
    0669 822B      STD	Y+3,R2
(0251)   linex3[3]=asc[1];
    066A 8029      LDD	R2,Y+1
    066B 822D      STD	Y+5,R2
(0252)  
(0253)  
(0254)    BCD_ASCII(time[6],asc);   		//年			  //为第1行的年赋值
    066C 019E      MOVW	R18,R28
    066D 01FA      MOVW	R30,R20
    066E 8106      LDD	R16,Z+6
    066F DF99      RCALL	_BCD_ASCII
(0255)  linex1[1]=asc[0];
    0670 8028      LDD	R2,Y+0
    0671 8A2C      STD	Y+20,R2
(0256)  linex1[3]=asc[1];
    0672 8029      LDD	R2,Y+1
    0673 8A2E      STD	Y+22,R2
(0257)  
(0258)    BCD_ASCII(time[4],asc);   		//月				  //为第1行的年赋值
    0674 019E      MOVW	R18,R28
    0675 01FA      MOVW	R30,R20
    0676 8104      LDD	R16,Z+4
    0677 DF91      RCALL	_BCD_ASCII
(0259)  linex1_1[1]=asc[0];
    0678 8028      LDD	R2,Y+0
    0679 8E29      STD	Y+25,R2
(0260)  linex1_1[3]=asc[1];
    067A 8029      LDD	R2,Y+1
    067B 8E2B      STD	Y+27,R2
(0261)  
(0262)    BCD_ASCII(time[3],asc);   		//日			  //为第1行的年赋值
    067C 019E      MOVW	R18,R28
    067D 01FA      MOVW	R30,R20
    067E 8103      LDD	R16,Z+3
    067F DF89      RCALL	_BCD_ASCII
(0263)  linex2[1]=asc[0];
    0680 8028      LDD	R2,Y+0
    0681 8E2E      STD	Y+30,R2
(0264)  linex2[3]=asc[1];
    0682 8029      LDD	R2,Y+1
    0683 A228      STD	Y+32,R2
(0265)  
(0266)  
(0267)  BCD_ASCII(time[5],asc);   		//星期			  //为第1行的年赋值
    0684 019E      MOVW	R18,R28
    0685 01FA      MOVW	R30,R20
    0686 8105      LDD	R16,Z+5
    0687 DF81      RCALL	_BCD_ASCII
(0268)  linex2_2[1]=asc[1];
    0688 8029      LDD	R2,Y+1
    0689 A22B      STD	Y+35,R2
(0269)  
(0270)  
(0271)   while(LCD12864_readBF());
    068A DDED      RCALL	_LCD12864_readBF
    068B 2300      TST	R16
    068C F7E9      BNE	0x068A
(0272)   LCD12864_gotoXY(1,0);	   					  //第1行,第1列显示
    068D 2722      CLR	R18
    068E E001      LDI	R16,1
    068F DDF6      RCALL	_LCD12864_gotoXY
(0273)  // Delayms(200); 
(0274)   LCD12864_sendstr(" 2 0");	
    0690 EE01      LDI	R16,0xE1
    0691 E011      LDI	R17,1
    0692 DDCB      RCALL	_LCD12864_sendstr
(0275)   LCD12864_sendstr(linex1);	
    0693 018E      MOVW	R16,R28
    0694 5E0D      SUBI	R16,0xED
    0695 4F1F      SBCI	R17,0xFF
    0696 DDC7      RCALL	_LCD12864_sendstr
(0276)   LCD12864_sendstr("年");	
    0697 ED0E      LDI	R16,0xDE
    0698 E011      LDI	R17,1
    0699 DDC4      RCALL	_LCD12864_sendstr
(0277)   LCD12864_sendstr(linex1_1);	
    069A 018E      MOVW	R16,R28
    069B 5E08      SUBI	R16,0xE8
    069C 4F1F      SBCI	R17,0xFF
    069D DDC0      RCALL	_LCD12864_sendstr
(0278)   LCD12864_sendstr("月");	 
    069E ED0B      LDI	R16,0xDB
    069F E011      LDI	R17,1
    06A0 DDBD      RCALL	_LCD12864_sendstr
(0279)   
(0280)   // while(LCD12864_readBF());
(0281)   LCD12864_gotoXY(2,0);		  			  	  //第2行,第3列显示
    06A1 2722      CLR	R18
    06A2 E002      LDI	R16,2
    06A3 DDE2      RCALL	_LCD12864_gotoXY
(0282)   // Delayms(200);
(0283)   LCD12864_sendstr(linex2);	
    06A4 018E      MOVW	R16,R28
    06A5 5E03      SUBI	R16,0xE3
    06A6 4F1F      SBCI	R17,0xFF
    06A7 DDB6      RCALL	_LCD12864_sendstr
(0284)   LCD12864_sendstr("号");
    06A8 ED08      LDI	R16,0xD8
    06A9 E011      LDI	R17,1
    06AA DDB3      RCALL	_LCD12864_sendstr
(0285)   LCD12864_sendstr("  星期");
    06AB ED01      LDI	R16,0xD1
    06AC E011      LDI	R17,1
    06AD DDB0      RCALL	_LCD12864_sendstr
(0286)   LCD12864_sendstr(linex2_2);
    06AE 018E      MOVW	R16,R28
    06AF 5D0E      SUBI	R16,0xDE
    06B0 4F1F      SBCI	R17,0xFF
    06B1 DDAC      RCALL	_LCD12864_sendstr
(0287)     // while(LCD12864_readBF());
(0288)   LCD12864_gotoXY(3,0);		  			  	  //第2行,第3列显示
    06B2 2722      CLR	R18
    06B3 E003      LDI	R16,3
    06B4 DDD1      RCALL	_LCD12864_gotoXY
(0289)   // Delayms(200);
(0290)   LCD12864_sendstr(linex3);	
    06B5 018E      MOVW	R16,R28
    06B6 5F0E      SUBI	R16,0xFE
    06B7 4F1F      SBCI	R17,0xFF
    06B8 DDA5      RCALL	_LCD12864_sendstr
(0291)      while(LCD12864_readBF());
    06B9 DDBE      RCALL	_LCD12864_readBF
    06BA 2300      TST	R16
    06BB F7E9      BNE	0x06B9
(0292)   LCD12864_gotoXY(4,2);		  			  	  //第2行,第3列显示
    06BC E022      LDI	R18,2
    06BD E004      LDI	R16,4
    06BE DDC7      RCALL	_LCD12864_gotoXY
(0293)   // Delayms(200);
(0294)   LCD12864_sendstr("4 取消");	
    06BF EC0A      LDI	R16,0xCA
    06C0 E011      LDI	R17,1
    06C1 DD9C      RCALL	_LCD12864_sendstr
    06C2 96A5      ADIW	R28,0x25
    06C3 940E0A83  CALL	pop_gset1
    06C5 9508      RET
_shizhong:
  dis_y                --> Y+1
  dis_x                --> Y+1
  shift                --> Y+1
  setdat               --> Y+1
  setadd               --> Y+1
  settime              --> Y+7
  set_num              --> R20
  i                    --> R10
  gettime              --> Y+0
  RD_TFLAG             --> R12
  n                    --> R22
    06C6 940E0A7A  CALL	push_gset4
    06C8 972E      SBIW	R28,0xE
(0295)  
(0296)   
(0297)  /*
(0298)  BCD_ASCII(time[6],asc);   						  //为第1行的年赋值
(0299)  line1[0]=asc[0];
(0300)  line1[1]=asc[1];
(0301)  BCD_ASCII(time[4],asc);						  //为第1行的月赋值
(0302)  line1[3]=asc[0];
(0303)  line1[4]=asc[1];
(0304)  BCD_ASCII(time[3],asc);						  //为第1行的日赋值
(0305)  line1[6]=asc[0];
(0306)  line1[7]=asc[1];
(0307)  BCD_ASCII(time[5],asc);						  //为第1行的星期赋值
(0308)  line1[9]=asc[1];
(0309)  
(0310)  
(0311)  while(LCD12864_readBF());
(0312)   LCD12864_gotoXY(2,1);	   					  //第1行,第1列显示
(0313)  // Delayms(200); 
(0314)   LCD12864_sendstr("20");	
(0315)   LCD12864_sendstr(line1);	 
(0316)    while(LCD12864_readBF());
(0317)   LCD12864_gotoXY(3,2);		  			  	  //第2行,第3列显示
(0318)   // Delayms(200);
(0319)   LCD12864_sendstr(line2);	
(0320) 
(0321)     LCD12864_gotoXY(4,2);		  			  	  //第2行,第3列显示
(0322)   // Delayms(200);
(0323)   LCD12864_sendstr("4 取消");	
(0324)   
(0325)  */ 
(0326)  /*
(0327)  
(0328)  while(LCD1602_readBF());
(0329)  LCD1602_gotoXY(1,2);	 						  //第1行从第3个位置开始显示
(0330)  LCD1602_sendstr("20");							  //将07年显示为2007的形式
(0331)  LCD1602_sendstr(line1); 				

⌨️ 快捷键说明

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