RC单片机发送程序
void switch0(void)
{unsigned char n;
unsigned char tmp = 0;
tmp = status0;
TRISB = 0x00;
for(n=0; n<8; n++)
{if((tmp&0x80)==0x80)
{comm = High;
delay_mS(2);
comm = Low;
delay_mS(1);
}
else
{comm = High;
delay_mS(1);
comm = Low;
delay_mS(2);
}
tmp = tmp << 1;
}
if(key_reg == 0xff)//key_reg中为键值,0xff为没有键按下
{comm = High;
delay_mS(2);
comm = Low;
delay_mS(1);
comm = High;
delay_mS(2);
comm = Low;
delay_mS(1);
}
else
{comm = High;
delay_mS(1);
comm = Low;
delay_mS(2);
comm = High;
delay_mS(1);
comm = Low;
delay_mS(2);
}
comm = Low;
asm("nop");
}
4M单片机接受程序
void checkin(void)
{unsigned char tmp = 0;
unsigned char n= 0;
unsigned char Err_F =0;
ErrTime = 0;
TMR0 = 0;
while(RB2 == High)
{asm("clrwdt");
if(TMR0>=0xff)
{TMR0 = 0;
Err_F = 1;
dog++;
}
if(dog >= 20)
{dog = 0;
Warm1_Pin=0;
Warm2_Pin=0;
Lignt_Pin=0;
CuiFen_Pin=0;
PaiQi_Pin=0;
Back1_Pin=0;
Back2_Pin=0;
}
}
if(Err_F == 0)
{TMR0 = 0;
for(n=0; n<8; n++)
{TMR0 = 0;
tmp = tmp<<1;
while(TMR0 <= CheckTMR0)
{asm("clrwdt");
}
if(RB2 == 1)
{tmp |= 0x01;}
else
{tmp &= 0xfe;}
TMR0 = 0;
while(RB2 == Low)
{asm("clrwdt");
if(TMR0>=0xff)
{ErrTime++;
if(ErrTime >=10)
{Err_F = 1;
Warm1_Pin=0;
Warm2_Pin=0;
Lignt_Pin=0;
CuiFen_Pin=0;
PaiQi_Pin=0;
Back1_Pin=0;
Back2_Pin=0;
break;
}
}
}
TMR0 = 0;
while(RB2 == High)
{asm("clrwdt");
if(TMR0>=0xff)
{ErrTime++;
if(ErrTime >=10)
{Err_F = 1;
Warm1_Pin=0;
Warm2_Pin=0;
Lignt_Pin=0;
CuiFen_Pin=0;
PaiQi_Pin=0;
Back1_Pin=0;
Back2_Pin=0;
break;
}
}
}
}
}
status0 = tmp;
}
这个接受和发送程序,受温度影响,具体是用手摸到RC时,接受不正确