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

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

?? uart.c

?? 基于瑞薩 M16C 的最新版本 IIC 通信
?? C
字號:
#include "uart.h"
#include "iom16c62p.h"
#include <stdarg.h>

#define condition *format!='f'&&*format!='d'&&*format!='c'&&*format!='s'&&*format!='l'&&*format!='u'&&*format!='\0'&&*format!=' '&&*format!='i'&&*format!='x'&&*format!='X'&&*format!='o'&&*format!='%'&&*format!='p'&&*format!='\n'

int from_puts = 0;
int left_val, right_val;
long temp_arr[]={100000,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};

/*************** Print Character *****************/
void _putchar(int c) {
	while (U1C1.BIT.TI == 0);            /* wait if the transmit buffer is full */
	U1TB.BYTE.U1TBL = (char)c;          /* load character c into transmit buffer */
}

/*************** Copy String *****************/
char* _strcpy(char *s2, char *s1){
    int i;
    for(i = 0; s1[i] != '\0'; ++i)
      s2[i] = s1[i];

    s2[i] = s1[i];
    return s2;
}

/*************** Print String *****************/
void _puts(char *s) {
    while(*s != '\0'){
	  _putchar(*s);

      s++;
    }
}

/*************** Get String Length *****************/
uart_uint16 _strlen(char *s) {
    uart_uint16 count=0;
    while(*s != '\0'){
      count++;
      s++;
    }

    return count;
}

/*************** Echo Character *****************/
void _echo() {
    _putchar(_getchar());
}

/*************** Get Character *****************/
uart_uchar _getchar(void) {
	if (U1C1.BIT.RI != 1)
		return -1;
	
	uart_uchar c = U1RB.BYTE.U1RBL;         /* get data if any from receive buffer */
	return c;                         /* return receive buffer data  */
}

/*************** Reverse String *****************/
void _strrev(char *tempstr) {
    char *temp,temp_char;
    int len=_strlen(tempstr) ;

	temp = tempstr + len -1;

    while(tempstr < temp ){
      temp_char = *tempstr;
      *tempstr = *temp;
      *temp = temp_char;
      tempstr++;
      temp--;
    }
}

/*************** Hexadecimal, Octal Support *****************/
void print_hex_oct( long int temp_var,int div,int corr_factor,int ret_val,int sign,int *cntr_val) {
    unsigned long int i=1,i1,temp=temp_var;
    int cntr=0,neg_flag=0;
    char s1[40];

    if(sign==1&&temp_var<0){
      temp=-temp_var;
      neg_flag=1;
    }

    if(temp==0)
      s1[cntr++]='0';

    while(temp>0){
      i1=temp%div;
      temp=temp/div;

      if(i1<=9)
        s1[cntr]=i1+'0';
      else
        s1[cntr]=i1+corr_factor-9;

      cntr++;
    }

    while((left_val-(right_val>cntr?right_val:cntr+neg_flag))>0){
      _putchar(' ');
      left_val--;
      (*cntr_val)++;
    }

    while(right_val-cntr>0){
      s1[cntr++]='0';
    }

    if(neg_flag==1)
      s1[cntr++]='-';

    s1[cntr]='\0';
    _strrev(s1);
    _puts(s1);
    (*cntr_val)+=_strlen(s1);
}

/*************** Floating Point Support *****************/
void float_print(long double f1,long double f2,int multi,int *cntr_val) {

    int i=1,temp,cntr=0,i1,neg_flag=0;

    char s1[10];



    if(f1<0){

      f1=f1*-1;

      neg_flag=1;

      f2=f1;

    }

    temp=(int)f1;



    f1=f1-temp;

    f1=f1*multi;



    temp=f1;



    if(temp==0)

      s1[cntr++]='0';

    while(temp>0){

      i1=temp%10;

      temp=temp/10;

      s1[cntr]=i1+0x30;

      cntr++;

    }



    while(right_val<9&&(right_val -cntr)>0)

      s1[cntr++]='0';

    s1[cntr]='.';

    cntr++;



    temp=(int)f2;

    if(temp==0)

      s1[cntr++]='0';

    while(temp>0){

      i1=temp%10;

      temp=temp/10;

      s1[cntr]=i1+0x30;

      cntr++;

    }



    while(left_val-- -cntr>0){

      _putchar(' ');

      (*cntr_val)++;

    }

    if(neg_flag==1)

      s1[cntr++]='-';

    s1[cntr]='\0';

    cntr--;

    _strrev(s1);

    _puts(s1);

    (*cntr_val)+=_strlen(s1);

    neg_flag=0;

  }

  

/*************** Format Values *****************/
int format_val(char *temp,long float_flag,int *cntr_val,int flag) {

    left_val=0;

    right_val=0;

    if(*temp=='\0'&&flag==1) {

      right_val=3;

      return 0;

    }



    while(*temp!='.'&&*temp!='\0') {

      if(*temp<'0'||*temp>'9')

      {

        while(*temp)

        {

	    _putchar(*temp++);

	    (*cntr_val)++;

        }

        return -1;

      }

      else

        left_val=left_val*10+*temp-'0';

      temp++;

    }

      if(*temp)

        temp++;

      else

        return left_val;

      while(*temp) {

        if(*temp<'0'||*temp>'9')

        {

          while(*temp)

          {

	      _putchar(*temp++);

	      (*cntr_val)++;

          }

        return -1;

        }

        else

          right_val=right_val*10+*temp-'0';

      temp++;

    }



    return 0;

  }



/*************** Printf(arguments) *****************/
int _printf(const char * format, ...) {
    int format_cntr=0;
    char temp_str[20];
    int return_flag=0,cntr_val;
    long double f1,f2;
    char *str_temp;
    int *cntr=&cntr_val;

    va_list ap;
    va_start(ap, format);
    *cntr=0;

    while(*format) {
      if(*format=='\n') {
        _putchar('\r');
   	  }



      temp_str[format_cntr]='\0';

      if(*format=='%') {

        *format++;

        while(*format==' ') {

	      format++;

	      _putchar(' ');

        }



        while(condition){

	      temp_str[format_cntr++]=*format++;

        }

        temp_str[format_cntr]='\0';

        if(*format=='%') {

	      _putchar('%');

	      (*cntr)++;

	      format_cntr=0;

	      format++;

	      continue;

        }

        /************** Printf Unsigned ****************/

        else if(*format=='u'){

	    return_flag=format_val(temp_str,0,cntr,0);

	      if(return_flag!=-1)

	      print_hex_oct(va_arg(ap,unsigned int),10,0,return_flag,0,cntr);

	      else {

	        _putchar(*format);

	        (*cntr)++;

	      }

	    format++;

	    format_cntr=0;

	    continue;

        }

	    /*********** Printf Integer **************/

        else if(*format=='d'||*format=='i') {

	      return_flag=format_val(temp_str,0,cntr,0);



	      if(return_flag!=-1){

	      print_hex_oct(va_arg(ap,int),10,0,return_flag,1,cntr);

	      }

	      else {

	        _putchar(*format);

	        (*cntr)++;

	      }

	    format++;

	    format_cntr=0;

	    continue;

        }



        /*********** Printf Hexadecimal, Octal ******************/

        else if(*format=='x'||*format=='X'||*format=='o'||*format=='p') {

	      return_flag=format_val(temp_str,0,cntr,0);

	      if(return_flag!=-1) {

	        if(*format=='x'||*format=='p')

	          print_hex_oct(va_arg(ap,unsigned int),16,0x60,return_flag,0,cntr);

	        else if(*format=='X')

	        print_hex_oct(va_arg(ap,unsigned int),16,0x40,return_flag,0,cntr);

	        else

	          print_hex_oct(va_arg(ap,unsigned int),8,0,return_flag,0,cntr);

	      }

	      else {

	        _putchar(*format);

	        (*cntr)++;

	      }

	      format++;

	      format_cntr=0;

	      continue;

        }

        /************ Printf Character *******************/



        else if(*format=='c') {

          return_flag=format_val(temp_str,0,cntr,0);

	      if(return_flag!=-1) {

	        while(return_flag-->1) {

	          _putchar(' ');

	         (*cntr)++;

	        }

	      _putchar(va_arg(ap,int));

	      (*cntr)+=2;

	      }

	      else {

	        _putchar(*format);

	        (*cntr)++;

	      }

	    format++;

	    format_cntr=0;

	    continue;

        }



        /*************** Printf String *****************/

        else if(*format=='s') {

          return_flag=format_val(temp_str,0,cntr,0);

	      if(return_flag!=-1) {

	        str_temp=va_arg(ap,char*);

 	        while((return_flag--  -(int) _strlen(str_temp))>0) {

	          _putchar(' ');

	         (*cntr)++;

 	        }

	      _puts(str_temp);

	      (*cntr)+=_strlen(str_temp);

	      }

	      else {

	        _putchar(*format);

	        (*cntr)++;

	      }

	    format++;

	    format_cntr=0;

	    continue;

        }

        /*************** Printf Floating Point Number *****************/

        else if(*format=='f'||(*format=='l'&&*(format+1)=='f')) {

          return_flag=format_val(temp_str,1,cntr,1);

	      if(return_flag!=-1) {

	        if(*format=='l') {

	          f1=va_arg(ap,long double);

	          format+=2;

	        }

	        else {

	          f1=va_arg(ap,double);

	          format++;

	        }

	        f2=f1;



	        right_val++;

	        float_print(f1,f2,temp_arr[right_val%10],cntr);



	      }

	      else {

	        _putchar(*format++);

	        (*cntr)++;

	      }

	      format_cntr=0;

	      continue;

        }



	    else if(*format=='l'&&((*(format+1)=='d')||(*(format+1)=='u'))) {

          return_flag=format_val(temp_str,0,cntr,0);



	      if((return_flag=-1)&&(*(format+1)=='d')) {

	        print_hex_oct(va_arg(ap,long int),10,0x00,return_flag,1,cntr);

	      }

	      else if((return_flag=-1)&&(*(format+1)=='u')) {

	        print_hex_oct(va_arg(ap,unsigned long int),10,0x00,return_flag,0,cntr);

	      }



	      else {

	        _putchar(*format);

	        _putchar(*(format+1));

	        (*cntr)+=2;

	      }

	      format+=2;

	      format_cntr=0;

	      continue;

        }

        else {

          _puts(temp_str);

	      format_cntr=0;

	      continue;

        }

      }

      _putchar(*format++);



      (*cntr)++;

    }

    va_end(ap);

    return cntr_val;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
三级成人在线视频| 欧美日韩国产123区| 日本精品一区二区三区高清| 日韩欧美视频一区| 亚洲精品少妇30p| 国产99久久久精品| 日韩一区二区在线看片| 一区二区在线观看免费视频播放| 国产真实精品久久二三区| 欧美三级日韩三级国产三级| 国产精品美女久久久久aⅴ国产馆| 人人超碰91尤物精品国产| 在线一区二区三区四区五区| 国产精品污网站| 国内精品伊人久久久久影院对白| 欧美性视频一区二区三区| 综合婷婷亚洲小说| 欧美自拍偷拍一区| 国产亚洲欧美色| 国内精品自线一区二区三区视频| 欧美一区二区视频免费观看| 一区二区三区中文字幕电影| 白白色 亚洲乱淫| 国产日产欧美精品一区二区三区| 伦理电影国产精品| 在线成人高清不卡| 亚洲午夜免费福利视频| 91激情在线视频| 亚洲精品高清在线| 99精品国产热久久91蜜凸| 亚洲欧洲一区二区在线播放| 高清不卡一区二区在线| 国产精品午夜在线观看| 成人综合婷婷国产精品久久蜜臀 | 久久精品久久久精品美女| 91精彩视频在线| 亚洲mv在线观看| 欧美日韩的一区二区| 天堂在线亚洲视频| 欧美一二三四区在线| 久久99深爱久久99精品| 精品国产不卡一区二区三区| 国产一区二区三区久久悠悠色av| 精品国产99国产精品| 精品亚洲成a人| 久久久久久久综合| www.亚洲在线| 亚洲国产成人av好男人在线观看| 91精品国产综合久久久久久久久久 | 欧美日韩国产一级二级| 日韩在线播放一区二区| 精品国产亚洲在线| 国内久久婷婷综合| 国产精品久久毛片| 欧美伊人精品成人久久综合97| 五月综合激情婷婷六月色窝| 日韩午夜在线影院| 成人av电影观看| 亚洲午夜视频在线观看| 欧美电影免费观看高清完整版在 | 日本不卡1234视频| 久久久91精品国产一区二区三区| 成人激情视频网站| 亚洲大片在线观看| 久久久久久免费网| 色偷偷久久一区二区三区| 婷婷综合另类小说色区| 久久精品夜色噜噜亚洲a∨| 99re视频精品| 精品一区二区三区av| 亚洲精品亚洲人成人网| 精品久久人人做人人爰| 在线观看免费亚洲| 国产成人h网站| 亚洲成人黄色影院| 蜜桃久久av一区| 国产精品入口麻豆原神| 欧美肥妇bbw| 成人高清在线视频| 麻豆精品一区二区综合av| 亚洲精品成人悠悠色影视| 精品福利一区二区三区| 欧美在线你懂得| gogo大胆日本视频一区| 精品亚洲免费视频| 日产国产欧美视频一区精品| 亚洲视频中文字幕| 久久久久久久久蜜桃| 日韩区在线观看| 欧美三区在线观看| 99精品欧美一区二区三区小说| 精品一区二区在线视频| 亚洲小说春色综合另类电影| 中文字幕制服丝袜成人av | 欧美性受xxxx| 99视频在线精品| 国产老妇另类xxxxx| 人人狠狠综合久久亚洲| 午夜精品福利在线| 亚洲一二三四区不卡| 国产精品高潮呻吟| 中文字幕av资源一区| 久久日一线二线三线suv| 91精品婷婷国产综合久久性色| 欧美三级日韩三级国产三级| 色国产精品一区在线观看| jlzzjlzz欧美大全| av在线不卡电影| av在线不卡网| 91色九色蝌蚪| 色94色欧美sute亚洲13| 91老司机福利 在线| 色狠狠色狠狠综合| 欧美视频在线观看一区| 欧美性猛交xxxxxx富婆| 欧美日韩精品一区二区三区四区| 91久久精品一区二区三| 91福利社在线观看| 91高清视频在线| 欧美日韩一卡二卡三卡 | 亚洲一区欧美一区| 夜夜夜精品看看| 亚洲高清一区二区三区| 日本亚洲免费观看| 久久精品国产第一区二区三区| 韩国欧美国产一区| 成人高清视频在线观看| 91蝌蚪国产九色| 欧美午夜精品久久久久久超碰| 国产日韩精品久久久| 国产午夜亚洲精品午夜鲁丝片 | 樱花草国产18久久久久| 亚洲一区二区欧美| 美女在线观看视频一区二区| 国产在线精品免费av| av中文字幕不卡| 欧美日韩综合一区| 精品国产91九色蝌蚪| 亚洲欧洲精品一区二区精品久久久 | 91麻豆产精品久久久久久| 欧美精品一卡二卡| 久久久国产一区二区三区四区小说| 欧美精品一区二区三区视频| 国产精品每日更新在线播放网址 | 欧美精品三级在线观看| 日韩一级成人av| 国产精品你懂的| 亚洲一区二区欧美日韩| 国产精品影视网| 色域天天综合网| 2023国产精品| 亚洲一区二区在线播放相泽| 国产乱子伦视频一区二区三区| 99精品欧美一区| 精品免费国产一区二区三区四区| 国产精品免费人成网站| 奇米精品一区二区三区在线观看一 | 欧美国产精品v| 亚洲国产裸拍裸体视频在线观看乱了 | 成人精品免费看| 欧美一级欧美三级在线观看| 18成人在线视频| 精品一区二区三区日韩| 欧美日韩中文一区| 国产日韩欧美高清| 蜜桃精品视频在线| 欧美主播一区二区三区美女| 久久精品一区二区三区不卡 | 亚洲三级小视频| 激情综合色综合久久综合| 在线免费不卡视频| 国产精品污www在线观看| 美国欧美日韩国产在线播放| 日本精品一区二区三区高清 | 亚洲综合清纯丝袜自拍| 黄网站免费久久| 69av一区二区三区| 亚洲综合999| 99国产精品国产精品久久| 久久九九国产精品| 久久99精品国产麻豆婷婷| 欧美色手机在线观看| 亚洲猫色日本管| eeuss鲁片一区二区三区在线看| 精品国产精品网麻豆系列| 婷婷久久综合九色综合绿巨人| 99久久综合精品| 亚洲色图视频免费播放| 成人深夜在线观看| 国产日韩精品一区二区三区在线| 久久国产精品无码网站| 日韩精品一区二区三区视频播放| 五月天婷婷综合| 3atv一区二区三区| 日韩成人一级大片| 欧美一区二区福利在线| 日本亚洲三级在线| 日韩精品中文字幕一区| 狠狠狠色丁香婷婷综合激情| 久久理论电影网|