标题: 请问大佬怎么把下面这段单片机程序简化 [打印本页]

作者: stdwmap    时间: 2020-2-20 14:13
标题: 请问大佬怎么把下面这段单片机程序简化
个人写的温湿度读取程序,采集16次,每次采集到1或者0。我程序底子差,写了a到p16个变量存放,之后再合并成一个数处理。但这样太占空间了,知道可以用for循环加按位与或操作,但是不知道怎么改,求大佬帮忙
                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();}


作者: zalelife    时间: 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();
        }       
       
}
作者: csmyldl    时间: 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;
作者: stdwmap    时间: 2020-2-20 20:35
zalelife 发表于 2020-2-20 15:10
unsigned char i;
unsigned short vlaue = 0;
for(i=0;i

谢谢。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1