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

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

?? rprintf.c

?? MMC/SD on Olimex Sam7-EX256
?? C
字號:
//#########################################################################
// (r)printf.c
//
// code based on sprintf() from gcctest9.c by Volker Oth
//
// Changes made by Holger Klabunde:
// Now takes format strings from FLASH (was into RAM ! before)
// Fixed bug for %i, %I. u_val was used before it had the right value
// Added %d, %D (is same as %i, %I)
// Support for long variables %li, %ld, %Lu, %LX ....
// %x, %X now gives upper case hex characters A,B,C,D,E,F
// Output can be redirected in a single function: myputchar()
// Make printf() smaller by commenting out a few #defines
// Added some SPACE and ZERO padding %02x or % 3u up to 9 characters
// 
// Changes made by Martin Thomas:
// LPC2000 port using the R O Software UART-Interface (see myputchar)
// ARM7S   port using minimal uart interface
// reverted Klabundes "from flash" since only useful for AVR "Harvard"
//
// Todo:
// %f, %F for floating point numbers
//
//#########################################################################

#include <stdarg.h>
#include <string.h>
#include "include/rprintf.h"
#include "include/include.h"

#define SCRATCH 12	//32Bits go up to 4GB + 1 Byte for \0

//Spare some program space by making a comment of all not used format flag lines
#define USE_LONG 	// %lx, %Lu and so on, else only 16 bit integer is allowed
//#define USE_OCTAL	// %o, %O Octal output. Who needs this ?
#define USE_STRING      // %s, %S Strings as parameters
#define USE_CHAR	// %c, %C Chars as parameters
#define USE_INTEGER	// %i, %I Remove this format flag. %d, %D does the same
#define USE_HEX		// %x, %X Hexadezimal output
#define USE_UPPERHEX	// %x, %X outputs A,B,C... else a,b,c...
#ifndef USE_HEX
 #undef USE_UPPERHEX    // ;)
#endif
#define USE_UPPER	// uncommenting this removes %C,%D,%I,%O,%S,%U,%X and %L..
                        // only lowercase format flags are used
#define PADDING         //SPACE and ZERO padding

#include "include/serial.h"
#include "include/include.h"

//extern char data[MSG_SIZE];
extern unsigned int length;

static void myputchar(unsigned char c)
{
	if(c == '\n') uart0_putc('\r');	
	uart0_putc(c); // see serial.c  			//FOR USART
	
	//data[length]=(char)c;
	//length++;
}


#if 0

#include "softuart.h"

static void myputchar(unsigned char c)
{
	if(c == '\n') softuart_putchar('\r');
	softuart_putchar(c); // see softuart.c
}
#endif

#if 0
static void myputchar(unsigned char c)
{
	while ( uart0Space() < 2 );
	if(c == '\n') uart0Putch('\r');
	uart0Putch(c); // see uart.c
}
#endif

