#include<sn8p2511.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define ds FP10//sbit ds=FP10
#define led FP12
#define _nop_();
uint temp;
uint f_temp;
#define led2 FP13
#define led1 FP54
void delayms(unsigned long z)
{
unsigned long int x,y;
for(x=z;x>0;x--)
for(y=330;y>0;y--);
}
void delayus(unsigned long int xus)
{
unsigned long int i;
for(i=xus;i>0;i--); //7us
// for(j=330;j>0;j--);
}
void delay()
{
_nop_(); //2us
}
/*void main()
{
FP10M=1;
P1UR=0XFF;
while(1)
{
FP10=1;
delayus(300); 900us
FP10=0;
delayus(150); }//500us
}*/
void dsreset(void)
{
// uint i;
ds=0;
delayus(300);//900us
//i=103;
// while(i>0)i--;
ds=1;
delayus(150); //500us
// i=4;
// while(i>0)i--;
}
bit tempreadbit(void)
{
// uint i;
bit dat;
ds=0;delayus(2);
ds=1;delayus(3);//delay();//i++;i++;
dat=ds;
delayus(150);// i=8;while(i>0)i--;
return(dat);
}
uchar tempread(void)
{
uchar i,j,dat;
dat=0;
for(i=1;i<=8;i++)
{
j=tempreadbit();
dat=(j<<7)|(dat>>1);
}
return(dat);
}
void tempwritebyte(uchar dat)
{
// uint i;
uchar j;
bit testb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb)
{
ds=0;
delayus(3);//delay(); //i++;i++;
ds=1;
delayus(150);// i=8;while(i>0)i--;
}
else
{
ds=0;
delayus(150);// i=8;while(i>0)i--;
ds=1;
delayus(3);//i++;i++;
}
}
}
void tempchange(void)
{
dsreset();
delayms(1);
tempwritebyte(0xcc);
tempwritebyte(0x44);
}
uint get_temp()
{
uchar a,b;
dsreset();
delayms(1);
tempwritebyte(0xcc);
tempwritebyte(0xbe);
a=tempread();
b=tempread();
temp=b;
temp<<=8;
temp=temp|a;
f_temp=temp*0.0625;
temp=f_temp*10;//+0.5;
// f_temp=f_temp+0.05;
return temp;
}
void deal(uint temp)
{
if((temp>270)&&(temp<=300))
{
FP12=0; //warn(40,0x01);
led2=1;
}
/* else if(t<=270)
{
led1=0;
}*/
else if((temp<370)&&(temp>=300))
{
led2=0;
FP12=1;//warn(40,0x04);
}
}
void main()
{
FP10M=1;
FP12M=1;
FP13=1;
P1UR=0XFF;
//FP12=1;
while(1)
{
tempchange();
get_temp();
deal(temp);
}
}
这个程序无法执行,请大神们帮忙看看。。非常感谢!! |