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

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

?? serial.c

?? uC/OS-II在51上移植的完整源代碼V1.0
?? C
?? 第 1 頁 / 共 2 頁
字號:
                return;
            }
            else if(ch=='\n'){PrintChar(10);PrintChar(13);}
            else if(ch=='\t'){
                for(j=0;j<TABNum;j++)
                    PrintChar(' ');
            }
            else PrintChar(ch);
        }
        ch=*fmt++;
        switch(ch){
            case 'c':
                PrintChar(*((char *)p));
                p=(char *)p+1;
                break;
            case 'd':
                PrintN(*((int *)p),10);
                p=(int *)p+1;
                break;
            case 'x':
                PrintN(*((int *)p),16);
                p=(int *)p+1;
                break;
            case 'o':
                PrintUN(*((int *)p),8);
                p=(int *)p+1;
                break;
            case 'b':
                PrintUN(*((int *)p),2);
                p=(int *)p+1;
                break;
            case 'l':
                ch=*fmt++;
                switch(ch){
                    case 'd':
                        PrintLN(*((long *)p),10);
                        p=(long *)p+1;
                        break;
                    case 'o':
                        PrintLUN(*((long *)p),8);
                        p=(long *)p+1;
                        break;
                    case 'u':
                        PrintLUN(*((unsigned long *)p),10);
                        p=(unsigned long *)p+1;
                        break;
                    case 'b':
                        PrintLUN(*((long *)p),2);
                        p=(long *)p+1;
                        break;
                    case 'x':
                        PrintLN(*((long *)p),16);
                        p=(long *)p+1;
                        break;
                    default:
//出臨界區
#pragma ASM
    POP IE;
#pragma ENDASM
                        return;
                }
                break;
            case 'f':
                DispF(*((float *)p));
                p=(float *)p+1;
                break;
            case 'u':
                PrintUN(*((unsigned int *)p),10);
                p=(unsigned int *)p+1;
                break;
            case 's':
                PrintStr(*((char **)p));
                p=(char **)p+1;
                break;
            case '%':
                PrintChar('%');
                p=(char *)p+1;
                break;
            default:
//出臨界區
#pragma ASM
    POP IE;
#pragma ENDASM
                return;
        }
    }
}

void PrintN(int n,int b) reentrant  //十進制顯示整形數
{
    if(b==16){PrintWord(n);return;}
	if(n<0){PrintChar('-');n=-n;}
	if(n/b)
	    PrintN(n/b,b);
	PrintChar(n%b+'0');
}

void PrintUN(unsigned int n,unsigned int b) reentrant  //十進制顯示無符號整形數
{
    if(b==16){PrintWord(n);return;}
	if(n/b)
	    PrintUN(n/b,b);
	PrintChar(n%b+'0');
}


void PrintLN(long n,long b) reentrant  //十進制顯示長整形數
{
    if(b==16){PrintLong(n);return;}
	if(n<0){PrintChar('-');n=-n;}
	if(n/b)
	    PrintLN(n/b,b);
	PrintChar(n%b+'0');
}

void PrintLUN(unsigned long n,unsigned long b) reentrant  //十進制顯示無符號長整形數
{
    if(b==16){PrintLong(n);return;}
	if(n/b)
	    PrintLUN(n/b,b);
	PrintChar(n%b+'0');
}

