📄 sensorlib.c
字号:
//this file contain the method to operate the sensor
//Author;Decell.Zhou
#include "SensorLib.h"
#include "ledLib.h"
void delay15(){//delay for 15us
unsigned char i;
for(i = 0;i < 8;i++);
}
//============[write1TS]==============
//Description:generate a write 1 Time Slot to DS18B20
//Author:Decell.Zhou
//Version
//Arg:none
//Return:none
//====================================
void write1TS(void){
sensorDQ = 1;//pull up the bus
sensorDQ = 0;//generate a time slot
_nop_ ();//wait for 7us
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
sensorDQ = 1;//pull up the bus
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
delay15();
delay15();
delay15();
}
//============[write0TS]==============
//Description:generate a write 0 Time Slot to DS18B20
//Author:Decell.Zhou
//Version
//Arg:none
//Return:none
//====================================
void write0TS(void){
sensorDQ = 1;;
sensorDQ = 0;
delay15();
delay15();
delay15();
delay15();
sensorDQ = 1;
_nop_ ();
_nop_ ();
}
//===========[readTS]=================
//Description:generate a read Time Slot to DS18B20
//Author:Decell.Zhou
//Version
//Arg:none
//Return:none
//====================================
bit readTS(void){
bit b;
sensorDQ = 1;//generate a read time slot
sensorDQ = 0;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
sensorDQ = 1;//release the bus
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
b = sensorDQ;
delay15();
delay15();
delay15();
_nop_ ();
_nop_ ();
return b;
}
//===========[writeSensor]============
//Description:write a byte to the DS18B20
//Author:Decell.Zhou
//Version:
//Arg: value | unsigned char | the vaule you want to send to DS18B20
//Return:none
//==================================
void writeSensor(unsigned char value){
unsigned char bitCount;
for(bitCount = 0;bitCount < 8;bitCount++){
if((value & 0x1) == 1){
write1TS();
}else{
write0TS();
}
value = value >> 1;
}
}
//==========[readSensor]==============
//Description:read a value from the DS18B20
//Author:Decell.Zhou
//Version:
//Arg:none
//Return:the byte read read from the sensor | unsigned char
//===================================
unsigned char readSensor(void){
unsigned char bitCount;
bit tmpBit;
unsigned char value;
unsigned char valueMsk;
valueMsk = 0x0;
for(bitCount = 0,value = 0;bitCount < 8;bitCount++){
tmpBit = readTS();
//for(i = 0;i < 1000;i++){
// ledSetDigit(tmpBit,0,0);
//}
valueMsk |= tmpBit;
value = value + ((valueMsk & 0x1)<< bitCount);
valueMsk = 0x0;
tmpBit = 0;
}
return value;
}
//==========[resetSensor]=============
//Description:generate a reset signal to the Sensor
//Author:Decell.Zhou
//Version;
//Arg:none
//Return:none
//====================================
void resetSensor(void){
int i;
sensorDQ = 1;
sensorDQ = 0;
for(i = 0;i < 300;i++);//delay for 500us
sensorDQ = 1;//release the bus
while(sensorDQ);//wait for the DS18B20 to pull low the bus
_nop_ ();
while(!sensorDQ);
for(i = 0;i < 300;i++);//delay for 500us;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -