⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.h~

📁 Control ENC28J60 codevision
💻 H~
字号:
#include "etherShield.h"

// please modify the following two lines. mac and ip have to be unique
// in your local area network. You can not have the same numbers in
// two devices:
unsigned char mymac[6] = {0x54,0x55,0x58,0x10,0x00,0x24}; 
unsigned char myip[4] = {192,168,1,15};
// how did I get the mac addr? Translate the first 3 numbers into ascii is: TUX
#define BUFFER_SIZE 250

unsigned char buf[BUFFER_SIZE+1];
unsigned int plen;

void setup()
{ 
  /*initialize enc28j60*/
  ES_enc28j60Init(mymac);
  ES_enc28j60clkout(2); // change clkout from 6.25MHz to 12.5MHz
 
  delay_ms(10);

  /* Magjack leds configuration, see enc28j60 datasheet, page 11 */
  // LEDA=green LEDB=yellow
  //
  // 0x880 is PHLCON LEDB=on, LEDA=on
  // enc28j60PhyWrite(PHLCON,0b0000 1000 1000 00 00);
  ES_enc28j60PhyWrite(PHLCON,0x880);
  delay_ms(500);
 
  //
  // 0x990 is PHLCON LEDB=off, LEDA=off
  // enc28j60PhyWrite(PHLCON,0b0000 1001 1001 00 00);
  ES_enc28j60PhyWrite(PHLCON,0x990);
  delay_ms(500);
 
  //
  // 0x880 is PHLCON LEDB=on, LEDA=on
  // enc28j60PhyWrite(PHLCON,0b0000 1000 1000 00 00);
  ES_enc28j60PhyWrite(PHLCON,0x880);
  delay_ms(500);
 
  //
  // 0x990 is PHLCON LEDB=off, LEDA=off
  // enc28j60PhyWrite(PHLCON,0b0000 1001 1001 00 00);
  ES_enc28j60PhyWrite(PHLCON,0x990);
  delay_ms(500);
 
  //
  // 0x476 is PHLCON LEDA=links status, LEDB=receive/transmit
  // enc28j60PhyWrite(PHLCON,0b0000 0100 0111 01 10);
  ES_enc28j60PhyWrite(PHLCON,0x476);
  delay_ms(100);
 
  //init the ethernet/ip layer:
  ES_init_ip_arp_udp_tcp(mymac,myip,80);
}

void main()
{
   while(1)
   {
      plen = ES_enc28j60PacketReceive(BUFFER_SIZE, buf);
      /*plen will be unequal to zero if there is a valid packet (without crc error) */
      if(plen!=0)
      {
         if(ES_eth_type_is_arp_and_my_ip(buf,plen))
         {  
            ES_make_arp_answer_from_request(buf);
         }
         // check if ip packets (icmp or udp) are for us:
         if(ES_eth_type_is_ip_and_my_ip(buf,plen)!=0)
         {
            if(buf[IP_PROTO_P]==IP_PROTO_ICMP_V && buf[ICMP_TYPE_P]==ICMP_TYPE_ECHOREQUEST_V)
            {
               // a ping packet, let's send pong
          
               ES_make_echo_reply_from_request(buf,plen);
            }
         }
 
  }  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -