📄 310_com.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 + -