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

📄 telnet2.c

📁 embedded ethernet code for pic18F
💻 C
字号:
#include <p18cxxx.h>
#include <usart.h>
#include <delays.h>
#include "sockets.h"

unsigned const rom char telnet_banner[]="\r\nEDTP ethernet 8088>";
unsigned const rom char goodbye_banner[]="\r\nGoodbye\r\n";

unsigned int inputBytes=0;
unsigned char flag;

#define NONE 0
#define ECHO 1
#define NEWLINE 2

void put8088(int bytesIn,FLAGS *flags,unsigned char *dataPacket)
{
   unsigned char i,j,dataHex;
   static unsigned char hexflag=0;
   static unsigned char cntr=0;
   static unsigned char byteout;

   cntr++;
   
   //if(FLAGbits.debug)
   //{
	   //if(hexflag==1) putrsUSART("Hexflag on ");
	   //else putrsUSART("Hexflag off ");
	   //putrsUSART("cntr = ");
	   //printInteger(cntr);
	   //putrsUSART("\r\n");
 //}
 
 

 if(dataPacket[0] != 0x0A)
 {
	 inputBytes=bytesIn;
	 flag=ECHO;
 }
	 
   
   if(dataPacket[0] == '*')
   {
	 //if(FLAGbits.debug) putrsUSART("Latch mode\r\n");
	 hexflag=1;
     cntr=0;
   }
   else if(hexflag==1)
   {
	 //putrsUSART("Hex on\r\n");
	 if(dataPacket[0] >= '0' && dataPacket[0] <= '9') dataHex=dataPacket[0] - 0x30;
	 else if(dataPacket[0] >= 'A' && dataPacket[0] <= 'F') dataHex=dataPacket[0] - 0x37;
	 else if(dataPacket[0] >= 'a' && dataPacket[0] <= 'f') dataHex=dataPacket[0] - 0x67;
     else 
     {
	     hexflag=0;
	     cntr=0;
	 }
     if(cntr == 1)
     {
	   //putrsUSART("Top nibble\r\n");
	   byteout = dataHex << 4;
     }
	 if(cntr == 2)
     {
	   //putrsUSART("Bottom nibble\r\n");  
       byteout |= dataHex & 0x0F;
       TRISD=0xff;
       PORTD=byteout;
       PORTCbits.RC1=1;
       Delay10TCYx(1);
       PORTCbits.RC1=0;
       hexflag=0;
       putrsUSART("Byte latched\r\n");
     }
   }
   

   
   if(dataPacket[0] == 0x0A)
   {
      flag=NONE;
      hexflag=0;
   }
   
   if ((dataPacket[0] == 0x0D||isFirstPacket(flags)))
   {
         inputBytes=0;
         flag=NEWLINE;
   }
   
   
   
   //putrsUSART("8088: ");printInteger(bytesOut);putrsUSART("\r\n");
 }
 
 unsigned int get8088(FLAGS *flags,unsigned char *dataPacket)
 {
	 unsigned int bytesOut,i;
	 
	 switch(flag)
	 {
		 case ECHO:
		 	bytesOut=inputBytes;
		 	break;
		 case NEWLINE:
		 	bytesOut = sizeof(telnet_banner);
	     	for(i=0;i<bytesOut;++i) dataPacket[i] = telnet_banner[i];
	     	break;
	     default:
	     	bytesOut=0;
	     	break;
	  }
	  flag=NONE;
	  return bytesOut;
}

         
	 


⌨️ 快捷键说明

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