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

📄 复件.c

📁 单片机TCP IP software
💻 C
📖 第 1 页 / 共 5 页
字号:
	 	*p1=E7TIMES;   /*给方向后松闸延时0397H*/
	 	p1++;
	 	*p1=E4TIMES;   /*撤速后抱闸延时0398H*/
	 	p1++;
	 	*p1=E2TIMES;   /*松闸后输出速度0399H*/
	 	p1++;
	 	*p1=E6TIMES;   /*抱闸后撤方向延时039AH*/
	 	p1++;
	 	*p1=FIRST_LOU; /*楼层偏置039BH*/
	 	p1++;
	 	*p1=RUN_STATION;  /*基站楼层039CH*/
	 	p1++;
	 	*p1=FLOOR_FIRE;   /*消防楼层039DH*/
	 	p1++;
	 	*p1=SPECIAL;      /*特殊服务楼层039EH*/
	 	p1++;
	 	*p1=PASSWORD1;    /*密码039FH*/
	 	p1++;
	 	*p1=SP1_PULSE;    /*中速换速脉冲03A0H--低8位*/
	 	p1++;
	 	*p1=SP1_PULSE;    /*中速换速脉冲03A1H--高8位*/
	 	*p1>>=8;
	 	p1++;
	 	*p1=SP2_PULSE;     /*高速换速脉冲03A2H--低8位*/
	 	p1++;
		*p1=SP2_PULSE;     /*高速换速脉冲03A3H--高8位*/
	 	*p1>>=8;
	 	p1++;
	 	*p1=SP3_PULSE;     /*超高速换速脉冲03A4H--低8位*/
	 	p1++;
	 	*p1=SP3_PULSE;     /*超高速换速脉冲03A5H--高8位*/
	 	*p1>>=8;
	 }
	 	p1=(unsigned int*)0x03A6;
	 	*p1=RUN_NUM;     /*运行次数03A6H--低8位*/
	 	p1++;
	 	*p1=RUN_NUM;     /*运行次数03A7H--高8位*/
	 	*p1>>=8;
	 	p1++;
	 	*p1=RUN_TIME;      /*运行时间03A8H--低8位*/
	 	p1++;
	 	*p1=RUN_TIME;      /*运行时间03A9H--高8位*/
		 *p1>>=8;
		 p1++;

	 /*以上是实时显示数据*/ 
	 if(SCITX_FLAG==2)       /*取查阅脉冲*/
	 {
	 	*p1=SCI_NUM2;        /*查阅楼层03AAH*/
	 	p1++;                /*p1=03AAH*/
	 	p2=(unsigned int*)&UPPULSE1;
	 	p2+=(SCI_NUM2-1);
	 	*p1=*p2;            /*脉冲数*/
	 	p1++;
	 	*p1=*p2;
	 	*p1>>=8;
	    p1++;
	    *p1=ALL_PULSE;      /*总脉冲*/
	 	p1++;
	 	*p1=ALL_PULSE;
	 	*p1>>=8;
	    p1++;
	    *p1=ALL_PULSE1;     /*总脉冲高位*/
	 	p1++;
	 	*p1=ALL_PULSE1;
	 	*p1>>=8;
	 }
	 else if(SCITX_FLAG==5) /*取查阅故障状态*/
	 {
	 	p2=(unsigned int*)&TR_STATUS;
	 	p2+=(SCI_NUM2-1)*8;
	 	*p1=SCI_NUM2;         /*第几次故障03AAH*/
	 	p1++;
	 	*p1=*p2;         /*故障代码*/
	 	p1++;
	 	p2++;
	 	*p1=*p2;         /*故障所处楼层*/
	 	p1++;
	 	p2++;
	 	*p1=*p2;         /*故障时间*/
	 	p1++;
	 	*p1=*p2;         
	 	*p1>>=8;
	 	p1++;
	 	p2++;
	 	*p1=*p2;         /*故障时已运行次数*/
	 	p1++;
	 	*p1=*p2;
	 	*p1>>=8;
	 	p1++;
	 	p2++;
	 	*p1=*p2;         /*故障时电梯状态*/
	 }
}

