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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2836|回復: 0
打印 上一主題 下一主題
收起左側

電力載波實現代碼,值得紀念的日子

[復制鏈接]
跳轉到指定樓層
樓主
ID:82781 發表于 2015-6-13 16:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
小ARM菜菜
日照高科園


  今天下午半下午時間用來調試程序,上午時間把電路環景搭建起來,到現在完成電力載波的初步半雙工通信!主要注意的是第一次收到的數據要丟棄,等待寄存器更新,并且要利用軟件控制字節流,而不可以用硬件,因為你根本不知道他有多少字節,也就談不上控制了,也就是說他僅僅模擬了一個收發器,你要在軟件層面構建FIFO,另一點注意的是寄存器的配置和寫保護!我就是吃了這個虧啊!

主要程序片段!》》》》》》》》》》》》》》》》》》

extern void SendOneByte(unsigned char c);                                            
   uchar data i;
   uchar  data state;                 // 載波通訊狀態
  uchar data SSC_adr_bak;
  
  SSC_adr_bak=SSC_ADR;         //PRTECT
   SSC_ADR=0x00;                      //選擇載波狀態寄存器
   
   state= SSC_DAT;
   if ( ( state&0x01 ) == 1 )              //載波發送狀態
   { // 載波發送

   if ( PLC_send_pointer !=PLC_total_len )
        
    {
       SSC_BUF=PLC_T_buf_bak[PLC_send_pointer];                  //發送下一個字節
       PLC_send_pointer++;
    }
    else
    {  //發送完成
      PLC_sending=0;                 // 清正在發送標志
      PLC_data=0;
      PLC_TLED=1;                    // 發送指示燈滅
    }
  }
  else
/******接收區**************************/
  {
      // printf_usart("接收");
  // SSC_ADR=0x00;                      //選擇載波狀態寄存器
   
     
     //SendOneByte(SSC_DAT) ;
  // 載波接收  

   PLC_Rxd_timer=20;         // 最大字節接收延時時間為1S
    if ( ( state&0x04 ) == 0x04 )     //如果接收的是禎頭標志
    {
    //幀頭
  

      if ( PLC_Rxd_state == 0 )       //如果處于等待接收狀態
      {
             //接收第一個字節,并準備接收后面的字節
         PLC_recv_buf[0]=SSC_BUF;
         PLC_Rxd_pointer=0;      //lxw2006-3-2 17:07
         PLC_Rxd_state=1;
         PLC_RLED=0;         //接收指示燈亮
   
    PLC_Rxd_tlen=3;
  

      }
      else               // translate to rec
      {      
       PLC_Rxd_state=0;
       SSC_ADR=0X0;   
        SSC_DAT=0X0;
      }
    }

   //數據流
    else
    {
      if ( PLC_Rxd_state == 1 )       // 如果已經接收了禎頭,繼續接收后續字節
      {
      
        PLC_recv_buf[PLC_Rxd_pointer]=SSC_BUF;
        PLC_Rxd_pointer++;

        if ( PLC_Rxd_pointer==PLC_Rxd_tlen )
        {
           PLC_Rxd_OK=1;
           PLC_RLED=1;       //接收完畢燈滅
           PLC_Rxd_state=0;
           SSC_ADR=0;      
           SSC_DAT=0;
        }
      }
      else            
      {
       PLC_Rxd_state=0;
       SSC_ADR=0X0;   
        SSC_DAT=0X0;
      }
    }

  }

  SSC_ADR=SSC_adr_bak;

SSC_ADR=0XFF;        //
  SSC_DAT=0XFF;        // 禁止寫保護
  
  SSC_ADR=0x01;        // 選擇3105載波通訊控制寄存器1
  SSC_DAT=64;        // ZZZ 2007-10-15 前導1bit為64個

  SSC_ADR=0x03;        // 選擇3201載波通訊控制寄存器3
  SSC_DAT=0xe0;        // 開啟載波通訊功能,打開中斷,選擇接收狀態置為3105模式
   
  SSC_ADR=0x04;      // 設置捕獲門限
  SSC_DAT=LIMIT_3105;
  
  SSC_ADR=0XFF;
  SSC_DAT=0XAA;        // 使能寫保護  

// 控制看門狗喂狗時間長度                  
  CKCON=0X3F;
  // 8位/16位運算模式選擇位設置
  ALU_MOD=0;      // 設置成8位運算模式
  //載波通訊配置
//************   3201的載波寄存器設置  **********//
  set_PLC_3105 (  );   //上電為3105模式
  
  SSC_ADR=0xFF;
  SSC_DAT=0xFF;
  SSC_ADR=0x02;
  SSC_DAT=0x1F;
  SSC_ADR=0xFF;
  SSC_DAT=0x00;
  
//************   3201的載波寄存器設置  **********//
  EIE=0X01;                  //  ( A9H 使能INT2中斷(EX2=1)
  IT2=1;                     //  ( C8H ) 為邊沿觸發方式(IT2=1)
  
  //串口通訊配置
  TMOD1 = 0x10 ;                       // 設 T/C1 為1分頻模式,ZZZ
  TMOD = 0x21 ;                       // 設 T/C1 為定時方式2 設置為8位自裝載計數器  T/C0 為定時方式 14
  SCON=0x50;                           // 工作方式1
  
  PCON=0X80;                           // 波特率加倍
  TH1=BPS2400;
  TL1=BPS2400;                        // 加倍設定波特率 9.6MHz ( 按1分頻2400計算)
  TR1=1;                               // 啟動定時器1
   
  // 定時器0中斷配置
  TH0=0x63;
  TL0=0xcc;                // 定時 50 ms 一個定時中斷
  TR0 = 1;                       // 啟動 T0 定時器
  // 中斷級別設置
  IP=0x02;                      // 定時器 T0 中斷為高級中斷
  EIP=1;                         // 外部中斷2 為高級中斷
  // 中斷允許設置
  IE=0x82;                      // 允許ET0=1定時器 T0 中斷;  開放中斷



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久午夜视频 | 国产精品日韩欧美一区二区三区 | 91人人澡人人爽 | 成人av电影在线观看 | 在线播放一区二区三区 | 91国自视频 | 桃色五月 | 欧美视频成人 | 色毛片 | 国产免费一区 | 91.xxx.高清在线 | 久久精品网 | 国产成人免费视频网站视频社区 | 狠狠操av | 日韩久久精品电影 | 91精品国产综合久久久久久 | 欧美激情精品久久久久久 | av手机在线播放 | 国产精品成人一区二区 | 99精品免费久久久久久久久日本 | 91在线观看网址 | 日韩精品在线播放 | 亚洲三级在线观看 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 精品视频一区二区三区在线观看 | 一区二区三区四区在线视频 | 亚洲 自拍 另类 欧美 丝袜 | 青青99 | 欧美日韩午夜精品 | 欧美黄色片 | 日韩午夜在线播放 | 在线黄av | 亚洲欧美激情精品一区二区 | 精品精品视频 | 中文字幕a√ | 成人在线 | 国产高清视频在线 | 久久久久国产精品一区二区 | 97色在线观看免费视频 | 欧美一区二区成人 | 久久天堂网 |