曼码接收程序,常用在无线信号的编码与解码中,给大家分享:
rxi()
{
// this routine gets called every time TMR0 overflows
if(T0IF) //定时器中断程序
{
TMR0 = PERIOD; // 装计时器初值
T0IF = 0; // 清定时器溢出标志
XTMR++; // 外部的系统时钟计时器加1
RFcount++; // 脉冲宽度计数器加1
return;
}
if(RAIF) //端口电平变化中断程序
{
if (RFFull) // 如果接收位满就退出
return;
RFBit = RFIn; // 取样信号接收的值
RAIF = 0;
switch (RFstate) // 当前状态
{
case TRFDATAUP:
switch (RFcount)
{
case 4:
case 5:
case 6:
case 7:
PORTA = PORTA;//启动端口电平中断
break;
case 8:
case 9:
case 10:
case 11:
case 12:
B[Bptr] <<= 1; // rotate
if ( RFBit==0) //如是有效的下跳变则该位的数据