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

📄 复件.c

📁 单片机TCP IP software
💻 C
📖 第 1 页 / 共 5 页
字号:
                      

void	SYS_init(); 

void	SCI_init();

void	Timeprotect();

void 	Sci_Receive1();
void 	Sci_RxAdj();
void 	Sci_TxAdj();
void    SCI_SendAAA();
void    SCI_SendABC();

void	Data_Store();
void	SPI_init();
void 	Read_Status();
void 	Write_Enable();
void    Write_Status();
void	Read_Data();
void 	Page_Read();
void 	Page_Read1();
void 	Page_Read2();
void 	Page_Read3();
void	Write_Data();
void 	Page_Write();
void	Load_Srom();
void 	Save_Srom();

void 	Save_Data1();
void 	Save_Data2();
void 	Save_Data3();
void 	Save_Data4();
void 	Tiao_Shi();
void 	Tiao_Shi1();

void	CAN_init(); 
void 	can_read();
void	Can_Receive();
void 	Can_Send1();
void 	Can_Send2(); 
void 	Can_Send3();
        

void 	IO_init();
void 	Io_Receive();
void	Io_Send();
void 	Cpld_Init();

void 	EVB_init();
void	EVA_init();
 
void 	Watch_dog();
void 	PHANTOM();

void 	First_Memory();
void 	First_adjust();
void 	First_adj1();
void	Meomory_init();
void	Read_memory();

void	Ctr_Exam();
void	Exam();
void	Ctr_CUp();
void	Ctr_CDown();
void	Spg_EReset();
void 	Spg_EReset1();

void	Ctr_Study();
void	Sty_Start();
void	Sty_Up();
void	Sty_Top();
void	Sty_Down();
void	Sty_Over();
void	AT_REMEMBER();

void	Main_Timer();

void	Main_DService();
void	U_D_Limit();
void	Over_Weight();
void	Clock_Num(); 
void	Run_LIT();

void 	At_Stop();
void	Spg_UnDir();
void	Spg_Baoz();
void 	Spg_UnSpeed();

void	At_Wait();
void 	Wait();
void	Ready_Start();
void	Re_Opendoor();
void	OPENDOOR();
void 	OPENDOOR1();
void	OPEN_1();
void	CLOSEDOOR();
void	Cat_Eye();

void   	At_Start();
void	Spg_Dir();
void	Spg_UnBaoz();
void	Spg_Speed();
void	Speed_1();
void 	Speed_Out();
void 	Spg_Run();

void 	Get_Call();
void 	C_Call();
void 	ReCount_Call();

void 	Count_Pulse();

void 	Main_Control();
void 	Control();
void 	Ctr_Normal();
void 	No_At_Floor();
void 	Nor_AtUnchange();
void 	Nor_AtChange();
void 	Change_Code();
void 	Last_Dir();
void 	CONTACT();

void 	First_Stop();
void 	First_Run();

void	Ctr_Fire();
void 	Fire_Run();
void    Fire_Z_Speed();
void 	Fire_Continue();
void	Fire_Near();
void 	Fire_Start();
void 	Near_Stop();


void 	Main_Trouble();
void 	Wrong_Record();
void 	Trouble_1();
void 	Trouble_2();
void 	Trouble_3();
void 	Trouble_4();
void 	Trouble_5();
void 	Trouble_6();
void 	Trouble_7();
void 	Trouble_8();
void 	Trouble_9();  

void	c_int1();
void	c_int2();
void	c_int3();
void	c_int4();
void	c_int5();
void	c_int6();


