6.c

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

C
167
字号
#include<reg52.h>
#include<intrins.h>
sbit m=P2^5;
sbit jian=P1^7;
unsigned char flag,flag1,flag2,flag3,flag4,flag5,flag6,flag7,flag8;
unsigned int x,y,t0,t1,t2,t3,t4,t5,t6,t7,x,y;
void delay()  //1s
		{
			for(x=0;x<400;x++)
				for(y=0;y<400;y++);
		}
void init()
		{
			t0=0xfe;	//分别为1个2个3个。。。灯
			t1=0xfc;	//	亮时的初始状态
			t2=0xf8;	
			t3=0xf0;	
			t4=0xe0;
			t5=0xc0;
			t6=0x80;	
			t7=0x00;
			P1=0xfe;
		}

void main()
		{
			flag1=1;
			m=1;
			t0=0xfe;
			t1=0xfc;
			t2=0xf8;
			t3=0xf0;	
			t4=0xe0;
			t5=0xc0;
			t6=0x80;	
			t7=0x00;
			P1=0xfe;
			TMOD=0x01;
			EA=1;
			ET0=1;
			TH0=0x4c;
			TL0=0x00;
			TR0=1;
			while(1)			//启动大循环
				{
				if(flag8==1)	//保证每隔1s运行一次
						{		flag8=0;
								if(flag1==1)		//进入一个灯的循环
									{
										P1=_crol_(t0,1);
										t0=P1;
										if(jian==0)		//判断最高位P1^7是否为0,如果是则先让其显示1s,在进入下一个状态
												{
													TR0=0;
													delay();
													flag1=0;
													flag2=1;	
													P1=t1;
													delay();
													TR0=1;
												}
									}
								if(flag2==1)	//进入二个灯的循环
									{
										P1=_crol_(t1,1);
										t1=P1;
										if(jian==0)
												{
													TR0=0;
													delay();
													flag2=0;
													flag3=1;	
													P1=t2;
													delay();TR0=1;
												}
									}
								if(flag3==1)	//进入三个灯的循环
									{
										P1=_crol_(t2,1);
										t2=P1;
									
										if(jian==0)
												{	
													TR0=0;
													delay();
													flag3=0;
													flag4=1;	
													P1=t3;
													delay();TR0=1;
												}
									}
								if(flag4==1)	//进入四个灯的循环
									{
									
										P1=_crol_(t3,1);
										t3=P1;
										if(jian==0)
												{	
													TR0=0;
													delay();
													flag4=0;
													flag5=1;	
													P1=t4;
													delay();TR0=1;
												}
									}
								if(flag5==1)	//进入五个灯的循环
									{
									
										P1=_crol_(t4,1);
										t4=P1;
										if(jian==0)
												{	
													TR0=0;
													delay();
													flag5=0;
													flag6=1;	
													P1=t5;
													delay();TR0=1;
												}
									}
								if(flag6==1)	//进入六个灯的循环
									{
									
										P1=_crol_(t5,1);
										t5=P1;
										if(jian==0)
												{	
													TR0=0;
													delay();
													flag6=0;
													flag7=1;	
													P1=t6;
													delay();TR0=1;
												}
									}
								if(flag7==1)	//进入七个灯的循环
									{
										
										P1=_crol_(t6,1);
										t6=P1;
										if(jian==0)
												{	delay();
													flag7=0;
													flag1=1;
													init();	//在一次循环过后必须再次初始化,否则由于P1^7的预留值,造成下一轮的混乱
							
												}
									}
						}	
				}
		}


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

⌨️ 快捷键说明

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