亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cp220x_eth.c

?? 工業以太網測控板資料FX04核心編程模塊
?? C
字號:
//-----------------------------------------------------------------------------
// CP220x_ETH.c
//-----------------------------------------------------------------------------
// Copyright 2006 Silicon Laboratories, Inc.
// http://www.silabs.com
//
// Program Description:
// 
// This file contains basic send and receive functions for the CP220x.
// 
// FID:            
// Target:         Multiple
// Tool chain:     Keil C51 7.20 / Keil EVAL C51
//                 Silicon Laboratories IDE version 2.72 
// Command Line:   See Readme.txt
// Project Name:   CP220x_Ethernet_Routines
//
// 
//
// Release 1.0
//    -Initial Release (FB)
//    -30 MAY 2006
//

//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include "global.h"

//-----------------------------------------------------------------------------
// Function Prototypes
//-----------------------------------------------------------------------------
void CP220x_Send( MACADDRESS* pDestAddr, unsigned char* buffer, 
                  unsigned int buffer_length, unsigned int packet_type);

unsigned int CP220x_Receive(unsigned char* buffer, unsigned int buffer_length);

//-----------------------------------------------------------------------------
// CP220x_Send
//-----------------------------------------------------------------------------
// 
// Return Value : None
// Parameters   : 
//   1)  MACADDRESS* pDestAddr - destination MAC address. 
//   2)  unsigned char* buffer - address of payload. 
//   3)  unsigned int buffer_length - length of payload. 
//   4)  unsigned int packet_type - contents of Ethertype field.
//
// This function sends an IEEE 802.3 Ethernet packet using the CP220x.
// Upon entry, there should be valid data in array <buffer>.
//
//        (8 bytes)  48-bit  48-bit    16-bit   0-1500 bytes   
//  ----------------------------------------------------------------------
// | Preamble| SFD | Dest |Source| Type/Length |Data Field | Pad |  FCS  |
// |         |     | Addr | Addr |    Field    |           |     | (CRC) |
//  ----------------------------------------------------------------------
//    supplied by  |         supplied by the MCU                 | supplied
//      CP220x     |          (minimum 64 bytes)                 | by CP220x  
//
//
//-----------------------------------------------------------------------------
void CP220x_Send( MACADDRESS* pDestAddr, unsigned char* buffer, 
                  unsigned int buffer_length, unsigned int packet_type)
{

   int i; 
   unsigned int ramaddr;

   // Define Macro to increment the RAM address Pointer
   #define INC_RAMADDR  ramaddr++; \
                        RAMADDRH = (ramaddr >> 8);\
                        RAMADDRL = (ramaddr & 0x00FF);


   // Step 1: Poll TXBUSY until it becomes 0x00
   while(TXBUSY);

   // Step 2: Set the TXSTARTH:TXSTARTL address to 0x0000
   TXSTARTH = 0x00;
   TXSTARTL = 0x00;


   // Step 3: Load data into transmit buffer
   // When the random access method is used, we do not need to check for
   // aborted packets. This method will be slightly slower than the Autowrite
   // method, however, it reduces code space requirements.
  
      // Setup RAM Address Pointer To 0x0000	
      RAMADDRH = 0x00;
      RAMADDRL = 0x00;
      ramaddr = 0x0000;

      // Step 3a: Load the destination address
      for(i = 0; i < 6; i++){
         
         RAMTXDATA = pDestAddr->Char[i];
         INC_RAMADDR

      }

      // Step 3b: Load the source address
      for(i = 0; i < 6; i++){
         RAMTXDATA = MYMAC.Char[i];
         INC_RAMADDR
      }
      
      // Step 3c: Load the Type/Length Field
      RAMTXDATA = (packet_type >> 8);
      INC_RAMADDR

      RAMTXDATA = (packet_type & 0xFF);
      INC_RAMADDR


      // Step 3d: Load the packet payload
      for(i = 0; i < buffer_length; i++){
         RAMTXDATA = buffer[i];
         INC_RAMADDR
      }
      
      // Step 3e: Pad short packets
      while(ramaddr < 64){
         RAMTXDATA = 0;
         INC_RAMADDR
      }
      
      // Set the TXENDH:TXENDL address to <ramaddr - 1>
      ramaddr--;
      TXENDH = (ramaddr >> 8);
      TXENDL = (ramaddr & 0x00FF);


   // Step 4: Set the TXSTARTH:TXSTARTL address back to 0x0000
   TXSTARTH = 0x00;
   TXSTARTL = 0x00;
   
   // Step 5: Write '1' to TXGO to begin transmission
   TXCN = 0x01;
 
}


//-----------------------------------------------------------------------------
// CP220x_Receive
//-----------------------------------------------------------------------------
// 
// This function reads the current packet from the CP220x receive buffer and 
// copies it to the passed buffer. The data copied to the buffer includes the
// 14-byte Ethernet Header and the Data Field. 
//
// Returns the number of bytes added to the buffer.
//
//        (8 bytes)  48-bit  48-bit    16-bit       0-1500 bytes   
//  --------------------------------------------------------------------------
// | Preamble | SFD | Dest | Source | Type/Length |  Data Field | Pad |  FCS  |
// |          |     | Addr |  Addr  |    Field    |             |     | (CRC) |
//  --------------------------------------------------------------------------
//     supplied by  |           supplied by the MCU             | supplied by 
//       CP220x     |                                           |    CP220x  
//-----------------------------------------------------------------------------
unsigned int CP220x_Receive(unsigned char* buffer, unsigned int buffer_length)
{
   bit rx_ok;
   bit skip = 0;
   UINT cplen;   
   unsigned int i;

   // Step 1: Check the RXOK bit to see if packet was received correctly
   rx_ok = (CPINFOL & RXOK) && (CPINFOH & RXVALID);
   
   // Step 2: If packet received correctly, read the length, otherwise, skip packet.
   if(rx_ok){
   
      // Read the packet length
      cplen.Char[0] = CPLENH;
      cplen.Char[1] = CPLENL;
        
   } else {
     
      // Set packet length to zero
      cplen.Int = 0;
      
      // Skip packet
      skip = 1;      
   }   

   // Step 3: Read the entire packet from the buffer 
   
   // If packet will fit in the buffer
   if(buffer_length >= cplen.Int){
      
      // Copy entire packet
      for(i = 0; i < cplen.Int; i++){
         *buffer++ = RXAUTORD;
      }

   } else {

      // Set packet length to zero
      cplen.Int = 0;
      
      // Skip packet
      skip = 1; 
   }
      
   // Step 4: Skip the packet, or clear the valid bit if the entire packet
   // has been unloaded from the buffer.
   
   if(skip)
   {
      RXCN |= 0x02;                    // Skip the packet
   } 

   else 
   {
      RXCN |= 0x04;                    // Clear the valid bit only
   }

   // If there are no more packets in the receive buffer, enable reception
   if(TLBVALID == 0x00)
   {
      RXCN = 0x00;   
   }
   
   // Return the number of bytes added to the buffer
   return cplen.Int;
}


