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

標(biāo)題: 電力載波實(shí)現(xiàn)代碼,值得紀(jì)念的日子 [打印本頁(yè)]

作者: xuwei    時(shí)間: 2015-6-13 16:02
標(biāo)題: 電力載波實(shí)現(xiàn)代碼,值得紀(jì)念的日子
小ARM菜菜
日照高科園


  今天下午半下午時(shí)間用來調(diào)試程序,上午時(shí)間把電路環(huán)景搭建起來,到現(xiàn)在完成電力載波的初步半雙工通信!主要注意的是第一次收到的數(shù)據(jù)要丟棄,等待寄存器更新,并且要利用軟件控制字節(jié)流,而不可以用硬件,因?yàn)槟愀静恢浪卸嗌僮止?jié),也就談不上控制了,也就是說他僅僅模擬了一個(gè)收發(fā)器,你要在軟件層面構(gòu)建FIFO,另一點(diǎn)注意的是寄存器的配置和寫保護(hù)!我就是吃了這個(gè)虧啊!

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

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

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

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

      if ( PLC_Rxd_state == 0 )       //如果處于等待接收狀態(tài)
      {
             //接收第一個(gè)字節(jié),并準(zhǔn)備接收后面的字節(jié)
         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;
      }
    }

   //數(shù)據(jù)流
    else
    {
      if ( PLC_Rxd_state == 1 )       // 如果已經(jīng)接收了禎頭,繼續(xù)接收后續(xù)字節(jié)
      {
      
        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;        // 禁止寫保護(hù)
  
  SSC_ADR=0x01;        // 選擇3105載波通訊控制寄存器1
  SSC_DAT=64;        // ZZZ 2007-10-15 前導(dǎo)1bit為64個(gè)

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

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








歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 中文字幕91 | 欧美日韩一区二区三区在线观看 | 久久精品99| 亚洲一二三区不卡 | 99精品视频免费在线观看 | 成在线人视频免费视频 | 国产一区二区三区在线看 | 日韩一区二区在线视频 | 欧美video | 亚洲视频在线播放 | 国产日韩欧美二区 | 国产在线观 | 免费毛片网站 | 天天色av | 日本在线免费视频 | 亚洲一区二区视频 | 免费九九视频 | 精品一区二区三区在线观看国产 | 日韩精品一区在线 | 欧美亚洲激情 | 成人国产精品久久久 | 91不卡 | 欧美jizzhd精品欧美巨大免费 | 日韩一区欧美一区 | 日本午夜一区二区三区 | 亚洲一区国产 | 国产高清无av久久 | 国产成人午夜精品影院游乐网 | 国产精品视频网站 | 中文字幕一区二区三区精彩视频 | 夜夜爽99久久国产综合精品女不卡 | 欧美视频免费在线 | 欧美精品久久久久久久久老牛影院 | 成人高清视频在线观看 | 久久精品视频免费观看 | 久久精品国产久精国产 | 在线免费观看日本视频 | 波多野结衣二区 | 视频在线亚洲 | 欧美久久不卡 | 成人免费黄色 |