volatile unsigned int *p1,*p2,*p3,*p5,*p6,*q1,*q2,i,i9,j,k,k1,k2,k4,k5,k6,k7,k8,k9,k10,k11,k12,k16,k18,k26,a,a1,a2,b,b1,b2,b3,b4,b5,b6,b8,b9,b10,b11,b12,b13,b15,b16,b17,b18,Study_state,zz1,zz2,yj;
volatile unsigned int N_AF_state,A_S_state,A_Sa_state,A_W_state,LOPSYMBOL,CONFIRMNUM,COUNTNUM,CONFIRMNUM1,CONFIRMNUM2,STATENUM,NUMBER;
volatile unsigned int CANIDBUF,*CAN_P,CAN_BUF0,CAN_BUF1,CAN_BUF2,CAN_BUF3,CAN_BUF4,CAN_FLAG;
volatile unsigned int fire_state,CD_state,Near_state ,STATEBOX,CHANGE_TL1,TARGET_TL1;
volatile unsigned int t,call_n,Ucall[8],Dcall[8],FLOOR_A,WHJTIME,WHJTIMESYMBOL,HJTIME,zz1box1,zz1box2,zz2box1,zz2box2,yjbox1,yjbox2;  
volatile unsigned int JSBAOY,BYQD,BAOYTIME,MBTIME,MBTIMESYMBOL,IOTIME,IOTIMESYMBOL,RUNTIME,RUNTIME1,RUNTIMESYMBOL,SKMTIME,KVTIME,KVTIMESYMBOL;
volatile unsigned int m,n,m1,m2,m3,DT_STATE,G4TIMESYMBOL,G4TIMES,G5TIMESYMBOL,G5TIMES,G6TIMESYMBOL,G6TIMES;
volatile unsigned int G7TIMESYMBOL,G7TIMES,IA_BUF1,IB_BUF1,IE_BUF1,IF_BUF1,IG_BUF1,IG_BUF,I1TIMESYMBOL,I1TIMES,JTIMESYMBOL;
volatile unsigned int SCIRX_FLAG,SCITX_FLAG,SCI_NUM1,SCI_NUM2,SCI_NUM3,SCI_NUM5,SCI_NUM6,SCI_NUM7;   
volatile unsigned int NRUNTIME,NRUNTIMESYMBOL,NBZTIME,NBZTIMESYMBOL,NVTIME,NVTIMESYMBOL,XDTIME,XDTIMESYMBOL,SDTIME,SDTIMESYMBOL;
volatile unsigned int SCIRXID,SCI_BUF,SCI_BUF1,*SCI_SP,TSCIOPEN,SCITIMER,PULSE_NUM1,PULSE_NUM2,PULSE_NUM3,*SCI_P;
volatile unsigned int TXENABLE,h1,T10MS,TXIDFLAG,TXIDDATA,PCDDELAY,PCDDELAY1,PCT20MS,STYOVER; 
volatile unsigned int timeint,BZTIME,BZTIMESYMBOL,mach,mach_state,CB1TIME,CB1TIMESYMBOL;

volatile unsigned int SCITIME,CLOSERECEIVE,CLOSETIME1,CLOSETIME,OPENTIME,OPENTIME1,INTT30MS;
volatile unsigned int SCIT10MS,SCIT20MS,SCIT1000MS,JACK,JACK1,INTDELAY,INTDELAY1,LIT1,LIT2,LIT1SYMBOL,LIT2SYMBOL,LIT1TIME,LIT2TIME,FX,FXTIME,FXSYMBOL;
volatile unsigned int TX_FLAG,SCI_NUM4,*SCI_SP1,MODI_PARA,TIMER_CHECK,MODI_PARA1,MODI_PARA2,MODI_PARA3;
 
