5.c

来自「上传一些」· C语言 代码 · 共 101 行

C
101
字号
#include<reg52.h>
#include<intrins.h>
sbit m=P2^5;
sbit feng=P2^3;
unsigned char flag,flag1,flag2,flag3,flag4,h,u,i;
unsigned int x,y,t;
void delay()  //500ms
		{
			for(x=0;x<229;x++)
				for(y=0;y<250;y++);
		}
void delay1()  //500ms
		{
			for(x=0;x<129;x++)
				for(y=0;y<250;y++);
		}
void main()
		{
			m=1;
			flag2=0;
			h=0xfe;
			P1=h;
			TMOD=0x01;
			EA=1;
			ET0=1;
			TH0=0x4c;
			TL0=0x00;
			TR0=1;
			while(1)			//启动大循环
				{
						if(flag4==0)	//判断灯是该上下流动还是该闪烁,0为上下流动
							{
									
									if(flag1==1)		//保证每隔1s运行一次
										{
												if(flag3==0)
													{
														flag1=0;
														P1=_crol_(h,1);	//向左移一位,向下依次亮
														feng=!feng;
														h=P1;
														flag2++;				//判断是否已到了底
														if(flag2==7) 
															{
																flag2=0;		//关闭向左移
																flag3=1;		//开启向右移
																delay1();	
															}	
													}
												if(flag3==1)			
													{
														flag1=0;
														P1=_cror_(h,1);	//向左移一位,向下依次亮
														feng=!feng;
														h=P1;
														flag2++;
														if(flag2==7)	 //判断是否已到了底
															{
																flag2=0;		//关闭向左移
																flag3=0;		//开启向右移
																flag4=1;		//打开闪烁,关闭流动
																delay1();
															}	
													}
											}
							}
							if(flag4==1)
								{
									TR0=0;		//由于闪烁时间长,先关闭定时器
									u=0xff;
									i=0x00;
									P1=0x00;
									flag4=0;		//打开流动,关闭闪烁
									delay();
									for(t=0;t<8;t++)	//闪烁5次
										{
											i=P1;
											P1=u;
											u=i;	
											feng=!feng;
											delay();
										}	
									TR0=1;						
								}				
				}

		}

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

⌨️ 快捷键说明

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