//============================================================================================
//KEIL C51的float類型采用IEEE-754標準存儲,占4字節。
//    S E E E E E E E E E (1) M M M M M M M M M M M M M M M M M M M M M M M
//  S    1bit    正負標志位0=正;1=負
//  E    8bit    二進制階碼=(EEEEEEEE)-127
//  M   23bit    24bit尾數,只存儲23位,最高位固定為1。此方法用最較少的位數實現了較高的有效數,提高了精度。
//
//  尾數為24bit,最高可表達的整數值為2^24-1=16777215,也就是說,小于等于16777215的整數可以被精確
//顯示。這決定了十進制浮點數的有效位數為7位,10^7<16777215<10^8,10的7次方以內的數小于16777215,
//可以精確表示。使用科學記數法時,整數部分占1位,所以小數部分最大占7-1=6位,即最大有6位精度。
//  長整形數和浮點數都占4字節,但表示范圍差別很大。浮點數的范圍為+-1.175494E-38到+-3.402823E+38,
//無符號長整形數范圍為0到4294967295。顯示浮點數要用到長整形數保存數據,可他們范圍差這么多,怎么辦呢?
//  仔細觀察十進制浮點數的顯示,有一個尾數和一個階碼,由上面論證可知32位浮點數最大有效數字為7位十進制
//數,超出此范圍的數字有截斷誤差,不必理會,因此,使浮點數尾數能夠放在長整形數里保存。階碼為-38到38,
//一個char型變量就可以保存。
//  綜上所述,以10^7的最大跨度為窗口(小于10^7也可以,如:10,100...10000等,但決不能大于它,那樣會
//超出精度范圍),定位浮點數的量級,然后取出7位尾數的整數值,再調整階碼,就可以精確顯示此浮點數。
//  量級尺度如下:
//    (-38)-(-35)-(-28)-(-21)-(-14)-(-7)-(0)-(7)-(14)-(21)-(28)-(35)-(38)
//  請嚴格按照KEIL手冊給出的浮點數范圍顯示,因為數值空間沒有完全使用,有些值用于錯誤指示和表示正負無窮。
//小于1.175494E-38的數仍可以顯示一些,但最好不用,以免出錯。我采用直接判斷的方法,剔除此種情況。
//  在計算機里結合律不成立,(a*b)*c!=a*(b*c),原則是先讓計算結果值動態范圍小的兩個數運算,請注意程序里
//的寫法。
//  注:(1E38/b)*1E6不要寫成1E44/b,因為無法在32位浮點數里保存1E44,切記!
//  計算機使用二進制數計算,能有效利用電子器件高速開關的特性,而人習慣于十進制數表示,二進制和十進制
//沒有方便的方法轉換,只能通過大量計算實現,浮點數的十進制科學記數法顯示尤其需要大量的運算,可見,顯示
//一個浮點數要經過若干次浮點運算,沒有必要就不要顯示,花在顯示上的時間比計算的耗時都要多得多。
//============================================================================================
void DispF(float f) reentrant  //用科學記數法顯示浮點數,在float全范圍內精確顯示,超出范圍給出提示。
{                              //+-1.175494E-38到+-3.402823E+38
    float tf,b;
    unsigned long w,tw;
    char i,j;
    if(f<0){
        PrintChar('-');
        f=-1.0*f;
    }
    if(f<1.175494E-38){
        yyprintf("?.??????");//太小了,超出了最小范圍。
        return;
    }
    if(f>1E35){  //f>10^35
        tf=f/1E35;
        b=1000.0;
        for(i=0,j=38;i<4;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f/(1E29*b);  //1E35*b/1E6
        PrintW(w,j);
    }
    else if(f>1E28){  //10^28<f<=10^35
        tf=f/1E28;
        b=1E7;
        for(i=0,j=35;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f/(1E22*b);  //1E28*b/1E6
        PrintW(w,j);
    }
    else if(f>1E21){  //10^21<f<=10^28
        tf=f/1E21;
        b=1E7;
        for(i=0,j=28;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f/(1E15*b);  //1E21*b/1E6
        PrintW(w,j);
    }
    else if(f>1E14){  //10^14<f<=10^21
        tf=f/1E14;
        b=1E7;
        for(i=0,j=21;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f/(1E8*b);  //1E14*b/1E6
        PrintW(w,j);
    }
    else if(f>1E7){  //10^7<f<=10^14
        tf=f/1E7;
        b=1E7;
        for(i=0,j=14;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f/(10.0*b);  //1E28*b/1E6
        PrintW(w,j);
    }
    else if(f>1){  //1<f<=10^7
        tf=f;
        b=1E7;
        for(i=0,j=7;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f/(1E-6*b);  //1E0*b/1E6
        PrintW(w,j);
    }
    else if(f>1E-7){  //10^-7<f<=1
        tf=f*1E7;
        b=1E7;
        for(i=0,j=0;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f*(1E13/b);  //(1E7/b)*1E6
        PrintW(w,j);
    }
    else if(f>1E-14){  //10^-14<f<=10^-7
        tf=f*1E14;
        b=1E7;
        for(i=0,j=-7;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f*(1E20/b);  //(1E14/b)*1E6
        PrintW(w,j);
    }
    else if(f>1E-21){  //10^-21<f<=10^-14
        tf=f*1E21;
        b=1E7;
        for(i=0,j=-14;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f*(1E27/b);  //(1E21/b)*1E6
        PrintW(w,j);
    }
    else if(f>1E-28){  //10^-28<f<=10^-21
        tf=f*1E28;
        b=1E7;
        for(i=0,j=-21;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f*(1E34/b);  //(1E28/b)*1E6
        PrintW(w,j);
    }
    else if(f>1E-35){  //10^-35<f<=10^-28
        tf=f*1E35;
        b=1E7;
        for(i=0,j=-28;i<8;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f*(1E35/b)*1E6;  //(1E35/b)*1E6
        PrintW(w,j);
    }
    else{  //f<=10^-35
        tf=f*1E38;
        b=1000.0;
        for(i=0,j=-35;i<4;i++,j--)
            if(tf/b<1) b=b/10.0;
            else break;
        w=f*(1E38/b)*1E6;  //(1E38/b)*1E6
        PrintW(w,j);
    }
}

void PrintW(unsigned long w,char j) reentrant  //科學記數法,顯示十進制尾數和階碼。
{
    char i;
    unsigned long tw,b;
    
    //if(j<-38){yyprintf("?.??????");return;}//太小了,超出最小表數范圍。
    //if(j>38){yyprintf("*.******");return;}此算法不會出現j>38的情況。
    
    tw=w/1000000;
    PrintChar(tw+'0');PrintChar('.');
    w=w-tw*1000000;
    b=100000;
    for(i=0;i<6;i++){
        tw=w/b;
        PrintChar(tw+'0');
        w=w-tw*b;
        b=b/10;
    }
    yyprintf("E%d",(int)j);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产欧美一区二区| 欧美综合久久久| 欧美丝袜自拍制服另类| 久久综合av免费| 一区二区成人在线| 九九九久久久精品| 欧美日韩一区高清| 中文字幕一区二区5566日韩| 玖玖九九国产精品| 欧美性xxxxx极品少妇| 中文字幕av在线一区二区三区| 首页亚洲欧美制服丝腿| 91色|porny| 日本一区二区视频在线| 久久99日本精品| 欧美蜜桃一区二区三区| 一区二区三区在线观看国产| 成人精品视频一区| 久久男人中文字幕资源站| 美国十次了思思久久精品导航| 91传媒视频在线播放| 亚洲欧洲日韩在线| 国产精品18久久久久久久网站| 欧美一级黄色片| 日韩国产欧美在线播放| 欧美日本在线播放| 天堂成人国产精品一区| 欧美日韩在线亚洲一区蜜芽| 一区二区三区久久久| 91麻豆国产在线观看| 国产精品久久久久一区二区三区| 国v精品久久久网| 中文字幕免费不卡在线| 国产白丝网站精品污在线入口| 国产网红主播福利一区二区| 国产不卡视频在线播放| 日韩国产高清在线| 97久久精品人人爽人人爽蜜臀| 国产美女av一区二区三区| 精一区二区三区| 日韩精品亚洲一区| 日韩欧美在线1卡| 欧美v日韩v国产v| 欧美国产精品v| 波多野洁衣一区| 中文字幕一区二区三区蜜月 | 欧美久久一二三四区| 亚洲在线成人精品| 在线电影国产精品| 韩国女主播成人在线| 国产精品天干天干在线综合| 92精品国产成人观看免费| 亚洲综合无码一区二区| 欧美日本一道本在线视频| 精品亚洲成a人| 国产精品色噜噜| 欧美日韩免费高清一区色橹橹| 亚洲成av人片| 国产人久久人人人人爽| 91黄视频在线观看| 日韩av成人高清| 国产欧美日产一区| 欧美亚洲另类激情小说| 久久99精品网久久| 亚洲码国产岛国毛片在线| 91精品国产手机| 成人av在线资源| 亚洲va欧美va天堂v国产综合| 欧美大片日本大片免费观看| 成人自拍视频在线| 午夜久久电影网| 久久久久99精品一区| 欧洲亚洲精品在线| 国产成人精品免费视频网站| 国产精品国产精品国产专区不片| 欧美人狂配大交3d怪物一区| 风间由美一区二区三区在线观看 | 国产乱码精品一区二区三区五月婷 | 99免费精品在线| 日韩av中文字幕一区二区| 欧美一区二区三区的| 狠狠色狠狠色综合系列| 6080yy午夜一二三区久久| 懂色av噜噜一区二区三区av| 欧美v亚洲v综合ⅴ国产v| 日韩成人免费在线| 欧美成人三级在线| 日韩精品三区四区| 亚洲国产精品传媒在线观看| 夜夜精品视频一区二区| 欧美区在线观看| 色偷偷一区二区三区| 麻豆传媒一区二区三区| 一区二区国产视频| 成人免费在线播放视频| 亚洲国产成人自拍| 中文一区一区三区高中清不卡| 欧美日韩视频一区二区| 色综合天天综合网国产成人综合天 | 成人一区二区视频| 国产又粗又猛又爽又黄91精品| 午夜欧美在线一二页| 一区二区三区不卡视频在线观看| 国产精品污网站| 国产精品久久夜| 日韩亚洲欧美高清| 日韩中文字幕一区二区三区| 亚洲人成在线播放网站岛国| 国产精品伦理一区二区| 日本一区二区在线不卡| 国产女人水真多18毛片18精品视频| 精品国产髙清在线看国产毛片| 欧美一区二区高清| 日韩亚洲欧美在线| 2020国产精品| 久久久久99精品国产片| 欧美激情中文字幕| 国产精品国产成人国产三级 | 日韩午夜在线观看| 日韩视频永久免费| 精品国产乱码久久久久久久久| 精品日韩99亚洲| 精品国产一区二区三区四区四| 精品美女在线播放| 日本一区二区三区在线观看| 国产精品毛片高清在线完整版| 一区在线播放视频| 韩国一区二区在线观看| 国产午夜精品在线观看| 国产人久久人人人人爽| 久久欧美中文字幕| 国产欧美精品一区| 国产欧美精品区一区二区三区 | 精品1区2区在线观看| 综合久久给合久久狠狠狠97色| 亚洲欧洲成人自拍| 国产精品久久久久久久岛一牛影视| 亚洲国产美女搞黄色| 日韩一区欧美二区| 美女视频黄 久久| 丁香亚洲综合激情啪啪综合| eeuss国产一区二区三区| 在线视频观看一区| 日韩美女在线视频| 中文字幕视频一区| 亚洲福利视频三区| 国产一区二区精品久久99| 波多野结衣欧美| 欧美一区二区三区免费| 中文字幕av在线一区二区三区| 亚洲国产日韩在线一区模特| 狠狠色丁香久久婷婷综合丁香| av午夜精品一区二区三区| 欧美一卡2卡三卡4卡5免费| 久久精品在线免费观看| 亚洲综合一区二区| 国产福利精品导航| 欧美在线免费观看亚洲| 久久久久久久久久久电影| 午夜视频久久久久久| 国产91在线看| 欧美高清一级片在线| 中文字幕一区二区三区蜜月 | 国产人伦精品一区二区| 亚洲国产wwwccc36天堂| 国产一区二区三区精品欧美日韩一区二区三区 | 另类调教123区| 色噜噜狠狠一区二区三区果冻| 精品乱码亚洲一区二区不卡| 99综合影院在线| 91精品午夜视频| 亚洲天堂中文字幕| 成人免费av在线| 久久亚洲捆绑美女| 欧美情侣在线播放| 成人app在线| 精品成人佐山爱一区二区| 免费高清不卡av| 91在线观看地址| 日日嗨av一区二区三区四区| 欧美亚洲综合网| 视频一区在线视频| 日韩一区二区免费高清| 看片的网站亚洲| 久久久久久免费| 成人激情综合网站| 国产精品电影一区二区三区| 国产丝袜在线精品| 麻豆一区二区三| 欧美三区免费完整视频在线观看| 欧美韩国日本综合| 激情成人午夜视频| 精品国产一区二区亚洲人成毛片| 五月激情六月综合| 欧美理论在线播放| 亚洲国产视频在线| 欧美日韩一级片在线观看| 亚洲午夜久久久| 欧美伦理视频网站| 天使萌一区二区三区免费观看|