extern unsigned int IMR,IFR,IODATA,IOBUF;	/* CPU中断寄存器 */
extern unsigned int SCSR1,SCSR2,PIVR;
extern unsigned int WDCNTR,WDKEY,WDCR;  /* 程序监视控制寄存器*/
extern unsigned int XINT1CR,XINT2CR;	/* 外部中断控制寄存器*/
extern unsigned int MCRA,MCRB,MCRC,PEDATDIR,PFDATDIR;   /*Digital I/O registers*/
extern unsigned int PADATDIR,PBDATDIR,PCDATDIR,PDDATDIR;
extern unsigned int SCICCR,SCICTL1,SCIHBAUD,SCILBAUD,SCICTL2;/*SCI registers*/
extern unsigned int SCIRXST,SCIRXEMU,SCIRXBUF,SCITXBUF,SCIPRI;
extern unsigned int CANMDER,CANTCR,CANRCR,CANMCR,CANBCR2,CANBCR1;/*CAN Registers*/
extern unsigned int CANESR,CANGSR,CANCEC,CANIFR,CANIMR,CANLAM0H,CANLAM0L;
extern unsigned int CANLAM1H,CANLAM1L;
extern unsigned int CANID0L,CANID0H,CANCTRL0,CANBX0A,CANBX0B,CANBX0C,CANBX0D;
extern unsigned int CANID1L,CANID1H,CANCTRL1,CANBX1A,CANBX1B,CANBX1C,CANBX1D;
extern unsigned int CANID2L,CANID2H,CANCTRL2,CANBX2A,CANBX2B,CANBX2C,CANBX2D;
extern unsigned int CANID3L,CANID3H,CANCTRL3,CANBX3A,CANBX3B,CANBX3C,CANBX3D;
extern unsigned int CANID4L,CANID4H,CANCTRL4,CANBX4A,CANBX4B,CANBX4C,CANBX4D;
extern unsigned int CANID5L,CANID5H,CANCTRL5,CANBX5A,CANBX5B,CANBX5C,CANBX5D;
extern unsigned int GPTCONA,T1CNT,T1CMPR,T1PR,T1CON,T2CNT,T2CMPR,T2PR,T2CON;/*事件A*/
extern unsigned int EVAIMRA,EVAIMRB,EVAIMRC,EVAIFRA,EVAIFRB,EVAIFRC;
extern unsigned int COMCONA,ACTRA,DBTCONA,CMPR1,CMPR2,CMPR3;
extern unsigned int CAPCONA,CAPFIFOA,CAP1FIFO,CAP2FIFO,CAP3FIFO;
extern unsigned int	CAP1FBOT,CAP2FBOT,CAP3FBOT;
extern unsigned int GPTCONB,T3CNT,T3CMPR,T3PR,T3CON,T4CNT,T4CMPR,T4PR,T4CON;/*事件B*/
extern unsigned int EVBIMRA,EVBIMRB,EVBIMRC,EVBIFRA,EVBIFRB,EVBIFRC;
extern unsigned int COMCONB,ACTRB,DBTCONB,CMPR4,CMPR5,CMPR6;
extern unsigned int CAPCONB,CAPFIFOB,CAP4FIFO,CAP5FIFO,CAP6FIFO;
extern unsigned int	CAP4FBOT,CAP5FBOT,CAP6FBOT; 
extern unsigned int SPICCR,SPICTL,SPIBRR;
extern unsigned int SPICCR,SPICTL,SPISTS,SPIBRR;
extern unsigned int SPIEMU,SPIRXBUF,SPITXBUF,SPIDAT,SPIPRI ;

extern unsigned int	O_DATA1,O_DATA2,O_DATA3,O_DATA4,O_DATA5;
extern unsigned int IA_BUF,IB_BUF,IC_BUF,ID_BUF,IE_BUF,IF_BUF;

