发布时间 : 星期三 文章基于无线传感器网络的智能家居 - 图文更新完毕开始阅读cf711a11866fb84ae45c8d0e
flag=1; c=0;
c=c|temh; c=c&0x00ff; c=c<<8; a=c; a=c|teml;
a=(a^0xffff);//异或 a=a+1; //取反加1 teml=a&0x0f; temh=a>>4; } else {
flag=0; //为正 a=temh<<4;
a+=(teml&0xf0)>>4; //得到高位的值 b=teml&0x0f; temh=a;
teml=b&0x00ff; }
sensor_data_value[0]=teml; sensor_data_value[1]=temh; }
附录2:DS18B20.h代码
#ifndef DS18B20_H #define DS18B20_H
#include \#include \
#define CL_DQ P0_0=0 #define SET_DQ P0_0=1
#define SET_OUT P0DIR|=0x01 #define SET_IN P0DIR&=~0x01 #define IN_DQ P0_0
extern unsigned char id[8];
extern unsigned char sensor_data_value[2]; extern UINT8 flag;
//void Delay_1us(void); void Delay_nus(UINT16 n) ;
void write_1820(unsigned char x) ; unsigned char read_1820(void); void init_1820(void) ; void read_data(void);
44
void get_id(void);
void ds18b20_main(void); #endif
附录3:Temp.c代码
#include \#include \#include \#include \#include \
#include \
#include \
#if !defined( WIN32 ) #include \#endif
#include \#include \#include \#include \#include \
const cId_t Temp_ClusterList[Temp_MAX_CLUSTERS] = {
Temp_CLUSTERID };
const SimpleDescriptionFormat_t Temp_SimpleDesc = {
Temp_ENDPOINT, // int Endpoint;
Temp_PROFID, // uint16 AppProfId[2]; Temp_DEVICEID, // uint16 AppDeviceId[2]; Temp_DEVICE_VERSION, // int AppDevVer:4; Temp_FLAGS, // int AppFlags:4;
Temp_MAX_CLUSTERS, // byte AppNumInClusters; (cId_t *)Temp_ClusterList, // byte *pAppInClusterList; Temp_MAX_CLUSTERS, // byte AppNumInClusters; (cId_t *)Temp_ClusterList // byte *pAppInClusterList; };
endPointDesc_t Temp_epDesc;
extern UINT8 sensor_data_value[2]; uint8 tempValue = 0;
byte Temp_TaskID; // Task ID for internal task/event processing
45