标题:
请问大佬怎么把下面这段单片机程序简化
[打印本页]
作者:
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