extern unsigned int	A0TIMESYMBOL,A1TIMESYMBOL,A2TIMESYMBOL,A3TIMESYMBOL,A4TIMESYMBOL;
extern unsigned int	A5TIMESYMBOL,A6TIMESYMBOL,A7TIMESYMBOL,BTIMESYMBOL,G1TIMES;
extern unsigned int	C0TIMESYMBOL,C1TIMESYMBOL,C2TIMESYMBOL,C3TIMESYMBOL,C4TIMESYMBOL;
extern unsigned int	C5TIMESYMBOL,C6TIMESYMBOL,C7TIMESYMBOL,DTIMESYMBOL,G1TIMESYMBOL;
extern unsigned int	E0TIMESYMBOL,E1TIMESYMBOL,E2TIMESYMBOL,E3TIMESYMBOL,E4TIMESYMBOL;
extern unsigned int	E5TIMESYMBOL,E6TIMESYMBOL,E7TIMESYMBOL,FTIMESYMBOL,HTIMESYMBOL;
extern unsigned int	A0TIMES,A1TIMES,A2TIMES,A3TIMES,A4TIMES,A5TIMES,A6TIMES,A7TIMES;
extern unsigned int	C0TIMES,C1TIMES,C2TIMES,C3TIMES,C4TIMES,C5TIMES,C6TIMES,C7TIMES;
extern unsigned int	E0TIMES,E1TIMES,E2TIMES,E3TIMES,E4TIMES,E5TIMES,E6TIMES,E7TIMES;
extern unsigned int	AOPSYMBOL,BOPSYMBOL,COPSYMBOL,DOPSYMBOL,EOPSYMBOL,FOPSYMBOL,GOPSYMBOL;
extern unsigned int	HOPSYMBOL,IOPSYMBOL,JOPSYMBOL,KOPSYMBOL,SAVE_FOPSY,SAVE_FLOOR;
extern unsigned int	IN_AB,IN_BB,IN_CB,OUT_AB,OUT_AB,OUT_AB,REDOOR_N,T100MS,T1S;
extern unsigned int	TIMEUP1,DLY1S,FLOOR_N,FLOOR_MIX,FLOOR_MAX,FLOOR_CALL,FLOOR_BDIR;
extern unsigned int	WRONG_STATE,WRONG_DATA,COUNT_CALL,FR_state,RUN_TL,CHANGE_TL;
extern unsigned int	TARGET_TL,FLOOR_FIRE,SP1_PULSE,SP2_PULSE,RUN_NUM,RUN_NUM1,RUN_TIME;
extern unsigned int	CLOCK,ALL_PULSE,ALL_PULSE1,C1_PULSE,C2_PULSE,SP3_PULSE;
extern unsigned int	UPDATE0,DOWNDATE0,BOXDATE0,BUPDATE0,BDOWNDATE0,UPPULSE1,TR_STATUS ;  
extern unsigned int DOOR,FLOOROFFSET;
extern unsigned int	PASSWORD1,SPECIAL,FIRST_LOU,RUN_STATION;
extern unsigned int v1,v2,v3,v4,v5,CAN_SIGN,G2TIMESYMBOL,G2TIMES,G3TIMESYMBOL,G3TIMES;
extern unsigned int CHECKCODE1,CHECKCODE2;
main()
{   
  	SYS_init();
	
	EVB_init();/*定时器*/ 
	
  	EVA_init();/*光电编码器*/ 
	
    IO_init();
	
 	CAN_init();
	
	SCI_init(); 
	
  	SPI_init();
  	
  	DIS_SROM(); 
    
    Meomory_init();
    
    First_Memory(); 
    
    
//	First_adjust();
//	Tiao_Shi();   /*往0086里写0086,往0088里写0088*/
// 	Tiao_Shi1();  /*往0082里写0008*/
//	Save_Data1(); /*断电保存*/
//  Save_Data2(); /*自学习后保存*/
//	Save_Data3(); /*液晶修改后保存*/
    
    while((CHECKCODE1!=0x0086)||(CHECKCODE2!=0x0088))
    {
	   Load_Srom();    /*参数调入内存*/                
	}
  	asm("	CLRC   INTM ");/*开中断*/ 
  	asm("	NOP	 ");
	asm("	NOP	 ");
	asm("	NOP	 "); 
	asm("	NOP	 ");	
	
	do
	{ 
		Watch_dog();
		Io_Receive();
		
		can_read();
		
		if(CLOSERECEIVE==0)
        {
			Sci_Receive1();
		} 
		
	 	Can_Receive();
		
	 	Main_Timer();
	 	
	  	Main_DService(); 
	  	
	  	Watch_dog();   
	  	
	  	if(FXTIME==1)
	  	{
	  		FLOOR_BDIR&=0x00fd;	/*置第一次运行标志*/ 
	  	}
	  	
		
	  	
	  	Main_Control();
	  	
	  	Watch_dog();
	    
	 	//Main_Trouble(); 
 
		Sci_TxAdj();
		
  		SCI_SendAAA();
 
	  	Watch_dog();
	  	
	  	if(b4>=5)  /*50ms发送一次数据*/ 
	 	{ 
	  		asm("	SETC   INTM ");/*关闭所有可屏蔽中断*/
 	  		CANTCR|=0x0FF0F;
	  		CAN_init();
	  		switch(k8)
			{
				case 1:
				{        
				   	Can_Send1();
	  				k8=2;
				}break;
				case 2:
				{
					Can_Send2();
	  				k8=3;				
				}break; 
				case 3:
				{
					Can_Send3();
	  				k8=1;				
				}break;  
				default:k8=1;break; 
			}

	  		b4=0;
	  		asm("	CLRC   INTM ");/*开中断*/ 
	  	}        
	  	
	  	
	  	k16++;
	  	if(k16>6)      /*主循环6次发送一次*/ 
	  	{ 
	    	Io_Send();
	    	k16=0;
	    }   
	    
        Data_Store();   
        
        timeint++; 
        Timeprotect(); 
  	}
	while(1);  
}