void SPI_init()
{   
	SPICCR=0x0047;      /*4:SPICLOCK上升沿输出数据下降沿输入数据无数据为低,数据字符长度为8*/
	SPICTL=0x0006;     /*主方式,禁止中断*/ 
	SPIBRR=0x000F;       /*1M*/
	SPICCR=0x00C7;
} 	 

void Load_Srom()
{
		Cpld_Init();
		
		for(i=1;i<=0x01FF;i++)
		{
			asm("	NOP	 ");
		}
		
		/*上电参数调入内存*/ 	
 		Page_Read1(); /*读断电保存的数据*/
		Page_Read2(); /*读自学习完毕保存的数据*/
		Page_Read3(); /*读液晶修改后保存的数据*/
		
		LIT1=0; 
		LIT2=0; 
		LIT1SYMBOL=45; 
		LIT2SYMBOL=45;
		LIT1TIME=0; 
		LIT2TIME=0;  
		
		mach=0;
		k10=0;
		BZTIME=0;
		BZTIMESYMBOL=10;
		CB1TIME=0;
		CB1TIMESYMBOL=20; 
		mach_state=1; 
		
		/*调整参数*/
	//	First_adjust();/*固定参数*/
		First_adj1();  /*液晶调整参数*/ 
	
		b2=0x0000;
		b3=0x8600;/*给EEPROM地址*/	
		Read_Data();    /*b1=*0x0086*/
		CHECKCODE1=b1;  /*读取地址0086的内容*/
		
		b2=0x0000;
		b3=0x8800;/*给EEPROM地址*/	
		Read_Data();
		CHECKCODE2=b1;  /*读取地址0088的内容*/
		
		a2=0;
		k4=0; 
		k10=0;
		k11=0;
		k12=0;/*触点粘连限制电梯启动标志*/
		k26=0; 
		b13=0;
		k16=0;
		k18=0;  
		zz1=0;
		zz2=0;
		yj=0;
		IA_BUF=IA_BUF1;
		IB_BUF=IB_BUF1;
		IE_BUF=IE_BUF1;
		IF_BUF=IF_BUF1;
		IN_AB=IN_BB=IN_CB=0;
		STATEBOX=0;
		First_Memory(); 
		
		b2=0x0000;
		b3=0x8000;	
		Read_Data(); 
		i9=b1;   /*读取地址0080的内容*/
		                                     
		Write_Enable();
		Read_Status();
		while(~b1&0x0002)
		{
			 Read_Status();
		}
			
		b2=0x0000;
		b3=0x8000;
		b1=0x0000;
		Write_Data(); /*往地址0080里写b1=0*/ 
		
		JSBAOY=v3; 
    	JSBAOY&=0x00ff;
    	JSBAOY<<=8;
    	JSBAOY&=0xff00;
    	JSBAOY|=v2;  
    	BYQD=0;
		
		
		for(i=1;i<=0x00FF;i++)
		{
			asm("	NOP	 ");
		}   
}

void Save_Srom()
{
	if(JOPSYMBOL&0x0001) 	/*是否参数已保存*/
	{
		 DIS_SROM();
	}
	else
	{
		Save_Data1();
		Write_Enable();
		Read_Status();
		while(~b1&0x0002)   /*写使能是否有效*/
		{
			 Read_Status();
		}	
		b2=0x0000;
		b3=0x8000;
		b1=0x0600;
		Write_Data();   /*往8000写入0006*/
		JOPSYMBOL|=0x0001;	/*置参数已保存标志*/
		Watch_dog();
	}
}


void Tiao_Shi()
{
	Write_Enable();
	Read_Status();
	while(~b1&0x0002)
	{
		 Read_Status();
	}
	b2=0x0000;
	b3=0x8600;
	b1=0x8600;
	Write_Data();
	
	Write_Enable();
	Read_Status();
	while(~b1&0x0002)
	{
		 Read_Status();
	}	
	b2=0x0000;
	b3=0x8800;
	b1=0x8800;
	Write_Data(); 
}

