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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? utils.c

?? S3C2410下的NandFlash實(shí)驗(yàn)代碼!
?? C
字號:
#include "def.h"

extern int  SerialRxReady(void);
extern char SerialRxKey(void);


unsigned short ntohs(unsigned short s)
{
	return (s >> 8) | (s << 8);
}

unsigned long ntohl(unsigned long l)
{
	return  ((l >> 24) & 0x000000ff) |
		((l >>  8) & 0x0000ff00) |
		((l <<  8) & 0x00ff0000) |
		((l << 24) & 0xff000000);
}

unsigned short htons(unsigned short s)
{
	return (s >> 8) | (s << 8);
}

unsigned long htonl(unsigned long l)
{
	return ntohl(l);
}

/*unsigned char strupr( char *s )		//將一組字符串里面的小寫字母變?yōu)榇髮?{
	while (*s != '\0') 
	{
		if (*s >= 'a' && *s <= 'z')
			*s = *s - 32;
		s++ ;
	}
	
	return 1 ;
}*/


char *strupr( char *Str )		//將一組字符串里面的小寫字母變?yōu)榇髮?{
	char *cp;
	cp = Str;
	
	while (*cp != 0)
	{
		if (*cp >= 'a' && *cp <= 'z' )
		{
			*cp -= 'a' - 'A';
		}
	
		cp++;
	}
	
	return Str;
}


unsigned long strtobcd(char *s)
{
	unsigned long ret;
	int i;

	ret = 0;

	while (*s != '\0') {
		if (*s >= '0' && *s <= '9')
			i = *s - '0';
		else
			return -1;
		ret = (ret << 4) + i;
		s++;
	}

	return ret;
}

unsigned long strtodec(char *str, int cnt)
{
	unsigned long i, data = 0;	
	
	for(i=0; i<cnt; i++)
	{
		data *= 10;
		if(str[i]<'0'||str[i]>'9')
			return -1;
		data += str[i]-'0';			
	}	
	return data;
}

void ultostr(char *s, unsigned long data)
{
	int i;
	
	s[8] = 0;
	for(i=7; i>=0; i--, data >>=4)
	{
		if((data&0xf)<=9)
			s[i] = (data&0xf)+'0';
		else
			s[i] = (data&0xf)+'a'-0x0a;
	}	
}

#if 0

#include "utils.h"

unsigned long strtoul(char *s)
{
	unsigned long ret;
	int i;

	ret = 0;

	while (*s != '\0') {
		if (*s >= '0' && *s <= '9')
			i = *s - '0';
		else if (*s >= 'a' && *s <= 'f')
			i = *s - 'a' + 0xa;
		else if (*s >= 'A' && *s <= 'F')
			i = *s - 'A' + 0xa;
		else
			return -1;
		ret = (ret << 4) + i;
		s++;
	}

	return ret;
}

void putch(char ch)
{
	SerialTxChar(ch);
}

void puts(char *str)
{
	SerialTxString(str);
}

int kbhit(void)
{
	if(SerialRxReady())
		return 1;
	return ScanKeyDown();
}

int getkey(void)
{
	int c;
	
	c = SerialRxKey();
	if(!c)
		return GetScanKey();
}

char getch(void)
{
	int c;
	
	while(1) {
		c = getkey();
		if(c)
			return c;
	}
	//return SerialRxChar();
}

void memcpy(void *s1, const void *s2, int n)
{
	int i;

	for (i = 0; i < n; i++)
		((char *)(s1))[i] = ((const char *)(s2))[i];
}

void memset(void *s, const char ch, int n)
{
	int i;

	for (i = 0; i < n; i++)
		((char *)(s))[i] = ch;
}

int strlen(const char *s)
{
	int i = 0;

	for(; *s; s++)
		i++;
	
	return i;
}

int strncmp(const char *s1, const char *s2, int maxlen)
{
	int i;

	for(i = 0; i < maxlen; i++) {
		if(s1[i] != s2[i])
			return ((int) s1[i]) - ((int) s2[i]);
		if(s1[i] == 0)
			return 0;
	}

	return 0;
}

/*---------------------printf and support routines ---------------------*/
/* print c count times */
void PutRepChar(char c, int count)
{
	while (count--) putch(c);
}

/* put string reverse */
void PutStringReverse(char *s, int index)
{
  while ((index--) > 0) putch(s[index]);
}

