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

📄 dzb.lst

📁 这是我看了《十天学会单片机》(郭天祥的教程)第十课时写的
💻 LST
📖 第 1 页 / 共 2 页
字号:
 238   2      		while(temp!=0xfb){temp=P0;}
 239   2      
 240   2      	}
 241   1      
C51 COMPILER V6.12  DZB                                                                    01/13/2009 19:14:52 PAGE 5   

 242   1      	P0=0xf7;
 243   1      	temp=P0;
 244   1      	if (temp!=0xf7)
 245   1      	{
 246   2      		delay1(5);
 247   2      		temp=P0;
 248   2      		if (temp!=0xf7)
 249   2      		{
 250   3      		     switch(temp)
 251   3      						{
 252   4      							case 0xe7:num=13;
 253   4      								break;
 254   4      							case 0xd7:num=9;
 255   4      								break;
 256   4      							case 0xb7:num=5;
 257   4      								break;
 258   4      							case 0x77:num=1;
 259   4      								break;
 260   4      						}
 261   3      		}
 262   2      		while(temp!=0xf7){temp=P0;}
 263   2      
 264   2      	}
 265   1      
 266   1      P0=0xff;
 267   1      return num;
 268   1      
 269   1      }//键盘扫描程序over
 270          
 271          
 272          
 273          
 274          void init()//初始化函数
 275          {
 276   1      	shi=23;//小时
 277   1      	fen=59;//分钟
 278   1      	miao=58;//秒钟
 279   1      	
 280   1      
 281   1      	TMOD=0x01;//设置定时器工作模式
 282   1      	TH0=(65536-51000)/256;//装初值让它5毫秒中断一次count++
 283   1      	TL0=(65536-51000)%256;
 284   1      	EA=1;//打开总中断
 285   1      	ET0=1;//开定时器中断
 286   1      	TR0=1;//开定时器
 287   1      }
 288          
 289          void main()//主函数
 290          {
 291   1      	uint san;//这个变量是用来显示闪烁效果的
 292   1      	init();//初始化
 293   1         wz=1;
 294   1      	while(1)//进入大循环
 295   1      	{
 296   2      		if(gnj!=0)//判断设置键
 297   2      		{
 298   3      			wz=1;
 299   3      			while(gnj==1)//功能键=1时设置秒钟
 300   3      			{
 301   4      				
 302   4      			   if(san<30)//闪烁显示秒
 303   4      				{
C51 COMPILER V6.12  DZB                                                                    01/13/2009 19:14:52 PAGE 6   

 304   5      					xianshi(shi,fen,miao);
 305   5      				}
 306   4      				if(san>40)
 307   4      				{
 308   5      					xianshi(shi,fen,70);//让显示函数,在秒的位置显示点
 309   5      				}
 310   4      		
 311   4      	         san++;
 312   4      				if(san>60)
 313   4      				{
 314   5      					san=0;
 315   5      	         }
 316   4      				keyzhi=keyscan();//调用键盘
 317   4      				
 318   4      				if(keyzhi!=0&keyzhi<11)//判断键盘在1到10之间
 319   4      				{
 320   5      					
 321   5      					if(wz==1)//wz用来控制设置的是十位还是个位
 322   5      					{
 323   6      						miao=(keyzhi-1)*10;//设置秒十位
 324   6      						if(miao>59)miao=50;
 325   6      						keyzhi=0;
 326   6      						
 327   6      					}
 328   5      					if(wz==2)
 329   5      					{
 330   6      						miao=miao+keyzhi-1;//设置个位
 331   6      						keyzhi=0;
 332   6      						wz=0;
 333   6      						gnj++;
 334   6      						
 335   6      					}
 336   5      					wz++;
 337   5      				 }
 338   4      				
 339   4      			}
 340   3      				wz=1;
 341   3       			while(gnj==2)//设置分钟
 342   3      			{
 343   4      				
 344   4      			   if(san<20)
 345   4      				{
 346   5      					xianshi(shi,fen,miao);
 347   5      				}
 348   4      				if(san>40)
 349   4      				{
 350   5      					xianshi(shi,70,miao);
 351   5      				}
 352   4      		
 353   4      	         san++;
 354   4      				if(san>60)
 355   4      				{
 356   5      					san=0;
 357   5      	         }
 358   4      				keyzhi=keyscan();
 359   4      				
 360   4      				if(keyzhi!=0&keyzhi<11)
 361   4      				{
 362   5      					
 363   5      					if(wz==1)
 364   5      					{
 365   6      						fen=(keyzhi-1)*10;
C51 COMPILER V6.12  DZB                                                                    01/13/2009 19:14:52 PAGE 7   

 366   6      						if(fen>59)fen=50;
 367   6      						keyzhi=0;
 368   6      						
 369   6      					}
 370   5      					if(wz==2)
 371   5      					{
 372   6      						fen=fen+keyzhi-1;
 373   6      						keyzhi=0;
 374   6      						wz=0;
 375   6      						gnj++;
 376   6      						
 377   6      					}
 378   5      					wz++;
 379   5      				 }
 380   4      				
 381   4      			 }	
 382   3               wz=1;
 383   3      			while(gnj==3)//设置小时
 384   3      			{
 385   4      				
 386   4      			   if(san<20)
 387   4      				{
 388   5      					xianshi(shi,fen,miao);
 389   5      				}
 390   4      				if(san>40)
 391   4      				{
 392   5      					xianshi(70,fen,miao);
 393   5      				}
 394   4      		
 395   4      	         san++;
 396   4      				if(san>60)
 397   4      				{
 398   5      					san=0;
 399   5      	         }
 400   4      				keyzhi=keyscan();
 401   4      				
 402   4      				if(keyzhi!=0&keyzhi<11)
 403   4      				{
 404   5      					
 405   5      					if(wz==1)
 406   5      					{
 407   6      						shi=(keyzhi-1)*10;
 408   6      						if(shi>20)shi=20;
 409   6      						keyzhi=0;
 410   6      						
 411   6      					}
 412   5      					if(wz==2)
 413   5      					{
 414   6      						shi=shi+keyzhi-1;
 415   6      						if(shi>23)shi=23;
 416   6      						keyzhi=0;
 417   6      						wz=0;
 418   6      						gnj=0;
 419   6      
 420   6      					}
 421   5      					wz++;
 422   5      				 }
 423   4      				
 424   4      			 }
 425   3      	
 426   3      		}
 427   2      		else
C51 COMPILER V6.12  DZB                                                                    01/13/2009 19:14:52 PAGE 8   

 428   2      		{
 429   3      			TR0=1;//打开定时器
 430   3      		}
 431   2      		keyzhi=keyscan();//扫描键盘
 432   2      		xianshi(shi,fen,miao);//显示时分秒
 433   2      	}
 434   1      
 435   1      }
 436          
 437          void timer0() interrupt 1//定时器函数
 438          {
 439   1      	TH0=(65536-51189)/256;
 440   1      	TL0=(65536-51190)%256;
 441   1      	count++;
 442   1      	if(count==18)//加到18正好1秒中
 443   1      	{
 444   2      			
 445   2      		count=0;
 446   2      
 447   2      		
 448   2      		miao++;//秒加一
 449   2      		if(miao==60)//60秒加一分
 450   2      		{
 451   3      			miao=0;
 452   3      			fen++;
 453   3      			if(fen==60)//60分加一小时
 454   3      			{
 455   4      				fen=0;
 456   4      				shi++;
 457   4      				if(shi==24)//到24小时加以天
 458   4      				{
 459   5      					shi=0;
 460   5      					
 461   5      				}
 462   4      			}
 463   3      		}
 464   2      	}	
 465   1      }
 466          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1384    ----
   CONSTANT SIZE    =     20    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12      14
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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