void Tiao_Shi1()
{
	Write_Enable();
	Read_Status();
	while(~b1&0x0002)
	{
		 Read_Status();
	}	
	
	b2=0x0000;
	b3=0x8200;
	b1=0x0800;
	Write_Data();
	
}

void Save_Data1()
{
	p1=(unsigned int*)0x0210;   /*所需保存数据首地址*/
	b2=0x0100;
	b3=0x0000;
    for(k=1;k<=6;k++)    /* 共保存192个字节6*32 */
    {
    	Watch_dog();
    	Write_Enable();
		Read_Status();
		while(~b1&0x0002)
		{
			 Read_Status();
		}
    	Page_Write();
    	b3+=0x2000;
    }	
}

void Save_Data2()
{
	p1=(unsigned int*)0x0280;   /*所需保存数据首地址*/
	b2=0x0200;
	b3=0x0000;
    for(k=1;k<=5;k++)    /* 共保存160个字节5*32 */
    {
    	Write_Enable();
		Read_Status();
		while(~b1&0x0002)
		{
			 Read_Status();
		}
    	Page_Write();
    	b3+=0x2000;
    }
}	

void Save_Data3()
{
	p1=(unsigned int*)0x02D0;   /*所需保存数据首地址*/
	b2=0x0300;
	b3=0x0000;
    for(k=1;k<=3;k++)    /* 共保存96个字节3*32 */
    {
    	Write_Enable();
		Read_Status();
		while(~b1&0x0002)
		{
			 Read_Status();
		}
    	Page_Write();
    	b3+=0x2000;
    }
}

void Save_Data4()
{
	p1=(unsigned int*)0x0280;   /*所需保存数据首地址*/
	b2=0x0200;
	b3=0x0000; 
	for(j=1;j<=3;j++)
	{
		Write_Enable();
		Read_Status();
		while(~b1&0x0002)
		{
			 Read_Status();
		}
		b1=*p1;
		Write_Data();
	
		Write_Enable();
		Read_Status();
		while(~b1&0x0002)
		{
		 	Read_Status();
		}
		b3+=0x0100;
		b1=*p1;
		b1<<=8;
		Write_Data();
		b3+=0x0100;
		p1++;
	}
}
	
	/*读状态寄存器*/                   
void Read_Status()
{
	EN_SROM();   /*ROM使能*/ 
	for(i=1;i<15;i++)
	{
		asm("	NOP	 ");
	}
	SPITXBUF=0x0500;
	while((SPISTS&0x0040)==0)
	{}
	b=SPIRXBUF;  /*清中断标志*/
	for(i=1;i<10;i++)
	{
		asm("	NOP	 ");
	}
	SPITXBUF=0;
	while((SPISTS&0x0040)==0)
	{}
	b1=SPIRXBUF;
	for(i=1;i<10;i++)
	{
		asm("	NOP	 ");
	}
	DIS_SROM();  /*关闭ROM使能*/
	for(i=1;i<15;i++)
	{
		asm("	NOP	 ");
	}
}

   /*写使能*/
void Write_Enable()
{
	EN_SROM();	/*	/CS应该为低电平*/
	for(i=1;i<15;i++)
	{
		asm("	NOP	 ");
	}
	SPITXBUF=0x0600;
	while((SPISTS&0x0040)==0)
	{}
	b=SPIRXBUF;
	for(i=1;i<10;i++)
	{
		asm("	NOP	 ");
	}
	DIS_SROM();
	for(i=1;i<15;i++)
	{
		asm("	NOP	 ");
	}
}

	/*写状态寄存器*/
void Write_Status()
{
	EN_SROM();
	for(i=1;i<15;i++)
	{
		asm("	NOP	 ");
	}
	SPITXBUF=0x0100;  /*写状态寄存器*/
	while((SPISTS&0x0040)==0)
	{} 
	b=SPIRXBUF;  /*清中断标志*/
	SPITXBUF=b1;
	while((SPISTS&0x0040)==0)
	{} 
	b=SPIRXBUF;   /*清中断标志*/
	for(i=1;i<10;i++)
	{
		asm("	NOP	 ");
	} 
	DIS_SROM();
	for(i=1;i<15;i++)
	{
		asm("	NOP	 ");
	} 
	asm("	NOP	 ");
}

	/*按页写-只可以写32个字节*/