void Timeprotect()
{
	if(timeint>=1000)
   	{
		asm("	B 0000H	 ");
	}
} 

void Data_Store()
{
	 	if((PCDATDIR&0x0001)==0)
		{
			k2++;    /*监控5次低电平*/
        	k7=300;  /*定时3s*/
			if(k2>=5)  /*低电平监控5次到*/
			{
		 		k2=0;
         		asm("	SETC   INTM ");/*关闭所有可屏蔽中断*/
      			Save_Srom();
        		asm("	CLRC   INTM ");/*开中断*/
        	}	
		} 
		else
		{
			k2=0;
        	if(k7==0) /*定时3s到*/
        	{
        		JOPSYMBOL&=0x0FFFE; /*清调电参数已保存*/
        		k7=300;
        	}
		}

}


void SCI_SendAAA()
{
   	    if(INTDELAY1==1)
		{
			INTDELAY1=0;        /*清30ms到标志*/
			INTDELAY=0;         /*关掉中断延时后10毫秒定时器*/
			JACK=0;             /*关掉1秒定时器*/
			SCITIME=0;          /*清1秒到标志*/
			PCDATDIR|=0x0020;   /*485 send enable*/
			PDDATDIR|=0x0001;   /*disable 485 receive*/			
			SCICTL1&=0x0FFFE;	/*disable SCI data receive*/
			SCICTL1|=0x0002;	/*enable SCI data send*/
			OPENTIME=1;         /*开发送延时*/	
		}
   	    
   	    
   	    if(SCITIME==1)             /*1秒到*/
   	    {			
			CLOSERECEIVE=1;     /*关查询接收*/
			SCITIME=0;          /*清1秒到标志*/
			JACK=0;             /*关掉1秒定时器*/
			PCDATDIR|=0x0020;   /*485 send enable*/
			PDDATDIR|=0x0001;   /*disable 485 receive*/ 				
			SCICTL1&=0x0FFFE;	/*disable SCI data receive*/
			SCICTL1|=0x0002;	/*enable SCI data send*/
			OPENTIME=1;         /*开发送延时*/
		}
   	
        	
        if(OPENTIME1==1)      /*开发送延时10毫秒到*/
        {
        	OPENTIME=0;       /*关发送延时10毫秒定时器*/
        	asm("	SETC   INTM ");/*关闭所有可屏蔽中断*/
        	SCI_SendABC();
       		asm("	CLRC   INTM ");/*开中断*/
        }
        
   	    
   	    if(CLOSETIME1==1)      /*关发送延时20毫秒到*/
   	    {
   	    	CLOSETIME1=0;      /*清20m秒到标志*/
   	    	CLOSETIME=0;       /*关发送延时20毫秒定时器*/
    		PCDATDIR&=0x0FFDF;  /*disable 485 data send*/
    		PDDATDIR&=0x0FFFE;   /*enable 485 receive*/
    		SCICTL1&=0x0FFFD;   /*disable SCI send*/ 
    		SCICTL1|=0x0001;	/*enable SCI receive*/ 
        	JACK=1;             /*打开1秒定时器*/
        	CLOSERECEIVE=0;     /*开查询接收*/
		}
}


void SCI_SendABC()
{
   	    	switch(SCITX_FLAG)
			{
				case 1:     /*发送实时状态数据ID=1*/
				{ 
					SCITX_FLAG=0;
					SCICTL1|=0x0008;     /*set send wake*/
					SCITXBUF=0x0001;   /*send ID*/
					while((SCICTL2&0x0080)==0) 	/*is SCITXBUF empty?*/
					{}
					SCICTL1&=0x0FFF7;    /*clear send wake*/
					SCI_SP1=(unsigned int*)0x0370;
					SCI_NUM4=1;
					TX_FLAG=1;
				}break;
				
				case 2:     /*发楼层脉冲数*/
				{ 
				   	SCITX_FLAG=0;
				   	SCICTL1|=0x0008;     /*set send wake*/
					SCITXBUF=0x0003;   /*send ID*/
					while((SCICTL2&0x0080)==0) 	/*is SCITXBUF empty?*/
					{}
					SCICTL1&=0x0FFF7;    /*clear send wake*/
					SCI_SP1=(unsigned int*)0x03AA;
					SCI_NUM4=1;
					TX_FLAG=2;				   		
				}break;
				
				case 5:     /*发故障状态*/
				{ 
				   	SCITX_FLAG=0;
				   	SCICTL1|=0x0008;     /*set send wake*/
					SCITXBUF=0x0006;   /*send ID*/
					while((SCICTL2&0x0080)==0) 	/*is SCITXBUF empty?*/
					{}
					SCICTL1&=0x0FFF7;    /*clear send wake*/
					SCI_SP1=(unsigned int*)0x03AA; 
					SCI_NUM4=1;
					TX_FLAG=5;    
				}break;
				
				
				case 11:     /*发送29个数据*/
				{ 
					SCITX_FLAG=0;
					SCICTL1|=0x0008;     /*set send wake*/
					SCITXBUF=0x000C;   /*send ID*/
					while((SCICTL2&0x0080)==0) 	/*is SCITXBUF empty?*/
					{}
					SCICTL1&=0x0FFF7;    /*clear send wake*/
					SCI_SP1=(unsigned int*)0x0370; 
					SCI_NUM4=1;
					TX_FLAG=11;
				}break;
				
				case 8:     /*发送呼叫应答*/  
				{
					SCITX_FLAG=0;
					SCICTL1|=0x0008;     /*set send wake*/
					SCITXBUF=0x0008;   /*send ID*/
					while((SCICTL2&0x0080)==0) 	/*is SCITXBUF empty?*/
					{}
					SCICTL1&=0x0FFF7;    /*clear send wake*/ 
					TX_FLAG=8;
				}break;
				
			}		


			switch(TX_FLAG)
			{
				case 1:     /*发送实时状态数据ID=1*/
				{
					if(SCI_NUM4<=60) 
					{
						SCITXBUF=*SCI_SP1;
						while((SCICTL2&0x0080)==0)
						{}  
						SCI_SP1++;
						SCI_NUM4++;
						if(SCI_NUM4==60)
						{
						
							SCITX_FLAG=1;
							TX_FLAG=0;
							OPENTIME1=0;     /*清开发送延时10毫秒到标志*/
							CLOSETIME=1;     /*开关发送延时*/
						}
					}
				}break;
				
				case 2:     /*发楼层脉冲数*/
				{
					if(SCI_NUM4<=10) 
					{
						SCITXBUF=*SCI_SP1;
						while((SCICTL2&0x0080)==0)
						{}  
						SCI_SP1++;
						SCI_NUM4++;
						if(SCI_NUM4==10)
						{
						
							SCITX_FLAG=2;
							TX_FLAG=0;
							OPENTIME1=0;     /*清开发送延时10毫秒到标志*/
							CLOSETIME=1;     /*开关发送延时*/
						}
					}
				}break;
				
				case 5:     /*发故障状态*/
				{
					if(SCI_NUM4<=10) 
					{
						SCITXBUF=*SCI_SP1;
						while((SCICTL2&0x0080)==0)
						{}  
						SCI_SP1++;
						SCI_NUM4++;
						if(SCI_NUM4==10)
						{
				
							SCITX_FLAG=5;
							TX_FLAG=0;
							OPENTIME1=0;     /*清开发送延时10毫秒到标志*/
							CLOSETIME=1;     /*开关发送延时*/
						}
					}
				}break;
				
				case 11:     /*发29个数据*/
				{
					if(SCI_NUM4<=31) 
					{
						SCITXBUF=*SCI_SP1;
						while((SCICTL2&0x0080)==0)
						{}  
						SCI_SP1++;
						SCI_NUM4++;
						if(SCI_NUM4==31)
						{
				
							SCITX_FLAG=11;

⌨️ 快捷键说明

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