/*-------------------------------------------------------------------------*/
/* 
   prints value in radix, in a field width width, with fill
   character fill
   if radix is negative, print as signed quantity
   if width is negative, left justify
   if width is 0, use whatever is needed
   if fill is 0, use ' '
 */

static void PutNumber(int value, int radix, int width, char fill)
{
  char buffer[40];
  int bi = 0;
  int unsigned uvalue;
  short int digit;
  short int left = FALSE;
  short int negative = FALSE;

  if (fill == 0) fill = ' ';

  if (width < 0) {
    width = -width;
    left = TRUE;
  }
  if (width < 0 || width > 80) width = 0;
  
  if (radix < 0) {
    radix = -radix;
    if (value < 0) {
      negative = TRUE;
      value = -value;
    }
  }
  uvalue = value;
  do {
    if (radix != 16) {
      digit = uvalue % radix ;
      uvalue = uvalue / radix ;
    }
    else {
      digit = uvalue & 0xf;
      uvalue = uvalue >> 4;
    }
    buffer[bi] = digit + ((digit <= 9) ? '0' : ('A' - 10));
    bi++;

    if (uvalue != 0) {
      if ((radix==10)&&((bi==3)||(bi==7)||(bi==11)|(bi==15))) {
	//buffer[bi++]=',';
      }
    }
  } while (uvalue != 0);

  if (negative) {
    buffer[bi] = '-';
    bi += 1;
  }
  if (width <= bi) PutStringReverse(buffer, bi);
  else {
    width -= bi;
    if (!left) PutRepChar(fill, width);
    PutStringReverse(buffer, bi);
    if (left) PutRepChar(fill, width);
  } 
}

/*-------------------------------------------------------------------------*/
static char *FormatItem(char *f, int a)
{
  char c;
  int fieldwidth = 0;
  int leftjust = FALSE;
  int radix = 0;
  char fill = ' ';

  if (*f == '0') fill = '0';
  while ((c = *f++)!=0) {
    if (c >= '0' && c <= '9') {
      fieldwidth = (fieldwidth * 10) + (c - '0');
    }
    else switch (c) {
    case '\000': return(--f);
    case '%': putch('%');
      return(f);
    case '-': leftjust = TRUE;
      break;
    case 'c': {
      if (leftjust) putch(a & 0x7f);
      if (fieldwidth > 0) PutRepChar(fill, fieldwidth - 1);
      if (!leftjust) putch(a & 0x7f);
      return(f);
    }
    case 's': {
      if (leftjust) puts((char *) a);
      if (fieldwidth > strlen((char *) a))
	PutRepChar(fill, fieldwidth - strlen((char *)a));
      if (!leftjust) puts((char *) a);
      return(f);
    }
    case 'd': 
    case 'i': radix = -10;break;
    case 'u': radix = 10;break;
    case 'x': radix = 16;break;
    case 'X': radix = 16;break;
    case 'o': radix = 8;break;
    default : radix = 3;break;/* unknown switch! */
    }
    if (radix) break;
  }
  if (leftjust) fieldwidth = -fieldwidth;
  PutNumber(a, radix, fieldwidth, fill);
  return(f);
}

#define vaStart(list, param) list = (char*)((int)&param + sizeof(param))
#define vaArg(list, type) ((type *)(list += sizeof(type)))[-1]
#define vaEnd(list)

void printf(char *f, ...)       /* variable arguments */
{
//	U32 mode ;
	char *argP;
	
	/* disable IRQs and FIQs */
//	mode = uHALir_ReadMode() ;
//	uHALir_WriteMode(mode | NoFIQ | NoIRQ) ;

	vaStart(argP,f);		/* point at the end of the format string */
	while (*f) {			/* this works because args are all ints */
		if (*f == '%')
			f = FormatItem(f + 1, vaArg(argP, int));
		else
			putch(*f++);
	}
	vaEnd(argP);

	/* restore the previous mode */
//	uHALir_WriteMode(mode) ;
}

#else

#include <stdarg.h>
#include <string.h>
#include <stdlib.h>

void SerialTxChar(char ch);
void SerialTxString(char *s);
char SerialRxChar(void);

void putch(char ch)
{
//	char c[2];
	
	SerialTxChar(ch);

}

