我是靠谱客的博主 迷你乌龟,最近开发中收集的这篇文章主要介绍曼切斯特编码c语言,曼彻斯特编码的接收C51程序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

曼码接收程序,常用在无线信号的编码与解码中,给大家分享:

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) //如是有效的下跳变则该位的数据值为1,上跳变为0

{

B[Bptr]+=1; // shift in bit

}

if ( ( ++BitCount & 7) == 0)

Bptr++; // advance one byte

if (BitCount == NBIT)

{

RFstate = TRFreset; // finished receiving

RFFull = 1;

}

RFcount=0; //重新记时

PORTA = PORTA;//启动端口电平中断

break;

default: //超时或不足则退出接收

RFstate = TRFSYNC; // reset state machine in all other cases

RFcount = 0;

Bptr = 0;

BitCount = 0;

PORTA = PORTA;//启动端口电平中断

}

break;

case TRFSYNC:

if ( RFBit)

{ // rising edge detected +---+ +---..

// | | |

// +----------------+

if ( ( RFcount < SHORT_HEAD) || ( RFcount >= LONG_HEAD))

{

RFstate = TRFreset;

PORTA = PORTA;//启动端口电平中断

break; // too short/long, no header

}

else

{

RFcount =0; // restart counter

RFstate= TRFDATAUP;

PORTA = PORTA;//启动端口电平中断

}

}

else

{ // still low

RFcount=0;

PORTA = PORTA;//启动端口电平中断

}

break;

case TRFreset:

default:

RFstate = TRFSYNC; // reset state machine in all other cases

RFcount = 0;

Bptr = 0;

BitCount = 0;

PORTA = PORTA;//启动端口电平中断

break;

} // switch

} //电平中断

} // rxi

void InitReceiver()

{

IOCA = 2;

T0IF = 0;

T0IE = 1; // TMR0 overflow interrupt

RAIE = 1; //使能端口电平变化中断

GIE = 1; // enable interrupts

RFstate = TRFreset; // reset state machine in all other cases

RFFull = 0; // start with buffer empty

XTMR = 0; // start extended timer

TMR0 = PERIOD; // 装计时器初值

PORTA = PORTA;//启动端口电平中断

}

最后

以上就是迷你乌龟为你收集整理的曼切斯特编码c语言,曼彻斯特编码的接收C51程序的全部内容,希望文章能够帮你解决曼切斯特编码c语言,曼彻斯特编码的接收C51程序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(88)

评论列表共有 0 条评论

立即
投稿
返回
顶部