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

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

?? rprintf.c

?? Analog Digital conversion with lpc2148
?? C
字號:
//#########################################################################
// printf.c
//
// *** printf() based on sprintf() from gcctest9.c 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
// 
// Todo:
// %f, %F for floating point numbers
//
// *** Changes made by Martin Thomas for the efsl debug output:
// - removed AVR "progmem"
// - added function pointer for "putchar"
// - devopen function
//
//#########################################################################

#include <stdarg.h>
#include <string.h>
#include "rprintf.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


static int (*putcharfunc)(int c);

void rprintf_devopen( int(*put)(int) )
{
   putcharfunc = put;
}

static void myputchar(unsigned char c)
{
	if(c == '\n') putcharfunc('\r');
	putcharfunc(c);
}

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
// #warning "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一区二区三区免费野_久草精品视频
欧美男男青年gay1069videost| 92国产精品观看| 香蕉加勒比综合久久| 国产精品网站在线| 国产肉丝袜一区二区| 欧美电影在线免费观看| 欧美亚洲国产一区二区三区| av在线播放一区二区三区| 国模无码大尺度一区二区三区| 日韩av中文在线观看| 午夜久久久久久| 三级成人在线视频| 蜜臀精品久久久久久蜜臀| 午夜精品久久久久久久久久| 亚洲愉拍自拍另类高清精品| 一区二区三区高清不卡| 亚洲欧洲综合另类| 一区二区在线观看免费| 亚洲欧美aⅴ...| 亚洲国产va精品久久久不卡综合| 亚洲综合丁香婷婷六月香| 亚洲视频精选在线| 亚洲伊人色欲综合网| 9l国产精品久久久久麻豆| 91丨九色porny丨蝌蚪| 欧美日韩www| 久久综合狠狠综合| 亚洲国产精品精华液2区45| **网站欧美大片在线观看| 亚洲视频一区二区在线| 一区二区三区中文字幕| 日本aⅴ亚洲精品中文乱码| 久久精品国产亚洲高清剧情介绍| 国产成人综合在线播放| 色综合一个色综合亚洲| 欧美日韩亚洲国产综合| 国产性色一区二区| 亚洲图片欧美综合| 国产二区国产一区在线观看| 欧美在线一二三四区| 国产精品麻豆视频| 日韩电影在线观看一区| 国产一区激情在线| 欧美色图一区二区三区| 亚洲精品在线观| 亚洲777理论| www.亚洲免费av| 精品国产麻豆免费人成网站| 亚洲三级免费电影| 成人国产免费视频| 久久精品人人做人人综合| 亚洲国产你懂的| 波多野结衣欧美| 日韩精品一区国产麻豆| 亚洲一级二级在线| 色诱亚洲精品久久久久久| 国产欧美日韩中文久久| 黄网站免费久久| 久久亚洲综合av| 国产美女久久久久| 2021国产精品久久精品| 美腿丝袜亚洲色图| 欧美高清视频不卡网| 午夜精品一区二区三区免费视频| 色综合久久中文综合久久牛| 亚洲丝袜美腿综合| 色偷偷久久一区二区三区| 亚洲色图第一区| 91国产成人在线| 午夜精品福利久久久| 欧美日韩国产在线播放网站| 青青草国产成人av片免费| 日韩欧美一级片| 国产成人精品综合在线观看 | 精品乱人伦小说| 美女视频免费一区| 亚洲色图.com| 欧美性生活大片视频| 午夜私人影院久久久久| 91麻豆精品国产91久久久久久久久| 日韩成人免费在线| 久久精品人人做人人综合 | 日韩午夜激情av| 国内精品不卡在线| **性色生活片久久毛片| 337p亚洲精品色噜噜| 国产69精品久久久久毛片| 夜夜嗨av一区二区三区中文字幕| 欧美精品一二三四| 国产传媒一区在线| 婷婷综合久久一区二区三区| 久久久久久**毛片大全| 欧美亚洲综合久久| 国产精品综合二区| 男女激情视频一区| 亚洲午夜精品17c| 亚洲欧洲综合另类| 中文字幕成人在线观看| 日韩欧美国产综合| 欧美色涩在线第一页| 不卡欧美aaaaa| 国产大陆亚洲精品国产| 久久国产精品无码网站| 首页欧美精品中文字幕| 亚洲精品国产无套在线观| 国产精品天美传媒沈樵| 精品国产成人在线影院 | 亚洲欧美激情一区二区| 国产午夜一区二区三区| 日韩亚洲欧美在线观看| 欧美三区在线视频| 欧日韩精品视频| 欧美亚洲丝袜传媒另类| 99久久精品国产导航| av亚洲精华国产精华精| 欧美在线短视频| 99国产精品久久久久久久久久久| 国产剧情一区二区| 国产在线播放一区二区三区| 国产一区二区不卡在线| 麻豆成人91精品二区三区| 狂野欧美性猛交blacked| 奇米精品一区二区三区在线观看一| 亚洲成人黄色影院| 日韩电影在线观看一区| 九色综合狠狠综合久久| 国产高清亚洲一区| 成人影视亚洲图片在线| 一本一道波多野结衣一区二区| 欧美性受极品xxxx喷水| 日韩亚洲欧美综合| 国产日韩欧美高清在线| 国产精品成人网| 午夜精品福利久久久| 国产一区二区三区久久悠悠色av| 国产盗摄一区二区| 欧美色图片你懂的| 久久人人爽人人爽| 国产精品久久久久久久久免费相片| 亚洲色图制服诱惑 | 亚洲免费毛片网站| 奇米四色…亚洲| 色呦呦日韩精品| 精品美女在线播放| 亚洲欧美另类在线| 国产精品中文字幕一区二区三区| 91色在线porny| 亚洲精品在线三区| 亚洲午夜激情网站| 91麻豆国产自产在线观看| 久久美女高清视频| 麻豆精品一二三| 欧美浪妇xxxx高跟鞋交| 亚洲免费av观看| 粉嫩av一区二区三区粉嫩| 欧美日韩视频在线观看一区二区三区 | 久久网这里都是精品| 洋洋av久久久久久久一区| 国产不卡视频在线观看| 精品国产3级a| 精品一区二区三区av| 欧美另类变人与禽xxxxx| 一区二区三区日韩欧美| 91麻豆精东视频| 国产精品第13页| 成人免费高清在线| 中文字幕在线不卡一区二区三区 | 日韩影院在线观看| 欧美猛男超大videosgay| 一区二区成人在线| 欧美性受xxxx黑人xyx性爽| 亚洲一区二区不卡免费| 欧美日韩在线一区二区| 午夜一区二区三区视频| 欧美日韩精品一区二区三区| 亚洲国产你懂的| 在线播放91灌醉迷j高跟美女| 亚洲成人自拍网| 日韩亚洲欧美高清| 国产一区二区网址| 国产精品久久久久影视| 日本久久电影网| 日韩vs国产vs欧美| 精品国产伦一区二区三区观看方式 | 亚洲图片欧美色图| 日韩精品一区在线观看| 成人国产精品视频| 亚洲高清免费观看| 久久综合一区二区| 99精品欧美一区| 亚洲成人av一区二区| 亚洲精品一区在线观看| 日本韩国欧美国产| 久久99久久久欧美国产| 国产精品网站一区| 欧美一级淫片007| 95精品视频在线| 久久er99精品| 五月天亚洲婷婷| 国产精品久久久久久亚洲毛片|