📄 main.c.bak
字号:
#include "reg669.h"
#include "INTRINS.H"
//#include "LCD.h"
#define CLR_RI (RI=0)
#define CLR_TI (TI_0=0)
void serial_initial(void);
void serial_Test(void);
unsigned char code ID[2][8]={ 0x28,0x1D,0x25,0x1D,0x00,0x00,0x00,0x80,
0x28,0x0e,0x9e,0x1c,0x00,0x00,0x00,0x32};
unsigned char currSensorNo=0;
sbit DS18B20_DQ = P1^4;
sbit RUN_LED = P1^6;
/****************************************************************************
Function:send_byte
Parameter:count,SEND_Buf[]
Retrun:None
Description:向串口发送数据
*****************************************************************************/
void send_byte(unsigned char count,unsigned char SEND_Buf[])
{
unsigned char i;
for(i=0;i<count;i++)
{
S0BUF=SEND_Buf[i];
while(!TI_0);
CLR_TI;
}
}
/****************************************************************************
Function:Delay_ms
Parameter:Nms
Retrun:None
Description:延时N ms
*****************************************************************************/
void Delay_ms (unsigned int Nms )
{
unsigned char i;
while(Nms--)
for(i=0; i<125; i++) ;
}
/****************************************************************************
Function:Delay_Count
Parameter:Count
Retrun:None
Description:延时
*****************************************************************************/
void Delay_Count (unsigned char Count )
{
while(Count>0) Count--;
}
/****************************************************************************
Function:tmreset
Parameter:None
Retrun:None
Description:start Reset Pulse
*****************************************************************************/
void tmreset(void)
{
DS18B20_DQ=0;
Delay_Count(103);
DS18B20_DQ=1;
Delay_Count(4);
}
/****************************************************************************
Function:tmpre
Parameter:None
Retrun:None
Description:ACK
*****************************************************************************/
void tmpre(void)
{
while(DS18B20_DQ);
while(~DS18B20_DQ);
Delay_Count(4);
}
/****************************************************************************
Function:tmrbit
Parameter:None
Retrun:None
Description:Read a bit from 1820
*****************************************************************************/
bit tmrbit(void)
{
int i=0;
bit dat;
DS18B20_DQ=0;i++;
DS18B20_DQ=1;i++;i++;
dat = DS18B20_DQ;
Delay_Count(8);
return dat;
}
/****************************************************************************
Function:tmrbyte
Parameter:None
Retrun:None
Description:Read a byte from 1820
*****************************************************************************/
unsigned char tmrbyte(void)
{
unsigned char i,j,dat=0;
for(i=1;i<=8;i++)
{
j=tmrbit();
dat=(j<<7)|(dat>>1);
}
return dat;
}
/****************************************************************************
Function:tmwbyte
Parameter:dat
Retrun:None
Description:Write a byte from 1820
*****************************************************************************/
void tmwbyte(unsigned char dat)
{
signed char i=0;
unsigned char j;
bit testb;
for(j=1;j<=8;j++)
{
testb=dat & 0x01;
dat = dat>>1;
if(testb)
{
DS18B20_DQ=0;
i++;i++;
DS18B20_DQ=1;
Delay_Count(8);
}
else
{
DS18B20_DQ=0;
Delay_Count(8);
DS18B20_DQ=1;
i++;i++;
}
}
}
/****************************************************************************
Function:tmstart
Parameter:void
Retrun:None
Description:send convert command to 1820
*****************************************************************************/
void tmstart(void)
{
unsigned char i;
tmreset();
tmpre();
Delay_ms(1);
/* tmwbyte(0xcc);*/
tmwbyte(0x55);
for(i=0;i<8;i++)
tmwbyte(ID[currSensorNo][i]);
tmwbyte(0x44);
}
/****************************************************************************
Function:send_byte
Parameter:Uc_Outbyte
Retrun:None
Description:向HD7279发送一个字节,包括指令,数据
*****************************************************************************/
/*----------------------------------------------------
* Read tempreature from 1820
*----------------------------------------------------*/
unsigned int tmrtemp_all(void)
{
unsigned char a,b;
unsigned int y3;
unsigned char i;
tmreset();
tmpre();
Delay_ms(1);
/*tmwbyte(0xcc);*/
tmwbyte(0x55);
for(i=0;i<8;i++)
tmwbyte(ID[currSensorNo][i]);
tmwbyte(0xbe);
a = tmrbyte();
b = tmrbyte();
y3 = ((unsigned int)b) << 8;
return ((y3+a) & 0x7ff) ;
}
/****************************************************************************
Function:main
Parameter:none
Retrun:None
Description:主程序
*****************************************************************************/
void main(void)
{
unsigned char id[8]={1,2,3,4,5,6,7,8};
serial_initial2();
serial_Test();
send_byte(8,id);
for(;;)
{
RUN_LED=!RUN_LED;
/* Read_Id();*/
// TX_C =!TX_C ;
currSensorNo=(currSensorNo==1)?0:1;
// Display_AllTemp();
/*Change();*/
// send(6,Digit);
Delay_ms(1000);
_nop_();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -