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

📄 dj485p9k.c.bak

📁 这是一个PIC单片机的实时操作系统
💻 BAK
📖 第 1 页 / 共 3 页
字号:
			 }
			*/
		
	;	
		
		return  keystate;
		
	 
	}
	//写EEPROM的程序
	
void writeeeprom(void)
 {
 	  
 	uchar  c ;//联控制数据的计数
 	uchar  d=0;  
		  for ( c = 1; c < testlend; c++ )
				  {
				  write=c485Buf[c];//装入数据
			 	 	iic_write(d);  // 址址与数量
				 	delay1ms(100);
			   	
			 	 	if(err_flag==1)
			 	 		 {
			 	 		 	LcdFuc(FUA); //烧写失败!
			 	 		 	BeepTwoSound(); //提示擒失败
			 	 		  SDA=0;
                          SCL=0;
			 	 		 	break;
              }
               
              
			 	 	
			 	 	d++;
                  asm("nop");
                  asm("nop");
                    asm("nop");
                  asm("nop");
       //   delay1ms(100);
         
				   }
        asm("nop");
        asm("nop");
         SDA=0;
         SCL=0;
 	
 	}	
void readeeprom(void)
{
	uchar i,k;
	for (i==0;i<30;i++)
	 
	  {k=iic_read(i);
	read[i]=k;	
	   if(i==1)
	   	delay1ms(50);
	    }
	
	} 	
void BeepSound(void)
 {
 	TRISB=0X00;
 	BEEP=1;
 	delay1ms(255);
  
 	BEEP=0;	
 	}
void BeepTwoSound(void)
 {
 	TRISB=0X00;
 	BEEP=1;
 	delay1ms(200); 
 	BEEP=0;	
 	delay1ms(150); 
 	BEEP=1;
 	delay1ms(200); 
 	BEEP=0;	
 	}
void bjeeprom(void)
{
unsigned char  bjcount=0,d=5,bjk,bjl,kk;
kk=8;
bj=1;
 while(kk--)
 { 
  bjk=read[d];
  d=d+1;
  bjl=c485Buf[d];
  if(bjk!=bjl)
  	{
  		bj=0;
  		break;
     }	
  }	
	}	
	
void main(void)
{
    ADCON1 = 0x07;  
  TRISA=0X28;
  TRISB=0X00;
  TRISC=0XC4;
  TRISD=0X00;
  TRISE=0X07;
  SHOUDAO=0;
  autoandsetp=1;
  

  if (JP6==0)
  	autoandsetp=0;
  //  PORTB=0X00;
asm("NOP");
asm("NOP");
 //  PORTC=0X00;
   // TRISD=0XFF;
   	Setup();
   	SDA_IO=0;
   	SCL_IO=0;
   	SDA=0;
   	SCL=0;
   	 LKWP=1;
 asm("NOP");
   LKWP=0;
  // 	  write=0X88;
//			 	 	iic_write(0X00);  // 址址与数量
  delay1ms(0x50);
 readeeprom();
     	SDA_IO=0;
   	SCL_IO=0;
   	SDA=0;
   	SCL=0;
   	 LKWP=1; 
   	 
    asm("NOP");
     BeepSound(); //复位后要叫一声
 // PORTC=0X00; //10000000
 
   asm("NOP");
  Lcdint();
  asm("NOP");
  LcdFuc(FU7);
    asm("NOP");
  if(autoandsetp==0)
  	LcdFuc(FU8);
  else  LcdFuc(FU9);  
    
    
  LcdFucInt();
  asm("NOP");
   LcdFuc(0x00);
  
  asm("NOP");

 	//模拟232部分用的地址与状态初始化
	cOurAddrHigh = 0x01;
	cOurAddrLow = 0x01;
 	Rs485Initialise( cOurAddrHigh,cOurAddrLow );//打开了接收中断功能

 //	 Rs485SendPacket(SENSOR_PING_SYNC, 0 , &cTest[0] ); //发送PING命令
 	
 	while(1)
 	{
      
   
 	    cPacketReady = Rs485Process();		 //测试数据包是否是完整
 	    
 	 if(cPacketReady==1)
 	   	{
 	 	 
								   if( cCommand==SENSOR_PING_SYNC) //如果发送的数据包是PING 发送PING命令
									     {
							         asm("nop");
							         delay1ms(1);
									     Rs485SendPacket(SENSOR_PING_SYNC, 0 , &cTest[0] );	
								     cRS485State=PKT_WAIT_START;		
									    // cCommand=     
									    LcdFuc(FU6);
									    LcdFuc(FU0);
									    	}
							     if (cCommand==SENSOR_POLL_CMD ) //如果收到的数据的话,进行数据处理
							     	  {
				           GIE=0;
				             asm("nop");
				              asm("nop");
				           LcdFuc(FU5);//显示当前的列 
				          cRS485State=PKT_WAIT_START;	
				
							   //数据处理 先把数据的第一个去掉,第一个数据是当前的列号,再把数据烧写到第二个体中
							//先用缓存的处理再?
					   //  	Rs485GetPacket( &cCmd, &cLenOfData, &cTest[0] );
				         LKWP=1;
				          delay1ms(100);
							//  delay1ms(255);
					     writeeeprom();
					      SDA_IO=0;
					      SCL_IO=0;
	                 SDA=0;
	                   SCL=0;
						 if(err_flag==0)
						 	 {  
						 	 	
  //进行校验,如果校验不正确,再烧写一次,再校验,如果
  //如果还不正确的话,就提示校验失败2007-4-18 20:21						 	 	
						 	 	
							 LcdFuc(FU2);
							  BeepSound();
							  }
							  delay1ms(255);
							 LcdFuc(FU0);
							  asm("nop");
							 				 	  
							 LKWP=0;
							 delay1ms(0X105);//等联控放开
						if (autoandsetp==1)
							{	 
                               LKWP=0;
							 while(1)
							 {
							 	if(LKWPIN==0)
							 		{
							 		delay1ms(0X250);
							 		  if(LKWPIN==0)
							 	     {	break;}
							   	}
							 		
							 	}
							 SHOUDAO=0;
							  }//自动通行
							 delay1ms(0X100);
				         GIE=1;
				         
							 
					//		err_flag=0;  
							     	   
							     	  	}
							     	  	
							    if (cCommand==SENSOR_CONFIG )  //结束列
							    	{
							    		GIE=0;
							    		 LcdFuc(FU5);
							    		   cRS485State=PKT_WAIT_START;	
							    		   LcdFuc(FU3);
							    		     LKWP=1;
				          delay1ms(100);
							    		 asm("nop");
							    		 asm("nop");
							    	     writeeeprom();	      	
							      asm("nop");
				  if(err_flag==0)			      
							BeepSound();					
					//		 delay1ms(255);
						//	  delay1ms(255);
							  
							//   delay1ms(255);
							 LcdFuc(FU0);
							 delay1ms(255);
							    asm("nop");
							 LKWP=0;
							 delay1ms(0X105);//等联控放开
							 while(1)
							 {
							 	if(LKWPIN==0)
							 		{
							 		delay1ms(0X250);
							 		  if(LKWPIN==0)
							 	     {	break;}
							   	}
							 		
							 	}
							 SHOUDAO=0;
							 delay1ms(0X100);
				         GIE=1;
							    		  
							    		} 	  	
							    if (cCommand==SENSOR_LKCOUNT) //联控数量
							    	
							    	 {
							    	   cRS485State=PKT_WAIT_START;	
                      // LCDCOUNTOVER (c485Buf[0]);
                      LcdFuc(FU4);
							    		 asm("nop");
							    		 asm("nop");	
							    	 	
							    	 	}
							     if (cCommand==SENSOR_LKSZ) //联控数量
							    	
							    	 {
							    	   cRS485State=PKT_WAIT_START;	
							    	  
							    	     LKWP=1;
				            delay1ms(200);
							    		 asm("nop");
							    		      writeeeprom();
							    		    
							      asm("nop");
							BeepSound();
							 delay1ms(255);
							    		 asm("nop");	 
							    	 	
							    	 	}
			     	  	
			    
        }
        
        
        
        ////////////////////////
 
        LKWP=0;
      if (autoandsetp==1)  //自动运行
      { 	  
      if(LKWPIN==1)
      	{
      		delay1ms(0X100);
      		 if (LKWPIN==1)
      		 	{
      		 		if (SHOUDAO==0)
      		 			{
      		 		
      		    	LKWP=1;	
      		 	   	asm("nop");
								asm("nop");
								asm("nop");
      		 	SHOUDAO=0X01;
      		 	Rs485SendPacket(SENSOR_CONFIG , 0 , &cData[0] );	 //发送准备好的命令
     	    	asm("nop");
     	         	}
      		  }
      		}  
         }
    if(autoandsetp==0) //手动运行
    	{     
     keyready = keyprocess(); //判断有没有按键按下了
      
     if(keyready == run)
     	   {
     	   		asm("nop");
     	   	cData[0]=c485Buf[0];
     	 	 Rs485SendPacket(SENSOR_LKSZ , 1 , &cData[0] );	 //发送准备好的命令
     	 	asm("nop");
     	   	}
       if(keyready == up)
     	   {
     	   		asm("nop");
     	 	 if(c485Buf[0]>1)
         cData[0]=c485Buf[0]-1;
         else cData[0]=1;
     	 	 Rs485SendPacket(SENSOR_LKSZ , 1 , &cData[0] );	 //发送准备好的命令
     	 	asm("nop");
           	asm("nop");
     	  	}
     	  	/*
     	 if(keyready==autowork)
     	 	 {
     	 		 Rs485SendPacket(SENSOR_CONFIG , 0 , &cData[0] );	 //发送准备好的命令
     	 	asm("nop");	
     	 	LcdFuc(FU1);
     	 		
          	 		
     	 		}
     	 		*/
     	   if(keyready == down)
     	   {
     	   	asm("nop");
     	 	 Rs485SendPacket(SENSOR_CONFIG , 0 , &cData[0] );	 //发送准备好的命令
     	 	asm("nop");
     	   	}	
     	 		
     	 }		
     	 	 
     	 		 
  }
         
   /*   
 	while(1)
	{
		
		  
{
	
	if (key==0)
      {
       GIE=0;//关了中断再说
   	  delay1ms(10);
   	 		if (key==0)
	       {
							for (i=0; i<8;i++)
							{
								putch(KKB[i]);
							 delay4();
							}
					}
					
					  asm("nop");
					 asm("nop");
					 while(1)
							  {
							   if(key==1)
							     	{
							   		 delay1ms(10);
							   		break;
							   		 
							      }   
							  }
				GIE=1;
       } //endif key0
  
}

{
	
	if (key2==0)
      {
       GIE=0;//关了中断再说
   	  delay1ms(10);
   	 		if (key2==0)
	       {
							for (i=0; i<8;i++)
							{
								putch(KKE[i]);
							 delay4();
							}
					}
					
					  asm("nop");
					 asm("nop");
					 while(1)
							  {
							   if(key2==1)
							     	{
							   		 delay1ms(10);
							   		break;
							   		 
							      }   
							  }
				GIE=1;
       } //endif key0
  
}		
		
		;}
     
 */ 
     
 // write[]={1,2,3,4,5}
  //  iic_write(0);/*首地址为0;连续写入5个数*/
   // delay();
   // delay();
  //  asm("goto  $");
    
   
    

 
 
 
}






⌨️ 快捷键说明

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