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

📄 comm_0_mode.h

📁 嵌入式单片机开发,嵌入式单片机开发,嵌入式单片机开发
💻 H
字号:

// chu shi 485_1
void init_485_0()
{
	send4850_pry=0;
	RLEN_485_T_BUFFER_0=0;
	RCURRENTADDR_485_T_BUFFER_0=0;
	RFLAG_SEND0_START=0;
	pindir_txd=0;
	pindir_rxd=0;
 	u0rb=0x00;
 	u0c1=0;
	s0tic=0;
	tongdao=comm485_0;
	my_tongdao_start();
}
unsigned char comm_485_0_use(unsigned int value)
{
union kk
	{
    		struct{
       			unsigned char    b0:1;
       			unsigned char    b1:1;
       			unsigned char    b2:1;
       			unsigned char    b3:1;
       			unsigned char    b4:1;
       			unsigned char    b5:1;
       			unsigned char    b6:1;
       			unsigned char    b7:1;
       			unsigned char    b8:1;
       			unsigned char    b9:1;
       			unsigned char    b10:1;
       			unsigned char    abt:1;              /* Arbitration lost detecting flag */
       			unsigned char    oer:1;              /* Overrun error flag */
       			unsigned char    fer:1;              /* Framing error flag*/
       			unsigned char    per:1;              /* Parity error flag */
       			unsigned char    sum:1;              /* Error sum flag */
    				}bit;
   		 struct{
      				 unsigned char    low;                /* Low  8 bit */
       			 unsigned char    high;               /* High 8 bit */
    				}byte;
    		unsigned short  word;
	}buffer;
buffer.word=value;
if((buffer.bit.b0^buffer.bit.b1^buffer.bit.b2^buffer.bit.b3^buffer.bit.b4^buffer.bit.b5^buffer.bit.b6^buffer.bit.b7)
    ==buffer.bit.b8)
      	return 0;//e
else 
	return 1;//p
}
#pragma INTERRUPT comm_485_0
void comm_485_0()
{unsigned char l;
union kk
	{
    		struct{
       			unsigned char    b0:1;
       			unsigned char    b1:1;
       			unsigned char    b2:1;
       			unsigned char    b3:1;
       			unsigned char    b4:1;
       			unsigned char    b5:1;
       			unsigned char    b6:1;
       			unsigned char    b7:1;
       			unsigned char    b8:1;
       			unsigned char    b9:1;
       			unsigned char    b10:1;
       			unsigned char    abt:1;              /* Arbitration lost detecting flag */
       			unsigned char    oer:1;              /* Overrun error flag */
       			unsigned char    fer:1;              /* Framing error flag*/
       			unsigned char    per:1;              /* Parity error flag */
       			unsigned char    sum:1;              /* Error sum flag */
    				}bit;
   		 struct{
      				 unsigned char    low;                /* Low  8 bit */
       			 unsigned char    high;               /* High 8 bit */
    				}byte;
    		unsigned int  word;
	}buffer;
  buffer.word=u0rb;
  // add
  time_boud_500_use_0=0;
  // add
  RCOMM0_TIMER=0x00;
 if((0xf0&buffer.byte.high)!=0)          
 	{  
 		u0rb=0x00;
          	u0mr=00;
          	RSTATUS_485_0=RERR;
          	u0mr=0x6;// 6
        }
else
    	{
     		switch(RSTATUS_485_0)
          			{
          				case REC:
                          					l=1;
          	           					if( RPROTOCOL_485_0==HUALONG)
          	           						{
          	           							send4850_pry=0;
          	               						if(comm_485_0_use(buffer.word)==0)//e
          	                    								l=0;
          	           						}
          	           					else
          	           						{ 
          	           							send4850_pry=1;
          	                						if(comm_485_0_use(buffer.word)==1)//p
          	                    								l=0;
          	           						}
          	           					if(1==l)
          	           						{
          	                						RRBUFFER_485_0[RCURRENTADDR_485_R_BUFFER_0]=buffer.byte.low;
                              						RCURRENTADDR_485_R_BUFFER_0=RCURRENTADDR_485_R_BUFFER_0+1;
                               						RLEN_485_R_BUFFER_0=RLEN_485_R_BUFFER_0+1;                  
                              				 		if(RLEN_485_R_BUFFER_0>=MAX_R_485_0)  
											RSTATUS_485_0=RERR;
                               					}
                           					else   
										RSTATUS_485_0=RERR;
          	          
                             	  
                           			 		break;
         					case START:
                   							{
                  								 switch(buffer.byte.low)
                   										{
                   											 case 0xaa:
                    	        												if(comm_485_0_use(buffer.word)==1)//p                            
                                 														{
                                 															RLEN_485_R_BUFFER_0=1;
                                  														RCURRENTADDR_485_R_BUFFER_0=0;
                                  														RRBUFFER_485_0[0]=buffer.byte.low;
                                  														RCURRENTADDR_485_R_BUFFER_0=1;
                                 															 // ii9
                                  														u0mr=0x6;// ii6
                                  														send4850_pry=0;
                                  														RPROTOCOL_485_0=HUALONG;
                                  														RSTATUS_485_0=REC;
                                  													}
                                  												break;
                   											  case 0x68:   
                                												if(comm_485_0_use(buffer.word)==0)//e                             
                                													{
                                														RLEN_485_R_BUFFER_0=1;
                                 														RCURRENTADDR_485_R_BUFFER_0=0;
                                 														RRBUFFER_485_0[0]=buffer.byte.low;
                                 														RCURRENTADDR_485_R_BUFFER_0=1;
                                 														RPROTOCOL_485_0=QUANGUOZHEJIANG;
                                 														u0mr=0x6;
                                	 													send4850_pry=1;
                                 														RSTATUS_485_0=REC;
                                 													} 
                             												break;
                      									}  
                      
                   								 } 
											break;
                    					default: 
									break;
            			}
            
  		 }

}


#pragma INTERRUPT comm_485_0_send
void comm_485_0_send()
{unsigned int a;
	union kk
			{
    				struct{
       					unsigned char    b0:1;
       					unsigned char    b1:1;
       					unsigned char    b2:1;
       					unsigned char    b3:1;
       					unsigned char    b4:1;
       					unsigned char    b5:1;
      		 				unsigned char    b6:1;
       					unsigned char    b7:1;
       					unsigned char    b8:1;
       					unsigned char    b9:1;
       					unsigned char    b10:1;
       					unsigned char    abt:1;              /* Arbitration lost detecting flag */
       					unsigned char    oer:1;              /* Overrun error flag */
       					unsigned char    fer:1;              /* Framing error flag*/
       					unsigned char    per:1;              /* Parity error flag */
       					unsigned char    sum:1;              /* Error sum flag */
    						}bit;
    				struct{
       					unsigned char    low;                /* Low  8 bit */
       					unsigned char    high;               /* High 8 bit */
    						}byte;
    				unsigned int  word;
			}buffer;
buffer.word=0;
// add
time_boud_500_use_0=0;
// add
if(RLEN_485_T_BUFFER_0==0) 
	{
       	 // FA WAN ,RU CHU YI FA SONG ZHUAN TAI,JIE SHOU
       	s0tic=0x00;
       	RSTATUS_485_0=START;
       	RLEN_485_R_BUFFER_0=0;
       	RPROTOCOL_485_0=0;
        	RCURRENTADDR_485_R_BUFFER_0=0;
        	u0brg=table_brg_value_from_boud_0[ boud_use_0];// boud use
        	u0c0=table_u0c0_value_form_boud[ boud_use_0];
        	u0mr=0;
        	u0mr=0x06;  // ii6
        	ucon=0x01;
       	u0c1=0x7;                           
       	s0ric=7;                      
         	a=u0rb;
       }
else
       { 
              RLEN_485_T_BUFFER_0=RLEN_485_T_BUFFER_0-1;
              buffer.byte.low=RRBUFFER_485_0[RCURRENTADDR_485_T_BUFFER_0];
                   // changed jiao yan   must   2 stop
              buffer.bit.b8=buffer.bit.b0^buffer.bit.b1^buffer.bit.b2^buffer.bit.b3^buffer.bit.b4^buffer.bit.b5^buffer.bit.b6^buffer.bit.b7;
              if(send4850_pry!=1)// e
                        buffer.bit.b8=~buffer.bit.b8;
              u0tb=buffer.word;
              RCURRENTADDR_485_T_BUFFER_0=RCURRENTADDR_485_T_BUFFER_0+1;                   
         }
}

			
 // chu shi tong dao 1 
 // tong dao 485 1 fa
start_send_485_0()
	{
		union kk{
    					struct{
       						unsigned char    b0:1;
       						unsigned char    b1:1;
      							unsigned char    b2:1;
       						unsigned char    b3:1;
       						unsigned char    b4:1;
       						unsigned char    b5:1;
       						unsigned char    b6:1;
       						unsigned char    b7:1;
       						unsigned char    b8:1;
       						unsigned char    b9:1;
       						unsigned char    b10:1;
       						unsigned char    abt:1;              /* Arbitration lost detecting flag */
       						unsigned char    oer:1;              /* Overrun error flag */
       						unsigned char    fer:1;              /* Framing error flag*/
       						unsigned char    per:1;              /* Parity error flag */
       						unsigned char    sum:1;              /* Error sum flag */
    							}bit;
    					struct{
       						unsigned char    low;                /* Low  8 bit */
       						unsigned char    high;               /* High 8 bit */
   							 }byte;
    					unsigned int  word;
					}buffer;
if((RFLAG_SEND0_START==1)&&(RSTATUS_485_0==SEND)&&(RLEN_485_T_BUFFER_0!=0))
	{
         RFLAG_SEND0_START=0;     
         RCURRENTADDR_485_T_BUFFER_0=1;        
         u0mr=0x06;// two bit stop  16         
         u0c1=0x07;
         ucon=1;
         RSTATUS_485_0=SEND;
         asm("FCLR I");
         asm("NOP");
         asm("NOP");
         asm("NOP");
         asm("NOP");
         s0ric=0;
         s0tic=7;
         asm("NOP");
         asm("NOP");
         asm("NOP");
         asm("NOP");
         asm("FSET I");       
         RLEN_485_T_BUFFER_0=RLEN_485_T_BUFFER_0-1;
         buffer.word=0;
         buffer.byte.low=RRBUFFER_485_0[0]; 
         buffer.bit.b8=buffer.bit.b0^buffer.bit.b1^buffer.bit.b2^buffer.bit.b3^buffer.bit.b4^buffer.bit.b5^buffer.bit.b6^buffer.bit.b7;
         if(send4850_pry==0)// p
               buffer.bit.b8=~buffer.bit.b8;
         u0tb=buffer.word;
       } 
}


 void comm_485_0_mode()
 {   	// miao  hua long zhang ji you xiao 5 second
	if(rzhangji_485_mima_use_second_0!=RSOFT_RTC_SECOND)
   		{
   			rzhangji_485_mima_use_second_0=RSOFT_RTC_SECOND;
     			if(rtime_485_5second_0!=0) 
				rtime_485_5second_0=rtime_485_5second_0-1;     
     			if(rtime_485_zhangjimima_0!=0) 
				rtime_485_zhangjimima_0=rtime_485_zhangjimima_0-1;
     			if(rtime_485_zhangjimima_0==0) 
				rstatus_485_mima_youxiao_0=zhangji_mima_youxiao_start;     
     			if(rtime_485_5second_0==0)
     	    			if(rstatus_485_mima_youxiao_0==zhangji_mima_youxiao_inhao)
     	    	  			 rstatus_485_mima_youxiao_0=zhangji_mima_youxiao_yes;
		}
// boud
 	tongdao=comm485_0;
 	rbuffer=RRBUFFER_485_0;
	if(time_boud_500_use_0>=50) 
 		{
 			time_boud_500_use_0=0;
   			if(boud_use_0!=RAM[R_BOUD])
   				{//tongdao=2;
        				my_tongdao_start();   	
   				}
   
 		 }      
     //  zai fa song zhuang tai wei start send xia, chao shi ding shi qi qing wei ling
     	if((RSTATUS_485_0==START)||(RSTATUS_485_0==SEND) )  
		RCOMM0_TIMER=0;
            // zai you jie shou shu ju ji zhuang tai bu wei qi shi xia, pan chao shi fou,
            // ruo chao shi, ze chao shi chu li
     	if(( RLEN_485_R_BUFFER_0!=0)||(RSTATUS_485_0!=START))
 	  	{
 	    		if((RCOMM0_TIMER>=MAX_R_485_0_TIMER)||(RSTATUS_485_0==RERR))
 		  		{//tongdao=2;
                  			my_tongdao_start();
 	         		}
      			else
         			{
                			switch(RSTATUS_485_0)
                    					{
                       					case START: 
                       	              					num_check_485_0=0;
                       	              					break;
                      
                       					case REC: 
                                       						switch(RPROTOCOL_485_0)
                                        							{
                                       	  								case HUALONG: 
														// delete by zhanglong ---->start
                                       	  	                           				// phualong(&RLEN_485_R_BUFFER_0,
                               		         	  	                            	// 		        &RDISPLAY_4850INFO_STATUS,
                               		         	  	                           		// 	        &RSTATUS_485_0);
														// delete by zhanglong ---->end
                               		         	             						break;                            
                               		     								case QUANGUOZHEJIANG :
															judge_quanguo_zhejiang(&RLEN_485_R_BUFFER_0,
                               		         	  	                            				&RDISPLAY_4850INFO_STATUS,
                               		         	  	                           			 	&RSTATUS_485_0);                               		     	                     							
                               		                            					break;
                                                   					 	}
                               		 					break;
                 
                  							}
                               
           				}
      			}
start_send_485_0();             // you fa song  qing qiu cai fa song
 }
 	

 
                               

⌨️ 快捷键说明

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