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

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

?? utils.c

?? ARM9嵌入式系統開發與實踐 ARM9嵌入式系統開發與實踐
?? 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 )		//將一組字符串里面的小寫字母變為大寫
{
	while (*s != '\0') 
	{
		if (*s >= 'a' && *s <= 'z')
			*s = *s - 32;
		s++ ;
	}
	
	return 1 ;
}*/


char *strupr( char *Str )		//將一組字符串里面的小寫字母變為大寫
{
	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);
			}				
		}
	}	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲日本在线视频观看| 色偷偷成人一区二区三区91| 欧美日韩不卡在线| 寂寞少妇一区二区三区| 亚洲欧美一区二区视频| 欧美一区二区三区视频| 成人午夜免费电影| 秋霞午夜鲁丝一区二区老狼| 欧美国产一区在线| 宅男在线国产精品| 91欧美激情一区二区三区成人| 视频一区视频二区在线观看| 国产精品久久久久精k8| 欧美va在线播放| 91女厕偷拍女厕偷拍高清| 色嗨嗨av一区二区三区| 国产激情一区二区三区| 三级欧美在线一区| 麻豆91精品视频| 亚洲国产欧美在线人成| 国产精品天干天干在线综合| 欧美肥妇毛茸茸| 在线视频一区二区三| av亚洲产国偷v产偷v自拍| 国产一区二区女| 国产在线播精品第三| 不卡电影一区二区三区| 国产在线精品视频| 97久久精品人人做人人爽| 国v精品久久久网| 国产精品中文字幕欧美| 久久99精品国产91久久来源| 国产精品 日产精品 欧美精品| 91女神在线视频| 日韩欧美中文字幕精品| 欧美伦理电影网| 国产亚洲精品福利| 国产性天天综合网| 亚洲成人精品影院| 日韩经典一区二区| 国产99精品国产| 欧美日韩的一区二区| 欧美国产日本韩| 丝袜诱惑制服诱惑色一区在线观看 | 91免费看`日韩一区二区| 日韩精品一区二区三区四区视频| 欧美日韩视频在线一区二区| 精品视频在线免费看| 国产日韩综合av| 最新日韩av在线| 狠狠色丁香婷婷综合| 久久国产精品99久久久久久老狼| 久久精品久久久精品美女| 色狠狠桃花综合| 国产精品日产欧美久久久久| 久久精品免费观看| 欧美乱熟臀69xxxxxx| 亚洲色图欧洲色图婷婷| 国产精品自在欧美一区| 91精品国产91久久久久久一区二区| 国产精品二区一区二区aⅴ污介绍| 日本午夜精品视频在线观看 | 日韩一区二区三区高清免费看看| 中文字幕一区二区三区在线播放| 国内精品免费**视频| 欧美一级黄色大片| 五月综合激情网| 国产一区二区女| 精品国产乱码久久久久久图片| 国产精品久久久久久久久免费相片| 另类小说综合欧美亚洲| 在线成人免费视频| 天天av天天翘天天综合网色鬼国产| 在线观看日韩毛片| 一区二区三区四区在线| 久久精品国产网站| 91精品国产免费久久综合| 性久久久久久久久| 欧美一级片在线看| 日韩高清在线不卡| 欧美第一区第二区| 欧美电影在哪看比较好| 国产传媒日韩欧美成人| jizz一区二区| 亚洲乱码一区二区三区在线观看| 亚洲资源中文字幕| 国模大尺度一区二区三区| 精品国产不卡一区二区三区| 国产一区高清在线| 国产欧美日韩精品一区| 99这里只有久久精品视频| 亚洲欧美电影院| 大白屁股一区二区视频| 中文字幕在线不卡一区| 91黄色激情网站| 日本不卡视频在线| 久久网站热最新地址| 青青草成人在线观看| 精品91自产拍在线观看一区| 成人综合日日夜夜| 99re亚洲国产精品| 亚洲国产精品一区二区久久 | 国产一区二区调教| 亚洲欧洲日产国码二区| 欧美色视频一区| 韩国女主播成人在线观看| 国产精品国产三级国产aⅴ原创| 欧美撒尿777hd撒尿| 国产在线视频一区二区| 亚洲精品一二三| 精品久久人人做人人爰| 91视频一区二区| 美国精品在线观看| 亚洲欧洲色图综合| 日韩精品一区二区三区在线观看| 国产福利一区在线| 午夜激情久久久| 中文字幕一区在线观看| 7777精品伊人久久久大香线蕉超级流畅| 国产在线精品国自产拍免费| 亚洲一区二区精品久久av| 国产亚洲成年网址在线观看| 欧美日韩综合一区| www.亚洲在线| 韩国中文字幕2020精品| 亚洲观看高清完整版在线观看| 国产色91在线| 欧美成人精精品一区二区频| 色88888久久久久久影院按摩 | 91香蕉视频污| 国产成人在线色| 捆绑紧缚一区二区三区视频| 一区二区三区色| 中文字幕亚洲在| 26uuu国产在线精品一区二区| 欧美福利一区二区| 欧美影视一区在线| 午夜精彩视频在线观看不卡| 亚洲欧美日韩精品久久久久| 国产精品理伦片| 久久久久久一级片| 色婷婷久久99综合精品jk白丝| 国产夫妻精品视频| 国内精品第一页| 裸体健美xxxx欧美裸体表演| 午夜久久久影院| 亚洲第一电影网| 午夜不卡av在线| 亚洲国产成人91porn| 亚洲成av人片一区二区三区| 亚洲一区免费观看| 亚洲午夜激情网页| 无码av免费一区二区三区试看| 一区二区激情小说| 亚洲精品成a人| 一区二区三区四区精品在线视频| 亚洲色图欧美偷拍| 樱花草国产18久久久久| 亚洲香肠在线观看| 天使萌一区二区三区免费观看| 亚洲成av人片在www色猫咪| 亚洲mv在线观看| 蜜桃视频第一区免费观看| 精品一区二区三区免费观看| 国产一区二区三区在线观看免费视频| 九一久久久久久| 懂色中文一区二区在线播放| 99天天综合性| 欧美午夜一区二区三区| 91精品国产色综合久久ai换脸 | 亚洲激情自拍偷拍| 亚洲国产裸拍裸体视频在线观看乱了 | 91麻豆精品国产91久久久久久| 欧美日韩精品欧美日韩精品| 日韩片之四级片| 久久网站最新地址| 亚洲柠檬福利资源导航| 亚洲第一搞黄网站| 精品一二线国产| 99久久精品国产观看| 91 com成人网| 久久久久青草大香线综合精品| 亚洲国产精品ⅴa在线观看| 一区二区三区四区亚洲| 日韩影院精彩在线| 国产乱子伦一区二区三区国色天香 | 麻豆成人久久精品二区三区小说| 国产美女视频91| 欧美亚洲图片小说| 国产亚洲人成网站| 亚洲一区二区精品3399| 国产专区欧美精品| 色婷婷香蕉在线一区二区| 日韩精品中文字幕一区| 日韩毛片精品高清免费| 美腿丝袜在线亚洲一区| 色拍拍在线精品视频8848| 久久精品亚洲麻豆av一区二区| 一区二区三区波多野结衣在线观看| 久久超碰97中文字幕|