久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

曼徹斯特編碼的接收C51程序

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2012年01月18日   【字體:
曼碼接收程序,常用在無(wú)線信號(hào)的編碼與解碼中,給大家分享:

rxi()
{
    // this routine gets called every time TMR0 overflows
    if(T0IF)  //定時(shí)器中斷程序
    {
        TMR0 = PERIOD;             // 裝計(jì)時(shí)器初值
        T0IF = 0;     // 清定時(shí)器溢出標(biāo)志
        XTMR++;                     // 外部的系統(tǒng)時(shí)鐘計(jì)時(shí)器加1
        RFcount++;     // 脈沖寬度計(jì)數(shù)器加1
  return;
    }
    if(RAIF)  //端口電平變化中斷程序
    {
     if (RFFull)                 // 如果接收位滿就退出
         return;
  RFBit = RFIn;               // 取樣信號(hào)接收的值
  RAIF = 0;
     switch (RFstate)            // 當(dāng)前狀態(tài)
     {
      case TRFDATAUP:
    switch (RFcount)
    { 
        case 4:
        case 5:  
        case 6:
        case 7:
      PORTA = PORTA;//啟動(dòng)端口電平中斷
        break;
     
        case 8:
        case 9:
        case 10:
        case 11:
        case 12:
      B[Bptr] <<= 1;              // rotate 
      if ( RFBit==0)  //如是有效的下跳變則該位的數(shù)據(jù)值為1,上跳變?yōu)?
      { 
       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; //重新記時(shí)
      PORTA = PORTA;//啟動(dòng)端口電平中斷
         break;
   
        default:  //超時(shí)或不足則退出接收
            RFstate = TRFSYNC;        // reset state machine in all other cases
            RFcount = 0;
            Bptr = 0;
            BitCount = 0;
      PORTA = PORTA;//啟動(dòng)端口電平中斷
    }
   break;
   case TRFSYNC:
          if ( RFBit)
          { // rising edge detected  +---+                +---..
            //                       |   |  <-Theader->   |   
            //                           +----------------+
              if ( ( RFcount < SHORT_HEAD) || ( RFcount >= LONG_HEAD))
              {
                  RFstate = TRFreset;
      PORTA = PORTA;//啟動(dòng)端口電平中斷
                  break;                  // too short/long, no header
              }
              else
              {
                  RFcount =0;             // restart counter
                  RFstate= TRFDATAUP;
      PORTA = PORTA;//啟動(dòng)端口電平中斷
              }
          }
          else
          { // still low
              RFcount=0;
     PORTA = PORTA;//啟動(dòng)端口電平中斷
          }
          break;

     case TRFreset:
     default:
         RFstate = TRFSYNC;        // reset state machine in all other cases
         RFcount = 0;
         Bptr = 0;
         BitCount = 0;
      PORTA = PORTA;//啟動(dòng)端口電平中斷
         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;             // 裝計(jì)時(shí)器初值
    PORTA = PORTA;//啟動(dòng)端口電平中斷
}
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: av一区二区三区四区 | 亚洲福利在线观看 | 四虎最新视频 | www.久久| 九九热精品免费 | 91资源在线 | 9999精品视频 | 一区二区三区欧美在线观看 | 精品视频在线观看 | 欧美日韩精品中文字幕 | 亚洲日韩中文字幕一区 | 日韩欧美精品在线播放 | 视频一区二区中文字幕 | 黄色一级视频免费 | 亚洲欧美一区二区三区视频 | 午夜免费| 午夜小电影 | 99热精品在线观看 | 欧美阿v| 国产高清精品一区 | 欧美理论| 一区二区三区四区免费在线观看 | 日韩久久久一区二区 | 古装三级在线播放 | 久久国产精品精品国产色婷婷 | www.久久久久久久久 | 国产精品久久二区 | 国产乱码精品一区二区三区忘忧草 | 日本在线免费 | 亚洲国产欧美一区二区三区久久 | 一级黄色片在线看 | 欧美成人一区二区 | 午夜影院| 国产久| 婷婷二区 | 男人的天堂久久 | 久久国产美女视频 | 91久久综合亚洲鲁鲁五月天 | 国产精品高清一区二区 | 91精品国产日韩91久久久久久 | 国产99久久|