void puts(char *str)
{
	SerialTxString(str);
	
}

//If you don't use vsprintf(), the code size is reduced very much.
typedef int *__va_list[1];
int vsprintf(char * /*s*/, const char * /*format*/, __va_list /*arg*/);

void printf(char *fmt, ...)
{
	va_list ap;
	char string[1024];
	
	va_start(ap,fmt);
	vsprintf(string,fmt,ap);
	puts(string);
	va_end(ap);
}
/*
void sprintf(char *mem, char *fmt, ...)
{
	va_list ap;
	
	va_start(ap,fmt);
	vsprintf(mem,fmt,ap);
	va_end(ap);
}
*/
#endif

/*
int kbhit(void)
{
	if(SerialRxReady())
		return 1;
	return ScanKeyDown();
}
*/
int getkey(void)
{
	int c;
	
	c = SerialRxKey();
	if(c)
		return c;
	return 0;
//	return GetScanKey();
}

char getch(void)
{
	int c;
	
	while(1) {
		c = getkey();
		if(c) {
			//printf("get key!\n");
			return c;
		}
	}
	//return SerialRxChar();
}

int getyorn(void)
{
	char c;
	
	puts(" [y/n] ");
	while(1) {		
		c = getch();
		if((c=='y')||(c=='Y')||(c=='n')||(c=='N'))
			break;
	}
	putch(c);
	putch('\n');
	return c&1;	//y&Y are odd, n&N are even
}

