找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1541|回復: 3
打印 上一主題 下一主題
收起左側(cè)

請問大佬怎么把下面這段單片機程序簡化

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:405098 發(fā)表于 2020-2-20 14:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
個人寫的溫濕度讀取程序,采集16次,每次采集到1或者0。我程序底子差,寫了a到p16個變量存放,之后再合并成一個數(shù)處理。但這樣太占空間了,知道可以用for循環(huán)加按位與或操作,但是不知道怎么改,求大佬幫忙
                while(!dht);
                Delay45us();
                if(!dht){
                a=0;}
                else{a=1;Delay45us();}
               
                while(!dht);
                Delay45us();
                if(!dht){
                b=0;}
                else{b=1;Delay45us();}
               
                while(!dht);
                Delay45us();
                if(!dht){
                c=0;}
                else{c=1;Delay45us();}
               
                while(!dht);
                Delay45us();
                if(!dht){
                d=0;}
                else{d=1;Delay45us();}
               
                while(!dht);
                Delay45us();
                if(!dht){
                e=0;}
                else{e=1;Delay45us();}
               
                while(!dht);
                Delay45us();
                if(!dht){
                f=0;}
                else{f=1;Delay45us();}
               
                while(!dht);
                Delay45us();
                if(!dht){
                g=0;}
                else{g=1;Delay45us();}
               
                while(!dht);
                Delay45us();
                if(!dht){
                h=0;}
                else{h=1;Delay45us();}
               
                                while(!dht);
                Delay45us();
                if(!dht){
                i=0;}
                else{i=1;Delay45us();}
               
                while(!dht);
                Delay45us();
                if(!dht){
                j=0;}
                else{j=1;Delay45us();}
               
                while(!dht);
                Delay45us();
                if(!dht){
                k=0;}
                else{k=1;Delay45us();}
               
                while(!dht);
                Delay45us();
                if(!dht){
                l=0;}
                else{l=1;Delay45us();}
               
                while(!dht);
                Delay45us();
                if(!dht){
                m=0;}
                else{m=1;Delay45us();}
               
                while(!dht);
                Delay45us();
                if(!dht){
                n=0;}
                else{n=1;Delay45us();}
               
                while(!dht);
                Delay45us();
                if(!dht){
                o=0;}
                else{o=1;Delay45us();}
               
                while(!dht);
                Delay45us();
                if(!dht){
                p=0;}
                else{p=1;Delay45us();}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:686839 發(fā)表于 2020-2-20 15:10 | 只看該作者
unsigned char i;
unsigned short vlaue = 0;
for(i=0;i<16;i++)
{
        while(!dht);
        Delay45us();
        if(!dht)
        {
                vlaue &= ~(1<<i);
        }
        else
        {
                vlaue |= (1<<i);
                Delay45us();
        }       
       
}
回復

使用道具 舉報

板凳
ID:235200 發(fā)表于 2020-2-20 15:11 | 只看該作者
unsigned int value;
value=0;
for (i=0;i<16;i++)
if (dht)
value=(value<<1)+1;
else
value<<=1;
回復

使用道具 舉報

地板
ID:405098 發(fā)表于 2020-2-20 20:35 | 只看該作者
zalelife 發(fā)表于 2020-2-20 15:10
unsigned char i;
unsigned short vlaue = 0;
for(i=0;i

謝謝。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表