void Page_Write()
{
	EN_SROM();
	for(i=1;i<15;i++)
	{
		asm("	NOP	 ");
	}
	SPITXBUF=0x0200;
	while((SPISTS&0x0040)==0)
	{} 
	b=SPIRXBUF;
    SPITXBUF=b2;   /*高位地址*/
	while((SPISTS&0x0040)==0)
	{}
	b=SPIRXBUF;                      
	SPITXBUF=b3;   /*低位地址*/
	while((SPISTS&0x0040)==0)
	{} 
	b=SPIRXBUF;
	for(j=1;j<=16;j++)
	{
    	b1=*p1;
    	SPITXBUF=b1;   /*数据*/
		while((SPISTS&0x0040)==0)
		{}
		b=SPIRXBUF;
		b1=*p1;
		b1<<=8;
		SPITXBUF=b1;   /*数据*/
		while((SPISTS&0x0040)==0)
		{}
		b=SPIRXBUF;
		p1++;
	}
	for(i=1;i<10;i++)
	{
		asm("	NOP	 ");
	}
	DIS_SROM();
	for(i=1;i<15;i++)
	{
		asm("	NOP	 ");
	} 	
	Read_Status();
	while(b1&0x0001)
	{
		 Read_Status();
	}
	asm("	NOP	 ");
}

	/*写数据*/ 
void Write_Data()
{	   
	EN_SROM();
	for(i=1;i<15;i++)
	{
		asm("	NOP	 ");
	}
	SPITXBUF=0x0200;
	while((SPISTS&0x0040)==0)
	{} 
	b=SPIRXBUF;
    SPITXBUF=b2;   /*高位地址*/
	while((SPISTS&0x0040)==0)
	{}
	b=SPIRXBUF;                      
	SPITXBUF=b3;   /*低位地址*/
	while((SPISTS&0x0040)==0)
	{} 
	b=SPIRXBUF;
	SPITXBUF=b1;   /*数据*/
	while((SPISTS&0x0040)==0)
	{}
	b=SPIRXBUF;
	for(i=1;i<10;i++)
	{
		asm("	NOP	 ");
	} 
	DIS_SROM();
	for(i=1;i<15;i++)
	{
		asm("	NOP	 ");
	} 	
	Read_Status();
	while(b1&0x0001)
	{
		 Read_Status();
	}
	asm("	NOP	 ");
}

void Page_Read1()
{
	b2=0x0100;
	b3=0x0000;
	b8=96;
	p1=(unsigned int*)0x0210;
	Page_Read();
}

void Page_Read2()
{
	b2=0x0200;
	b3=0x0000;
	b8=76;
	p1=(unsigned int*)0x0280;
	Page_Read();
} 

void Page_Read3()
{
	b2=0x0300;
	b3=0x0000;
	b8=48;
	p1=(unsigned int*)0x02D0;
	Page_Read();
} 

	/*连续读数据-/CS拉高则停止读*/
void Page_Read()
{
    EN_SROM(); 
    for(i=1;i<15;i++)
	{
		asm("	NOP	 ");
	}
	SPITXBUF=0x0300;
	while((SPISTS&0x0040)==0)
	{}
	b=SPIRXBUF;
    SPITXBUF=b2; 	/*高位地址*/
	while((SPISTS&0x0040)==0)
	{} 
	b=SPIRXBUF;
	SPITXBUF=b3;	/*低位地址*/	
	while((SPISTS&0x0040)==0)
	{}
	b=SPIRXBUF;          
	for(j=1;j<=b8;j++)    /*load 88 words from serial EEprom*/
	{
		for(i=1;i<10;i++)
		{
			asm("	NOP	 ");
		}
		SPITXBUF=0;
		while((SPISTS&0x0040)==0)
		{}
		b1=SPIRXBUF;
		*p1=b1;
		*p1<<=8;    /*取高8位*/
		for(i=1;i<10;i++)
		{

⌨️ 快捷键说明

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