int GetParameter(char *str, int cnt)
{
	int i, key;	
	
	i = 0;
	while(1)
	{
		key = getch();
		if(key)
		{
			if(key == ENTER_KEY)
			{
				str[i] = 0;
				return i;
			}
			else if(key == BACK_KEY && i>0)
			{
				i--;
				printf("\b \b");
			}
			else if(key == 0x1b)
			{
				//getch();
				//getch();
				return -1;
			}
			else if(key>=0x20 && key<=0x7e && i<cnt)
			{
				str[i++] = key;
				putch(key);
			}				
		}
	}	
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看欧美日本| 亚洲国产欧美在线| 国产不卡视频一区| 欧美国产一区二区| 成人av电影在线观看| 中文字幕欧美一| 一本大道久久a久久综合婷婷| 一区二区三区精品| 欧美精品18+| 狠狠色丁香婷综合久久| 久久男人中文字幕资源站| 成人综合婷婷国产精品久久蜜臀| 国产欧美日韩三区| 91啦中文在线观看| 午夜欧美在线一二页| 欧美成人精品3d动漫h| 国产精品996| 亚洲伦理在线精品| 日韩一级免费观看| 福利一区福利二区| 亚洲曰韩产成在线| 久久久久久久久久久久久久久99 | 日韩欧美你懂的| 经典三级在线一区| 亚洲三级在线观看| 欧美一区二区三区在线看| 成人性生交大片免费看中文| 亚洲成人一区二区在线观看| 欧美va亚洲va在线观看蝴蝶网| 成人aa视频在线观看| 视频一区视频二区中文| 国产女人18毛片水真多成人如厕| 91黄色免费版| 国产精品18久久久久久久久久久久| 亚洲女性喷水在线观看一区| 日韩三级视频在线看| 91浏览器在线视频| 国产乱淫av一区二区三区| 一区二区三区.www| 国产视频在线观看一区二区三区 | 久久久91精品国产一区二区精品| 91污在线观看| 美女视频一区二区| 亚洲综合小说图片| 国产免费久久精品| 日韩片之四级片| 日本韩国欧美在线| 国产成人免费9x9x人网站视频| 亚洲成人自拍网| 国产精品国产精品国产专区不蜜| 精品国产乱码久久久久久久| 欧美日韩在线观看一区二区 | 亚洲精品欧美专区| 久久婷婷国产综合精品青草| 欧美精品1区2区3区| 色综合天天综合给合国产| 国产精品一区二区免费不卡| 欧美aaaaa成人免费观看视频| 亚洲欧美韩国综合色| 久久久777精品电影网影网| 欧美成人精品高清在线播放 | 美女视频一区在线观看| 亚洲国产乱码最新视频| 亚洲手机成人高清视频| 日本一区二区视频在线| 欧美一区二区黄| 欧亚洲嫩模精品一区三区| 91亚洲精品乱码久久久久久蜜桃| 国产乱人伦偷精品视频免下载| 日本人妖一区二区| 视频在线观看一区二区三区| 亚洲制服丝袜av| 亚洲图片一区二区| 一区二区三区在线视频免费| 亚洲人成人一区二区在线观看| 中文字幕中文在线不卡住| 国产午夜亚洲精品午夜鲁丝片| 欧美r级电影在线观看| 日韩精品一区在线观看| 精品理论电影在线| 国产蜜臀97一区二区三区 | 日韩一级免费一区| 日韩欧美成人激情| 欧美xxxx在线观看| 久久综合色婷婷| 国产欧美日韩另类视频免费观看 | 日韩欧美亚洲国产另类| 日韩一区二区精品在线观看| 欧美一级片在线| 久久综合色8888| 中文字幕欧美区| 亚洲女人小视频在线观看| 亚洲综合在线视频| 天天综合色天天综合| 毛片不卡一区二区| 国产精品18久久久久久vr| 福利电影一区二区| 91亚洲国产成人精品一区二三| 91成人免费网站| 日韩一区二区三区免费观看| 久久综合九色综合97婷婷女人 | 色婷婷综合五月| 欧美三级视频在线| 91精品国产欧美日韩| 久久免费午夜影院| 亚洲精品一二三| 免费在线观看视频一区| 国产精品88av| 99久久免费视频.com| 欧美日韩国产成人在线91| 日韩一二三四区| 国产精品色在线| 亚洲h精品动漫在线观看| 久热成人在线视频| 99re成人精品视频| 777午夜精品免费视频| 久久久99精品免费观看不卡| 亚洲主播在线播放| 国产精品亚洲综合一区在线观看| 91亚洲大成网污www| 精品欧美乱码久久久久久1区2区| 国产精品免费aⅴ片在线观看| 亚洲第一久久影院| 国产激情91久久精品导航| 欧美日韩精品一区二区天天拍小说 | 日本一区二区综合亚洲| 亚洲电影中文字幕在线观看| 国产高清精品在线| 欧美日韩黄色一区二区| 国产视频一区在线观看| 婷婷成人综合网| 成人免费的视频| 精品国精品国产| 一区二区三区欧美亚洲| 国产黄人亚洲片| 91精品国产综合久久久久久久久久| 国产精品福利av| 国产精品综合视频| 欧美精品xxxxbbbb| 又紧又大又爽精品一区二区| 国产一区二区精品久久| 555www色欧美视频| 亚洲另类一区二区| 成人app在线| 国产亚洲一区字幕| 久久99深爱久久99精品| 欧美日本韩国一区二区三区视频| 国产精品视频免费| 国产一区二三区| 日韩欧美中文字幕公布| 天天av天天翘天天综合网| www.亚洲免费av| 国产拍揄自揄精品视频麻豆| 久久成人免费网站| 欧美狂野另类xxxxoooo| 亚洲一区二区三区在线看| 99热99精品| 中文字幕亚洲不卡| 懂色av一区二区三区蜜臀| 2021中文字幕一区亚洲| 加勒比av一区二区| 欧美成人a在线| 精品一区二区久久| 精品久久久久久久久久久院品网| 丝瓜av网站精品一区二区 | 91精品免费在线观看| 亚洲影视在线播放| 欧美图片一区二区三区| 亚洲成年人影院| 欧美日韩电影在线播放| 亚洲高清视频的网址| 欧美日韩视频在线观看一区二区三区| 亚洲综合在线五月| 欧美猛男男办公室激情| 偷拍日韩校园综合在线| 91精品国产综合久久婷婷香蕉 | www.亚洲激情.com| 国产精品国产馆在线真实露脸| 99精品视频中文字幕| 亚洲日本电影在线| 欧美性大战久久久久久久| 天天综合天天综合色| 欧美www视频| 国产91精品入口| 综合激情成人伊人| 日本道色综合久久| 五月天激情综合| 欧美成人福利视频| 国产99精品在线观看| 亚洲欧美区自拍先锋| 欧美丝袜丝交足nylons| 日本女优在线视频一区二区| 精品国产a毛片| hitomi一区二区三区精品| 一区二区三区四区不卡视频| 正在播放亚洲一区| 大陆成人av片| 亚洲国产日产av| 久久精品网站免费观看| 91在线观看视频|