有大神帮我看看吗,我想把读出来的温度给P1口控制LED灯,可是输出总是全为高电平,我是在
proteus中
仿真的,
单片机晶振是11.0592#include <reg52.h>
#include <intrins.h>
#define UCHAR unsigned char
#define UINT unsigned int
sbit dula=P3^0;
sbit wela=P3^1;
sbit dq=P2^7;
void delay1(UINT z);
void init();
UCHAR fuwei();
void xie(UCHAR temp1);
UCHAR du();
void delay()
{;;}
UINT wd();
UINT n;
int main()
{
UCHAR i,j;
UINT w;
while(1)
{
w=wd();
// P1=0;
i=w&0xff; //取低8位
j=(w>>8)&0xff;
P1=i;
delay1(20);
}
}
void delay1(UINT z)
{
while(z--);
}
void init()
{
dq=1;
}
UCHAR fuwei()
{
UCHAR flag;
dq=1;
delay();
dq=0;
for(n=300;n>0;n--);
dq=1;
for(n=30;n>0;n--);
flag=dq;
for(n=200;n>0;n--);
dq=1;
return flag;
}
void xie(UCHAR temp1)
{
int i=0;
dq=1;
delay();
for(i=0;i<8;i++)
{
CY=temp1>>1;
dq=0;
for(n=7;n>0;n--);
dq=CY;
for(n=40;n>0;n--);
dq=1;
_nop_();
}
dq=1;
delay();
}
UCHAR du()
{
UCHAR temp,i;
bit ret_bit;
dq=1;
delay();
for(i=0;i<8;i++)
{
dq=0;
_nop_();
_nop_();
dq=1;
for(n=7;n>0;n--);
ret_bit=dq;
for(n=20;n>0;n--);
dq=1;
if(ret_bit)
{
temp=(temp>>1)|0x80;
}
else
temp=temp>>1;
}
dq=1;
return temp;
}
UINT wd()
{
UCHAR i,j;
UINT k;
fuwei();
xie(0xcc);
xie(0x44);
delay1(10);
fuwei();
xie(0xcc);
xie(0xbe);
i=du();
j=du();
k=j;
k=k<<8;
k=k+i;
return k;
}
一周热门 更多>