📄 msp430_ds18b20.c
字号:
void Init_Sys(void)
{
unsigned char i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
//BCSCTL1|=RSEL2+RSEL1+RSEL0;
//DCOCTL|=DCO2+DCO1+DCO0;
BCSCTL1 &= ~XT2OFF; // XT2on
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG) != 0); // OSCFault flag still set?
BCSCTL2 |= DIVM0+DIVM1+SELM1+SELS; // MCLK = SMCLK = XT2 (safe)
}
void delay(unsigned int useconds)
{
for(;useconds>0;useconds--);
}
unsigned char ow_reset(void)
{
unsigned char presence;
P1DIR |=0x40; //SET TO OUTPUT
P1OUT &=0xBF; //pull DQ line low
delay(90); // leave it low for 600us
P1OUT |=0x40;// allow line to return high
delay(10); // wait for presence
P1DIR &=0xBF; //SET TO INPUT
presence = P1IN; // get presence signal
delay(60); // wait for end of timeslot
return(presence); // presence signal returned
} // 0=presence, 1 = no part
unsigned char read_byte(void)
{
unsigned char i;
unsigned char value = 0;
// P1OUT |=0x40; // then return high
for (i=8;i>0;i--)
{
value>>=1;
P1DIR |=0x40; //SET TO OUTPUT
P1OUT &=0xBF; // pull DQ low to start timeslot
_NOP();
_NOP();
// delay(1); //for (i=0; i<3; i++);
P1DIR &=0xBF; //SET TO INPUT
if(P1IN&0x40)value|=0x80;
delay(8); // wait for rest of timeslot
}
return(value);
}
void write_byte(char val)
{
unsigned char i;
P1DIR |=0x40; //SET TO OUTPUT
for (i=8; i>0; i--) // writes byte, one bit at a time
{
P1OUT &=0xBF; // pull DQ low to start time slot
_NOP();
if(val&0x01)P1OUT |=0x40;
else P1OUT &=0xBF;
delay(12); // hold value for remainder of time slot
P1OUT |=0x40;
val>>=1;
}
delay(10);
}
//读取温度
unsigned int Read_Temperature(void)
{
union
{
unsigned char c[2];
int x;
}temp;
P1OUT |=0x80; //PULL UP
ow_reset();
write_byte(0xCC); //Skip ROM
write_byte(0x44); // Start Conversion
delay(65535);
ow_reset();
write_byte(0xCC); // Skip ROM
write_byte(0xBE); // Read Scratch Pad
temp.c[0]=read_byte();
temp.c[1]=read_byte();
//ow_reset();
//write_byte(0xCC); //Skip ROM
//write_byte(0x44); // Start Conversion
P1OUT &=0x7F; //PULL DOWN
return temp.x;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -