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

📄 7.c

📁 上传一些
💻 C
字号:
#include<reg52.h>			//整过过程是通过一级一级的运行与判断进行的,在每一次显示效果完成后,关闭当前,启动下一效果,即进入下一个效果,
#include<intrins.h>
sbit m=P2^5;
char code table[]={0x7e,0xbd,0xdb,0xe7,0x7e,0xbd,0xdb,0xe7,0x7e,0xbd,0xdb,0xe7};
char code table1[]={0xe7,0xdb,0xbd,0x7e,0xe7,0xdb,0xbd,0x7e,0xe7,0xdb,0xbd,0x7e};
unsigned int x,y,m0,m1,m2,t0,t,t1,t2,h,flag,flag1,flag2,flag3,flag4,flag5,flag6,flag7,flag8,u,i;
void delay1()  //500ms
		{
			for(x=0;x<129;x++)
				for(y=0;y<250;y++);
		}


void main()
		{
			m=1;
			t0=0xaa;
			t1=0xfe;
			flag2=1;
			TMOD=0x01;
			EA=1;
			ET0=1;
			TH0=0x4c;
			TL0=0x00;
			TR0=1;
			while(1)					//进入大循环
					{
							if(flag1==1)	//保证每隔一秒钟灯操作一次
								{		
										flag1=0;
										if(flag2==1)	//间隔1s先奇数灯亮在偶数灯亮
											{
												
												P1=_crol_(t0,1);
												t0=P1;
												flag3++;
											}
										if(flag3==4)			//一个灯上下循环亮
											{
												flag2=0;				//关闭让灯奇偶亮
															if(flag4==0)			//参照作业流水灯5
																	{
																	
																		P1=0xfe;
																		TR0=0;
																		delay1();
																		delay1();
																		TR0=1;
																		P1=_crol_(t1,1);
																		
																		t1=P1;
																		flag5++;
																		if(flag5==7) 
																			{
																			flag5=0;	
																			flag4=1;
																			TR0=0;
																			delay1();
																			delay1();
																			TR0=1;
																			}	
																	}
															if(flag4==1)
																	{
																		
																			P1=_cror_(t1,1);
																		
																			t1=P1;
																			flag5++;
																			if(flag5==7) 
																				{
																					m0++;
																					flag5=0;	
																					flag4=0;
																					if(m0==3)	
																							{m0=0;flag6=1;flag3=0;}
																					delay1();
																				}	
																	}
																
											
											}
										if(flag6==1)		//两个分别从两边往中间流动三次
											{
												P1=table[m1];		//用数组的方式调用灯的两灭
												m1++;
												if(m1==11)
													{
														m1=0;
														flag6=0;
														flag7=1;	
														TR0=0;		//为了最后的一次过程也亮一秒在进入下一过程,先关闭定时器,延时一秒,在打开,否则影响后面的定时
														delay1();
														delay1();
														TR0=1;
													}
											}
										if(flag7==1)
											{
												P1=table1[m2];
												m2++;
												if(m2==11)
													{
														m2=0;
														flag7=0;
														flag8=1;	
														TR0=0;
														delay1();
														delay1();
														TR0=1;
													}		
			
											}
										if(flag8==1)			//8个全部闪烁3次,参照作业流水灯5
													{
														TR0=0;
														u=0xff;
														i=0x00;
														P1=0x00;
														flag8=0;
														delay1();
														for(t=0;t<8;t++)
															{
																i=P1;
																P1=u;
																u=i;	
																TR0=0;
																delay1();
																delay1();
																TR0=1;
															}	
														flag2=1;
														TR0=1;						
													}		
								}
				}
		}




void inter(void) interrupt 1 using 1
		{
		
			TH0=0x4c;
			TL0=0x00;
			flag++;
			if(flag==20)
				{
					flag=0;
					flag1=1;
				}
		}

⌨️ 快捷键说明

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