//-----------------------------------------------------------------------------
// End Of File
//-----------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人动漫一区| 欧美日韩dvd在线观看| 国产精品一区二区三区99| 婷婷中文字幕综合| 午夜精品福利一区二区三区av | 欧美电影在线免费观看| 欧美影视一区在线| 欧美日韩免费观看一区二区三区 | 国产精品素人视频| 国产精品天美传媒沈樵| 中文字幕一区免费在线观看| 亚洲欧洲成人自拍| 一区二区三区成人在线视频| 亚洲成人www| 久久精品国产成人一区二区三区| 精品一区二区三区在线播放 | www激情久久| 欧美国产日韩亚洲一区| 中文av一区特黄| 亚洲精品少妇30p| 无吗不卡中文字幕| 黄页网站大全一区二区| 岛国一区二区三区| 99久久久国产精品| 欧美欧美午夜aⅴ在线观看| 欧美一区二区三区婷婷月色| 天堂久久久久va久久久久| 日韩国产精品大片| 国产一区二区免费看| 91一区二区在线观看| 欧美日韩国产美| 久久综合久色欧美综合狠狠| 国产精品福利一区| 亚洲午夜成aⅴ人片| 久久99热国产| 99久久国产综合色|国产精品| 欧美色视频在线| 久久免费电影网| 亚洲精选在线视频| 久久se这里有精品| eeuss鲁片一区二区三区| 欧美日韩一卡二卡三卡| 久久九九99视频| 一区二区三区国产精品| 久久精品国产亚洲一区二区三区 | 欧美一区二区三区人| 久久久91精品国产一区二区三区| 一区二区三区精品在线观看| 青青国产91久久久久久| 99综合影院在线| 欧美一区二区三区不卡| 中文字幕中文字幕在线一区| 蜜桃视频在线观看一区二区| 91美女在线视频| 2020国产精品自拍| 亚洲图片欧美色图| 国产激情视频一区二区在线观看 | 亚洲综合丝袜美腿| 国产九九视频一区二区三区| 在线视频国内一区二区| 久久久精品黄色| 日韩影院精彩在线| 99国产精品久| 国产三级精品在线| 免费精品99久久国产综合精品| 不卡av免费在线观看| 精品粉嫩aⅴ一区二区三区四区| 一区二区三区av电影| 国产99久久久国产精品潘金| 日韩一区二区三区观看| 亚洲图片欧美一区| 99麻豆久久久国产精品免费优播| 精品动漫一区二区三区在线观看| 天天综合日日夜夜精品| 色综合久久66| 中文字幕乱码日本亚洲一区二区| 久久精品理论片| 欧美年轻男男videosbes| 亚洲精品免费看| 99视频精品全部免费在线| 久久综合久久综合久久综合| 美女网站色91| 欧美性三三影院| 99久久精品国产网站| 欧美刺激脚交jootjob| 日韩国产欧美在线视频| 欧美四级电影在线观看| 夜夜精品视频一区二区| 99久久精品免费| 最新国产の精品合集bt伙计| 国产 欧美在线| 久久久不卡网国产精品一区| 国产一区二区三区免费| 久久亚洲欧美国产精品乐播| 黑人巨大精品欧美一区| 精品噜噜噜噜久久久久久久久试看| 午夜精品久久久久| 欧美精品一卡二卡| 午夜精品久久久久久不卡8050| 欧美日韩视频专区在线播放| 亚洲一区二区三区视频在线播放| 在线亚洲精品福利网址导航| 一级特黄大欧美久久久| 欧美午夜精品久久久| 午夜精品在线视频一区| 欧美日韩国产电影| 日韩电影在线观看网站| 欧美第一区第二区| 国内外成人在线| 国产日产欧产精品推荐色| 成人性视频免费网站| 国产精品青草久久| 99久久婷婷国产精品综合| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲视频一区二区在线| 色诱亚洲精品久久久久久| 亚洲午夜在线电影| 欧美人动与zoxxxx乱| 看电影不卡的网站| 国产日韩欧美精品一区| 99久久伊人网影院| 亚洲综合成人在线| 日韩一级黄色大片| 国产美女精品人人做人人爽| 国产精品另类一区| 在线免费亚洲电影| 日本va欧美va精品发布| 亚洲精品在线观| 99在线精品视频| 亚洲国产一区视频| 日韩午夜精品视频| 国产成人精品aa毛片| 亚洲欧美成aⅴ人在线观看| 欧美精品aⅴ在线视频| 韩国欧美国产1区| 国产精品久久久久久久久免费相片| 色婷婷综合中文久久一本| 亚洲国产欧美日韩另类综合| 欧美大片拔萝卜| 99热这里都是精品| 天堂精品中文字幕在线| 欧美激情在线观看视频免费| 日本精品一区二区三区高清 | 99精品国产一区二区三区不卡| 亚洲乱码中文字幕| 日韩精品一区在线观看| 91在线免费播放| 久久国产欧美日韩精品| 亚洲私人影院在线观看| 日韩视频123| 99精品在线观看视频| 免费在线观看一区二区三区| 成人欧美一区二区三区黑人麻豆| 3d动漫精品啪啪一区二区竹菊| 国产黄色精品视频| 三级欧美在线一区| 国产精品免费视频网站| 555www色欧美视频| 97成人超碰视| 韩国一区二区在线观看| 亚洲国产日韩在线一区模特 | 久久9热精品视频| 亚洲人成伊人成综合网小说| 欧美精品一区二区精品网| 欧美伊人精品成人久久综合97| 国产毛片精品视频| 五月综合激情日本mⅴ| 中文字幕一区在线观看视频| 日韩三级.com| 欧美色综合网站| av爱爱亚洲一区| 国产一区二区视频在线播放| 午夜成人免费电影| 亚洲欧洲成人精品av97| 久久色在线观看| 日韩亚洲欧美高清| 欧美午夜精品理论片a级按摩| eeuss鲁片一区二区三区在线看| 黑人精品欧美一区二区蜜桃| 日韩不卡一区二区| 亚洲蜜臀av乱码久久精品蜜桃| 中文字幕不卡三区| 精品毛片乱码1区2区3区| 欧美老肥妇做.爰bbww视频| 色综合一个色综合亚洲| av一二三不卡影片| 国产91在线看| 国产精品亚洲第一| 狠狠色丁香婷综合久久| 奇米精品一区二区三区四区| 五月天亚洲精品| 亚洲mv大片欧洲mv大片精品| 一区二区欧美国产| 亚洲免费三区一区二区| 中文字幕中文字幕一区| 国产精品久久久久四虎| 欧美激情一区二区三区全黄 | 国产成人鲁色资源国产91色综 | 91精品国产福利在线观看| 欧美日韩精品二区第二页|