void rprintf(char const *format, ...)
{
  unsigned char scratch[SCRATCH];
  unsigned char format_flag;
  unsigned short base;
  unsigned char *ptr;
  unsigned char issigned=0;
  va_list ap;

#ifdef USE_LONG
  unsigned char islong=0;
  unsigned long u_val=0;
  long s_val=0;
#else
  unsigned int u_val=0;
  int s_val=0;
#endif

  unsigned char fill;
  unsigned char width;

  va_start (ap, format);
  for (;;){
    while ((format_flag = *(format++)) != '%'){      // Until '%' or '\0' 
      if (!format_flag){va_end (ap); return;}
      myputchar(format_flag);
    }

    issigned=0; //default unsigned
    base = 10;

    format_flag = *format++; //get char after '%'

#ifdef PADDING
    width=0; //no formatting
    fill=0;  //no formatting
    if(format_flag=='0' || format_flag==' ') //SPACE or ZERO padding  ?
     {
      fill=format_flag;
      format_flag = *format++; //get char after padding char
      if(format_flag>='0' && format_flag<='9')
       {
        width=format_flag-'0';
        format_flag = *format++; //get char after width char
       }
     }
#endif

#ifdef USE_LONG
    islong=0; //default int value
#ifdef USE_UPPER
    if(format_flag=='l' || format_flag=='L') //Long value 
#else
    if(format_flag=='l') //Long value 
#endif
     {
      islong=1;
      format_flag = *format++; //get char after 'l' or 'L'
     }
#endif

    switch (format_flag)
    {
#ifdef USE_CHAR
    case 'c':
#ifdef USE_UPPER
    case 'C':
#endif
      format_flag = va_arg(ap,int);
      // no break -> run into default
#endif

    default:
      myputchar(format_flag);
      continue;

#ifdef USE_STRING
#ifdef USE_UPPER
    case 'S':
#endif
    case 's':
      ptr = (unsigned char*)va_arg(ap,char *);
      while(*ptr) { myputchar(*ptr); ptr++; }
      continue;
#endif

#ifdef USE_OCTAL
    case 'o':
#ifdef USE_UPPER
    case 'O':
#endif
      base = 8;
      myputchar('0');
      goto CONVERSION_LOOP;
#endif

#ifdef USE_INTEGER //don't use %i, is same as %d
    case 'i':
#ifdef USE_UPPER
    case 'I':
#endif
#endif
    case 'd':
#ifdef USE_UPPER
    case 'D':
#endif
      issigned=1;
      // no break -> run into next case
    case 'u':
#ifdef USE_UPPER
    case 'U':
#endif

//don't insert some case below this if USE_HEX is undefined !
//or put       goto CONVERSION_LOOP;  before next case.
#ifdef USE_HEX
      goto CONVERSION_LOOP;
    case 'x':
#ifdef USE_UPPER
    case 'X':
#endif
      base = 16;
#endif

    CONVERSION_LOOP:

      if(issigned) //Signed types
       {
#ifdef USE_LONG
        if(islong) { s_val = va_arg(ap,long); }
        else { s_val = va_arg(ap,int); }
#else
        s_val = va_arg(ap,int);
#endif

        if(s_val < 0) //Value negativ ?
         {
          s_val = - s_val; //Make it positiv
          myputchar('-');    //Output sign
         }

        u_val = (unsigned long)s_val;
       }
      else //Unsigned types
       {
#ifdef USE_LONG
        if(islong) { u_val = va_arg(ap,unsigned long); }
        else { u_val = va_arg(ap,unsigned int); }
#else
        u_val = va_arg(ap,unsigned int);
#endif
       }
    
      ptr = scratch + SCRATCH;
      *--ptr = 0;
      do
       {
        char ch = u_val % base + '0';
#ifdef USE_HEX
        if (ch > '9')
         {
          ch += 'a' - '9' - 1;
#ifdef USE_UPPERHEX
          ch-=0x20;
#endif
         }
#endif          
        *--ptr = ch;
        u_val /= base;

#ifdef PADDING
        if(width) width--; //calculate number of padding chars
#endif
      } while (u_val);

#ifdef PADDING
     while(width--) *--ptr = fill; //insert padding chars		      
#endif

      while(*ptr) { myputchar(*ptr); ptr++; }
    }
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91蝌蚪porny| 久久久久久久电影| 久久久一区二区三区| 亚洲欧洲精品一区二区精品久久久 | 精品日韩欧美在线| 亚洲老妇xxxxxx| 国产高清在线精品| 91精品国产麻豆国产自产在线 | 国产精品久久久久久亚洲伦 | 中文字幕日韩一区| 久久精品国产**网站演员| 91麻豆国产精品久久| 久久久午夜电影| 日韩电影在线免费观看| 色8久久人人97超碰香蕉987| 国产蜜臀av在线一区二区三区| 日韩二区三区四区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 国产馆精品极品| 日韩一区二区三区四区| 亚洲国产视频网站| 色综合久久久久综合99| 亚洲国产精品成人综合色在线婷婷| 免费人成黄页网站在线一区二区| 欧美日韩一区二区三区不卡| 一区二区在线观看视频在线观看| 国产成人免费在线观看不卡| 久久女同互慰一区二区三区| 美女mm1313爽爽久久久蜜臀| 91精品欧美福利在线观看| 亚洲成人精品影院| 精品视频一区三区九区| 亚洲精品国产a| 91福利视频在线| 亚洲欧美成人一区二区三区| 99视频精品免费视频| 国产精品青草综合久久久久99| 粉嫩av一区二区三区| 国产精品国产三级国产普通话蜜臀 | 亚洲一区二区在线免费观看视频| 99精品1区2区| 亚洲裸体在线观看| 91福利国产精品| 亚洲一二三专区| 制服丝袜亚洲播放| 久色婷婷小香蕉久久| 日韩欧美一级二级| 国产精品99久| 国产精品久久久久久亚洲毛片| 99re成人在线| 午夜婷婷国产麻豆精品| 欧美一区二区三区婷婷月色| 精品一二三四区| 欧美激情中文字幕| 91色视频在线| 日本在线不卡视频一二三区| 2021久久国产精品不只是精品| 国产成人av影院| 一区二区三区欧美在线观看| 欧美美女网站色| 国产一区二区三区免费观看| 亚洲视频在线一区二区| 欧美日韩综合一区| 精品一区二区三区的国产在线播放 | 欧美三级电影精品| 久草这里只有精品视频| 国产精品五月天| 欧美视频中文字幕| 国产麻豆视频一区| 一区二区久久久久| 精品国产一区a| 色综合色综合色综合| 日韩成人一区二区| 国产精品色眯眯| 欧美精三区欧美精三区| 成人午夜激情影院| 亚洲1区2区3区4区| 国产精品女主播av| 宅男在线国产精品| 99精品视频一区| 国模少妇一区二区三区| 亚洲精品国产视频| 国产午夜精品一区二区三区视频 | 青青草国产精品亚洲专区无| 国产精品久久久久影视| 欧美成人一级视频| 欧美在线不卡视频| 成人国产在线观看| 久久99精品国产麻豆婷婷| 一区二区三区四区不卡视频| 久久精品视频在线免费观看| 7777女厕盗摄久久久| 91在线小视频| 国产成人免费网站| 精品一区二区三区在线播放视频| 夜夜亚洲天天久久| 亚洲欧洲在线观看av| 亚洲国产综合色| 国产精品久久久久久久久动漫 | 国产精品欧美一区二区三区| 日韩欧美一区电影| 欧美肥胖老妇做爰| 在线视频综合导航| 91原创在线视频| 懂色av一区二区三区蜜臀| 精品一区二区三区在线观看| 三级一区在线视频先锋 | 日本一区二区三区电影| 日韩欧美成人一区| 91精品国产丝袜白色高跟鞋| 在线观看欧美日本| 色先锋aa成人| 99精品视频在线播放观看| 北条麻妃一区二区三区| 高清国产一区二区三区| 国产大陆亚洲精品国产| 国产激情精品久久久第一区二区 | 欧美一卡二卡三卡| 日韩三级中文字幕| 精品国产不卡一区二区三区| 日韩欧美国产一区二区三区| 欧美一级夜夜爽| 精品国产免费视频| 精品999在线播放| 久久久91精品国产一区二区精品| 久久久五月婷婷| 久久亚洲综合色一区二区三区| 欧美精品一区二| 国产欧美日本一区二区三区| 欧美国产乱子伦| 亚洲三级在线看| 亚洲国产一区在线观看| 蜜桃精品视频在线| 国产在线精品一区二区三区不卡 | 国产乱人伦偷精品视频不卡| 蜜桃视频免费观看一区| 国产精品一线二线三线精华| 高清不卡一二三区| 色综合中文综合网| 欧美色国产精品| 欧美一区二区三区在线电影| 久久久亚洲精品石原莉奈| 国产精品国产三级国产a| 一级女性全黄久久生活片免费| 日本亚洲天堂网| 国产成人综合在线| 日本久久精品电影| 日韩无一区二区| 国产精品福利一区| 午夜在线成人av| 国产精品一区二区在线观看不卡| 99国内精品久久| 欧美大片顶级少妇| 亚洲三级免费电影| 日本网站在线观看一区二区三区 | 日韩avvvv在线播放| 国产精品资源在线| 欧美视频一区二区| 久久色中文字幕| 亚洲国产一区二区在线播放| 国产精品自拍一区| 欧美三电影在线| 国产精品欧美一区二区三区| 日韩综合在线视频| av午夜精品一区二区三区| 欧美一区日韩一区| 亚洲精品国产品国语在线app| 久久99久久99精品免视看婷婷| 91美女蜜桃在线| 国产亚洲一本大道中文在线| 亚洲gay无套男同| 99riav久久精品riav| 日韩视频在线你懂得| 一区二区激情视频| 成人av在线看| 久久这里都是精品| 亚洲va韩国va欧美va| 一本色道久久综合亚洲91| 久久久99精品免费观看不卡| 视频精品一区二区| 欧美性色欧美a在线播放| 中文字幕日韩精品一区| 国产一区二区不卡老阿姨| 欧美一区二区三区电影| 亚洲国产成人va在线观看天堂| 波多野结衣视频一区| 国产欧美久久久精品影院| 久久成人久久鬼色| 欧美一区午夜精品| 水野朝阳av一区二区三区| 色噜噜狠狠成人中文综合| 亚洲欧洲日韩在线| 不卡视频在线观看| 国产精品国产三级国产aⅴ入口| 国产精品一区二区在线观看不卡| 精品国产免费久久| 国内一区二区视频| 精品伦理精品一区| 精品一区二区日韩| 精品处破学生在线二十三|