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

📄 time.c

📁 应用KEILC写的一个C51程序
💻 C
字号:
#include "time.h"
#include "delay.h"
void WriDs(uchar addr,uchar dat);
uchar ReadDs(uchar addr);

void v_RTInputByte(uchar ucDa)//往DS1302写入1BYTE数据
{   
   uchar i;   
   for(i=8;i>0;i--)
   {      
	  if((ucDa & 0x01)!=0)
	     T_IO=1;
	  else
	     T_IO=0;
	  T_CLK=0;
	  _nop_();
	  _nop_();
	  T_CLK=1;
	  _nop_();
	  _nop_();
	  //T_CLK=0;	  
	  ucDa=ucDa>>1;	 
   }
}
uchar v_RTOutputByte(void)//从DS1302读取1BYTE数据
{   
   uchar i;
   static uchar temp1;   
   temp1=0;
   //T_IO=1;  
   for(i=8;i>0;i--)
   {  
      temp1=temp1>>1;  
      T_CLK=0;
      _nop_();	      
	  if(T_IO) 	  
         temp1|=0x80;	 
	  T_CLK=1;  
 	  _nop_();
	  _nop_();
      T_CLK=0;
   }
   return (temp1);
}
void WriDs(uchar ucAddr, uchar ucDa)//向DS1302某地址写入命令/数据,先写地址,后写命令/数据
{   
   T_CLK = 0;   
   T_RST =0;  
   T_RST = 1;
   v_RTInputByte(ucAddr); /* 地址,命令 */
   v_RTInputByte(ucDa); /* 写1Byte数据*/   
   T_IO = 1;  
   T_RST =0;   
   T_CLK=1;
}


void Init1302(void)
{  
   T_CLK = 0;
   _nop_();   
   T_RST = 0; 
   delay_1us(8);  
   WriDs(0x8e,0x00);  
   WriDs(0x8e,0x80);//写保护寄存器的WP位置1
}
void v_BurstW1302T(uchar *pSecDa)
{
   uchar i;
   WriDs(0x8e,0x00);//wp=0,写操作
   T_RST=0;
   T_CLK=0;
   T_RST=1;
   v_RTInputByte(0xbe);	//时钟突发模式写
   for(i=7;i>0;i--)
   {
      v_RTInputByte(*pSecDa);
	  pSecDa++;
   }
   v_RTInputByte(0x80);//7byte时钟数据+1byte控制
   T_CLK=1;
   T_RST=0;
}
void v_BurstR1302T(uchar *pSecDa)
{
   uchar i;   
   T_RST=0;
   T_CLK=0;
   T_RST=1;
   v_RTInputByte(0xbf);//时钟突发模式读
   for(i=7;i>0;i--)
   {
      *pSecDa=v_RTOutputByte();
	  pSecDa++;
   }
   i=v_RTOutputByte();
   T_CLK=1;
   T_RST=0;
}

⌨️ 快捷键说明

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