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

📄 310_com.c

📁 C8051F310部分模块程序.已经调试成功
💻 C
字号:
#define uchar unsigned char
#define uint unsigned int
#define suchar static unsigned char 
void close (void) ;
void phase(void) ;
void data_phase(void) ;
void uppc(uchar number,uchar receiver) ;
void remote (void) ;
uchar xdata hex_buffer[13] ;
extern uchar xdata rxbuffer[110] ;
xdata struct model locate ;
void close (void){
	P0MDOUT = 0xff ;
//	P1MDIN = 0x07 ;
	P1MDOUT = 0x00 ;
	P2MDOUT = 0x01 ;
	P3MDOUT = 0x00 ;
P3 = 0x00 ; 
P2 = 0x01 ;
P1 = 0x00 ;
delay () ;
}
void remote (void){
uchar account ;
uchar hex_point ;
uchar bin_point ;
uchar hex_buff ;
if(rxbuffer[50] > 0x36){
    for(bin_point = 0;bin_point < 102;bin_point++){
	    SBUF0 = rxbuffer[bin_point] ;                     //将发送缓冲中的数据发送出去;
                while(TI0 == 0)                            //等待;
	            {}
		    TI0 = 0;
		}
	}
if(rxbuffer[99] > 0x36){
    for(bin_point = 0;bin_point < 102;bin_point++){
	    SBUF0 = rxbuffer[bin_point] ;                     //将发送缓冲中的数据发送出去;
                while(TI0 == 0)                            //等待;
	            {}
		    TI0 = 0;
		}
	}
       if ((rxbuffer[1] > 0x33) & (rxbuffer[50] > 0x36)){
	   hex_point = 0 ;
	   for(bin_point = 1;bin_point < 49;){
		   for(account = 0;account < 8;account++){ 
		       bin_point++ ;
		       if((rxbuffer[bin_point] > 0x16) & (rxbuffer[bin_point] < 0x1a)){ 
				   hex_buff = (hex_buff >> 1);
				   hex_buff += 0x80 ;
				   }
			   if((rxbuffer[bin_point] > 0x07) & (rxbuffer[bin_point] < 0x0b)){ 
				   hex_buff = (hex_buff >> 1);
				   }
			   }
			  hex_buffer[hex_point] = hex_buff ;
			  hex_point++ ;
	       	  }
		phase() ;
		for(account=0;account<110;account++){
		    rxbuffer[account] = 0 ;
			}
		for(account=0;account<6;account++){
		    SBUF0 = hex_buffer[account] ;                     //将发送缓冲中的数据发送出去;
                while(TI0 == 0)                            //等待;
	            {}
		    TI0 = 0;
			}
		}
		if (rxbuffer[98] != 0){
	   hex_point = 0 ;
	   for(bin_point = 1;bin_point < 97;){
		   for(account = 0;account < 8;account++){ 
		       bin_point++ ;
		       if((rxbuffer[bin_point] > 0x16) & (rxbuffer[bin_point] < 0x1a)){ 
				   hex_buff = (hex_buff >> 1);
				   hex_buff += 0x80 ;
				   }
			   if((rxbuffer[bin_point] > 0x07) & (rxbuffer[bin_point] < 0x0b)){ 
				   hex_buff = (hex_buff >> 1);
				   }
			   }
			  hex_buffer[hex_point] = hex_buff ;
			  hex_point++ ;
	       	  }
		data_phase() ;
		rxbuffer[0] = 0;
		for(account=0;account<110;account++){
		    rxbuffer[account] = 0 ;
			}
		for(account=0;account<12;account++){
		    SBUF0 = hex_buffer[account] ;                     //将发送缓冲中的数据发送出去;
                while(TI0 == 0)                            //等待;
	            {}
		    TI0 = 0;
			}
		}
		ring = 1 ;
		delay() ;
		ring = 0 ;
   }
void phase(void){
   uchar analysis ;
   uchar ptr ;
   analysis = 0 ;
   analysis = hex_buffer[1] ;
   analysis = analysis >> 5 ;
   switch(analysis){			//设定风速
	   case 1 :	locate.fan = 1 ;break ;
	   case 3 :	locate.fan = 0 ;break ;
	   default : break ;
	   }
	ptr = analysis ;
	uppc(1,ptr) ;
	analysis = (hex_buffer[1] >> 3) ; 
	analysis &= 0x03 ;
	switch(analysis){			//风摆状态
		case 1 : locate.swing = 1 ;break ;
		default : locate.swing = 0 ;break ;
		}
	ptr = analysis ;
	uppc(2,ptr) ;
    analysis = hex_buffer[1] ;
	analysis &= 0x07 ;
	switch(analysis){			//设定睡眠状态
	    case 0 : time3_close () ;break ;         
		case 1 : time3_open ()	;break ;
		case 2 : locate.uv = 1 ; break ;
		case 3 : locate.uv = 0 ; break ;
		default : time3_close () ;break ;
		}
	ptr = analysis ;
	uppc(3,ptr) ;
	analysis = (hex_buffer[3] >> 4) ;    //设置温度
	analysis &= 0x0f ;
	locate.temp = analysis + 17 ;
	ptr = locate.temp ;
	uppc(4,ptr) ;
	analysis = (hex_buffer[3] >> 3) ; 	 //开关状态
	analysis &= 0x01 ;
	locate.power = analysis ;
	ptr = analysis ;
	uppc(5,ptr) ;
	analysis = hex_buffer[3] ;
	analysis &= 0x07 ;
	switch(analysis){			   //模式
	    case 0 : locate.mode_choose = 2 ;break ;
		case 1 : locate.mode_choose = 3 ;break ;
		case 2 : locate.mode_choose = 1 ;break ;
		default : break ;
		}
	ptr = analysis ;
	uppc(6,ptr) ;
   }
void data_phase(void){
    uchar analysis ;
	uchar ptr ;
	uint sleepnum ;
    analysis = 0 ;
	analysis = hex_buffer[7] ;
   analysis = analysis >> 5 ;
   switch(analysis){			//设定风速
	   case 1 :	locate.fan = 1 ;break ;
	   case 3 :	locate.fan = 0 ;break ;
	   default : break ;
	   }
	ptr = analysis ;
	uppc(1,ptr) ;
	analysis = (hex_buffer[7] >> 3) ; 
	analysis &= 0x03 ;
	switch(analysis){			//风摆状态
		case 1 : locate.swing = 1 ;break ;
		default : locate.swing = 0 ;break ;
		}
	ptr = analysis ;
	uppc(2,ptr) ;
    analysis = hex_buffer[7] ;
	analysis &= 0x07 ;
	switch(analysis){			//设定睡眠状态
	    case 0 : time3_close () ;break ;         
		case 1 : time3_open ()	;break ;
		default : time3_close () ;break ;
		}
	ptr = analysis ;
	uppc(3,ptr) ;
	analysis = (hex_buffer[9] >> 4) ;    //设置温度
	analysis &= 0x0f ;
	locate.temp = analysis + 17 ;
	ptr = locate.temp ;
	uppc(4,ptr) ;
	analysis = (hex_buffer[9] >> 3) ; 	 //开关状态
	analysis &= 0x01 ;
	locate.power = analysis ;
	ptr = analysis ;
	uppc(5,ptr) ;
	analysis = hex_buffer[9] ;
	analysis &= 0x07 ;
	switch(analysis){			   //模式
	    case 0 : locate.mode_choose = 2 ;break ;
		case 1 : locate.mode_choose = 3 ;break ;
		case 2 : locate.mode_choose = 1 ;break ;
		default : break ;
		}
	ptr = analysis ;
	uppc(6,ptr) ;
	sleepnum = hex_buffer[5] ;
	sleepnum = sleepnum ;
	sleepnum = sleepnum << 8 ;
	sleepnum |= hex_buffer[3] ;
	sleepnum = (sleepnum >> 4) ;
	locate.timer = sleepnum / 60 ;
	ptr = locate.timer ;
	uppc(7,ptr) ;
	if(locate.timer != 0){
	    time3_open () ;
		}
	}
void uppc(uchar number,uchar receiver){
	SBUF0 = 0x77;                     
                while(TI0 == 0)                            
	            {}
		    TI0 = 0;
	SBUF0 = number;                     
                while(TI0 == 0)                            
	            {}
		    TI0 = 0;
	SBUF0 = receiver ;                     
                while(TI0 == 0)                            
	            {}
		    TI0 = 0;
	SBUF0 = 0x88;                     
                while(TI0 == 0)                            
	            {}
		    TI0 = 0;
}

⌨️ 快捷键说明

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