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

📄 ds1302.c

📁 DS1302
💻 C
📖 第 1 页 / 共 2 页
字号:
//ICC-AVR 修改日期: 2007-05-01 15:38:44
//PC3:功能按键
//PC4:移位按键
//PC5:加一按键
//PB0:减一按键
//  CenWenJiao
// Target : M8
// Crystal: 1.0000Mhz
//2007.05.01 21:08:CC 完成时间调整程序
#include <iom8v.h>
#include <macros.h>
#include "ds1302.h"
#include "DELAY.C"
#include "LCD.h"    //eureka

/*cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
                             单片机初始化程序
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
void port_init(void) //设置portb和portc端口
{
 PORTB = 0x01;//PB0 作为减一按键
 DDRB  = 0x00;
 PORTC = 0x38; //m103 output only//PC3; PC4; PC5; 功能,移位,加一
 DDRC  = 0xC7;  
 PORTD = 0x00;
 DDRD  = 0xFF;
}
/*ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
     1302初始化驱动
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
void init_devices(void)
{
 //CLI(); //disable all interrupts
 port_init();
 DS1302_set();
 //timer1_init();
 MCUCR = 0x00;
 GICR  = 0x00;
 TIMSK = 0x04; 
 //SEI(); //re-enable interrupts
}
/*ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
     LCD1602初始化驱动
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
void init_devicesl(void)
{
  //CLI(); //disable all interrupts
  LCD_init();
 // DS1302_set();
  MCUCR = 0x00;
  GICR  = 0x00;
  TIMSK = 0x00; //timer interrupt sources
 // SEI(); //re-enable interrupts
}
/*ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
     基本的显示程序
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
void SendDataForDisplay(void)
{
    //DS1302_ReadTime();
    //DataFenli();
  
    LCD_write_string(0,0,"time:");  
    LCD_write_char(6,0,hourth+48);  //时
	LCD_write_char(7,0,hourtl+48);
	LCD_write_char(8,0,45);
	LCD_write_char(9,0,minuteth+48);  //分
	LCD_write_char(10,0,minutetl+48);
	LCD_write_char(11,0,45);
	LCD_write_char(12,0,secondth+48);
    LCD_write_char(13,0,secondtl+48); //秒
    
    LCD_write_string(0,1,"data:");
    LCD_write_char(6,1,yearth+48);
	LCD_write_char(7,1,yeartl+48);  //年
	LCD_write_char(8,1,45);
	LCD_write_char(9,1,monthth+48);  //月
	LCD_write_char(10,1,monthtl+48);
	LCD_write_char(11,1,45);
	LCD_write_char(12,1,dateth+48);  //日
    LCD_write_char(13,1,datetl+48); 
   
   delay_nus(200);

}
/*ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
 显示中调用的闪烁调用程序
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
 void black(int m,int n)//闪烁
 {
 LCD_write_char(m,n,95);//95为闪烁时"下滑线"的代码
  delay_nus(1000);
 }
/*cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
  /*设置分钟,秒,加法子程序*/
