⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setdata.c

📁 利用ATmega64实现了对测温芯片DS18B20
💻 C
字号:



#include "SetData.h"
#include "hardware.h"


//****************BCD到BIN转换***************开始**********
//****************************
//    BCD码转数据型
//****************************
uint8 BCDtoBIN(uint8 c)
{
     uint8 tmp;

	 tmp=c&(0x0F);

	 c&=(0x70);

	 c>>=4;

	 c*=10;

	 c+=tmp;

	 return c;

}



//****************************
//    数据型转BCD码
//****************************
uint8 BINtoBCD(uint8 c)
{
    uint8 tmp;

	c%=100;

    tmp=c;

	c/=10;

	tmp%=10;

	c<<=4;

	c+=tmp;

	c&=0x7F;

	return c;
}
//****************BCD到BIN转换***************结束**********






//*********************读取和设置DS1302数据*************开始
//************************
//    获得时间数据函数
//************************
void gettime_date()
{
    uint8 i;
	uint8 tmp[3];
	uint8 tmpasc;

	for(i=0;i<3;i++)                       //获得DS1302数据
	{
	   cli();
	   tmpasc=twi_read_byte(i,0);
	   sei();
	   tmp[i]=BCDtoBIN(tmpasc);
	}
    
	FRAME_BUF[0][5]=ASCIItab[tmp[2]/10];   //时
	FRAME_BUF[0][6]=ASCIItab[tmp[2]%10];

	FRAME_BUF[0][8]=ASCIItab[tmp[1]/10];   //分
	FRAME_BUF[0][9]=ASCIItab[tmp[1]%10];

	FRAME_BUF[0][11]=ASCIItab[tmp[0]/10];  //秒
	FRAME_BUF[0][12]=ASCIItab[tmp[0]%10];
   
               
}



//************************
//    设置时间数据函数
//************************
void settime_date()
{
   uint8 i;
   uint8 tmp[7];

   if(framecheck())
   {
   for(i=0;i<7;i++)  //待修改位置
   {
       
       tmp[i]=BINtoBCD(RX_BUF[i+2]);
	   cli();
       twi_write_byte(i,tmp[i],0);
	   sei();
   }
   }


}
//*********************读取和设置DS1302数据*************结束

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -