两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

1.代碼選擇

有時(shí)我們需要6個(gè)數(shù)碼管顯示我們想要看到的數(shù)字,比如計(jì)算結(jié)果呈現(xiàn)在數(shù)碼管上,然而當(dāng)要顯示的數(shù)為“520”時(shí)又不想前面的3個(gè)數(shù)碼管亮(也就是高位為0不顯示),我們把這部分功能代碼封裝為帶參數(shù)的函數(shù),傳入的參數(shù)就是要顯示的數(shù)值。參數(shù)定義的是unsigned long類型,也就是支持0~4294967296的數(shù)值(2的32次方等于4294967296)。

示例1:

void ShowNumber(u32 num)
{
    LedBuff[0]=LedChar[num%10];
    LedBuff[1]=LedChar[(num/10)%10];
    LedBuff[2]=LedChar[(num/100)%10];
    LedBuff[3]=LedChar[(num/1000)%10];
    LedBuff[4]=LedChar[(num/10000)%10];
    LedBuff[5]=LedChar[(num/100000)%10];
    if(num<100000)LedBuff[5] = 0xFF;
    if(num<10000) LedBuff[4] = 0xFF;
    if(num<1000)  LedBuff[3] = 0xFF;
    if(num<100)   LedBuff[2] = 0xFF;
    if(num<10)    LedBuff[1] = 0xFF;
}

示例2:

void ShowNumber(u32 num)
{
    u32 i;
    u8 x=5;//每次被調(diào)用都會(huì)從5開始 
    for(i=100000;i>0;i/=10)
    { 
        if(num<i)LedBuff[x] = 0xFF;
        else LedBuff[x]=LedChar[(num/i)%10];
        x--;
    }   
}

這兩段代碼都能實(shí)現(xiàn)我們想要的功能,示例1可讀性強(qiáng),讓人一看就明白了代碼的作用。而示例2書寫量少,比較簡潔,但在閱讀理解上需要我們轉(zhuǎn)一下彎,筆者測試了這兩段代碼的執(zhí)行時(shí)間,發(fā)現(xiàn)示例1比示例2快5ms左右,這種情況下毫無疑問我們肯定是選擇示例1暫時(shí)作為實(shí)用代碼。

可是在后期的教程中用到定時(shí)器中斷來掃描數(shù)碼管顯示時(shí),示例1的代碼效果不盡人意,關(guān)于漏洞在哪大家后面可以嘗試自己尋找。

在使用示例2時(shí)雖然顯示效果比示例1的好,但是費(fèi)時(shí)長,所以這兩段代碼都不是實(shí)用型代碼。

 

2.代碼參考

參考了宋老師的這部分代碼以及測試結(jié)果都非常高效,所以我們選擇這部分代碼作為實(shí)用型代碼。

void ShowNumber(u32 num)
{
    char i;//取值范圍-128~127
    u8 buf[6];    
    for (i=0; i<6; i++)    //把長整型數(shù)轉(zhuǎn)換為6位十進(jìn)制的數(shù)組
    {
        buf[i] = num % 10;
        num = num / 10;    //舍掉個(gè)位數(shù),重新裝載
    }
    for (i=5; i>=1; i--)   //從最高位起,遇到0填充不顯示的代碼,遇到非0則退出循環(huán)
    {
        if (buf[i] == 0)
            LedBuff[i] = 0xFF;
        else
            break;
    }
    for ( ; i>=0; i--)     //剩余低位都如實(shí)轉(zhuǎn)換為數(shù)碼管顯示字符
    {
        LedBuff[i] = LedChar[buf[i]];
    }
}

這部分代碼我們來舉個(gè)例子理解,假如傳入的參數(shù)為125,第一個(gè)for循環(huán)就是實(shí)現(xiàn)以下功能

buf[5]=0; buf[4]=0; buf[3]=0; buf[2]=1; buf[1]=2; buf[0]=5;

第二個(gè)for循環(huán)i等于2之后就退出了循環(huán),第三個(gè)for循環(huán)i是等于2,然后填充好要顯示的1,2,5給數(shù)碼管緩存區(qū)。

點(diǎn)贊(0)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:

一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語言學(xué)練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程

從零到寫出一個(gè)爬蟲的Python編程課程

只會(huì)語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程

手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運(yùn)行等待時(shí)間)