/*cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
void PlusForSET(int i)           
	       {    
	        if(WriteTime[i]==0x09)  //writetime[i] 是定义存储写地址的数组
			{ WriteTime[i]=0x0f;
			  }
			if(WriteTime[i]==0x19)
		    {WriteTime[i]=0x1f;
			} 
			if(WriteTime[i]==0x29)
			 {WriteTime[i]=0x2f;
			} 
	    	if(WriteTime[i]==0x39)
		    {WriteTime[i]=0x3f;
			} 
			if(WriteTime[i]==0x49)
			{WriteTime[i]=0x4f;
				} 
			if(WriteTime[i]==0x59)
			{WriteTime[i]=0x00;
				} 
			else
			WriteTime[i]=WriteTime[i]+1;
		   }
//ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
// 设置分钟,秒 减法程序
//ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
void SubForSET(int i)           
	       {    
	        if(WriteTime[i]==0x00)
			{ WriteTime[i]=0x5a;
			  }
			if(WriteTime[i]==0x10)
		    {WriteTime[i]=0x0a;
			} 
			if(WriteTime[i]==0x20)
			 {WriteTime[i]=0x1a;
			} 
	    	if(WriteTime[i]==0x30)
		    {WriteTime[i]=0x2a;
			} 
			if(WriteTime[i]==0x40)
			{WriteTime[i]=0x3a;
				} 
			if(WriteTime[i]==0x50)
			{WriteTime[i]=0x49;
				} 
			else
			WriteTime[i]=WriteTime[i]-1;
		   }		   

/*cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
//设置小时加减法子程序
//ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
//加法
void PlusHour(int i)
{
           if(WriteTime[i]==0x09)
			{ WriteTime[i]=0x0f;
			  }
			if(WriteTime[i]==0x19)
		    {WriteTime[i]=0x1f;
			} 
			if(WriteTime[i]==0x23)
			 {WriteTime[i]=0x00;
			} 
			else
			WriteTime[i]=WriteTime[i]+1;
}
//减法
void SubHour(int i)
{          
            if(WriteTime[i]==0x00)
			{ WriteTime[i]=0x24;
			  }
			if(WriteTime[i]==0x10)
		    {WriteTime[i]=0x0a;
			} 
			if(WriteTime[i]==0x20)
			 {WriteTime[i]=0x19;
			}
			else
			WriteTime[i]=WriteTime[i]-1;
}
//cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
//设置日期,子程序
//cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
//日期加法
void PlusDay(int i)
{           if(WriteTime[i]==0x09)
			{ WriteTime[i]=0x0f;
			  }
			if(WriteTime[i]==0x19)
		    {WriteTime[i]=0x1f;
			} 
			if(WriteTime[i]==0x29)
			 {WriteTime[i]=0x2f;
			} 
	    	if(WriteTime[i]==0x31)
		    {WriteTime[i]=0x00;
			} 
			else
			WriteTime[i]=WriteTime[i]+1;
       
}
//日期 减法
void SubDay(int i)
{
           if(WriteTime[i]==0x00)
			{ WriteTime[i]=0x32;
			  }
			if(WriteTime[i]==0x10)
		    {WriteTime[i]=0x0a;
			} 
			if(WriteTime[i]==0x20)
			 {WriteTime[i]=0x1a;
			} 
	    	if(WriteTime[i]==0x30)
		    {WriteTime[i]=0x29;
			} 
			else
			WriteTime[i]=WriteTime[i]-1;

}
//cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
//设置月份子程序
//cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
//月份 加法
void PlusMonth(int i)
{
            if(WriteTime[i]==0x09)
			{ WriteTime[i]=0x0f;
			  }
			if(WriteTime[i]==0x12)
		    {WriteTime[i]=0x00;
			} 
			else
			WriteTime[i]=WriteTime[i]+1;

}
//月份减法
void SubMonth(int i)
{
            if(WriteTime[i]==0x00)
			{ WriteTime[i]=0x13;
			  }
			if(WriteTime[i]==0x11)
		    {WriteTime[i]=0x09;
			} 
			else
			WriteTime[i]=WriteTime[i]-1;

}
//cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
//设置年子程序
//cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
//加
void PlusYear(int i)
{
           if(WriteTime[i]==0x09)
			{ WriteTime[i]=0x0f;
			  }
			if(WriteTime[i]==0x19)
		    {WriteTime[i]=0x1f;
			} 
			if(WriteTime[i]==0x29)
			 {WriteTime[i]=0x2f;
			} 
	    	if(WriteTime[i]==0x39)
		    {WriteTime[i]=0x3f;
			} 
			if(WriteTime[i]==0x49)
			{WriteTime[i]=0x4f;
				} 
			if(WriteTime[i]==0x59)
			{WriteTime[i]=0x5f;
				} 
			if(WriteTime[i]==0x69)
			{WriteTime[i]=0x6f;
				} 
			if(WriteTime[i]==0x79)
			{WriteTime[i]=0x7f;
				}
			 if(WriteTime[i]==0x89)
			{WriteTime[i]=0x8f;
				} 
			if(WriteTime[i]==0x99)
			{WriteTime[i]=0x00;
				} 
			else
			WriteTime[i]=WriteTime[i]+1;
		   
}
//减
void SubYear(int i)
{
if(WriteTime[i]==0x00)
			{ WriteTime[i]=0x5a;
			  }
			if(WriteTime[i]==0x10)
		    {WriteTime[i]=0x0a;
			} 
			if(WriteTime[i]==0x20)
			 {WriteTime[i]=0x1a;
			} 
	    	if(WriteTime[i]==0x30)
		    {WriteTime[i]=0x2a;
			} 
			if(WriteTime[i]==0x40)
			{WriteTime[i]=0x3a;
				} 
			if(WriteTime[i]==0x50)
			{WriteTime[i]=0x4a;
				} 
			if(WriteTime[i]==0x60)
		    {WriteTime[i]=0x5a;
			} 
			if(WriteTime[i]==0x70)

⌨️ 快捷键说明

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