亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rtc.c

?? 使用WINBOW78E365的RT1308的IIC讀取C代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************
*Copyright (c)2005,安安科技
*Product name:Intelligent life system
*DOCUMENT<<rtc.c>>
*auther:Charlie.Yi
*data :2006/12/12
****************************/
#include      "USER_DEFINE.H"      
//***************************************
//***時間日期數據還原處理****
struct time_asicc idata time_ram;



//RTC讀取時間值/所有的時間寄存器
void Read_RTC_Time(void)  
{ 
  bit ack;                        //定義i2c的應答位。
  uchar i_r_r=6,read_data,Previous_date,Previous_minute,Previous_second;  //Previous_minute;
  Previous_second=time_s3530[0];  //當前秒鐘
  Previous_minute=time_s3530[1];  //當前分鐘
  Previous_date=time_s3530[4];    //當前日期
  I2C_Start();    
  ack=I2C_Send_Byte(S3530|0x05);  //發送數據(控制位) 0x65  讀模式 1
  if(ack)while(1); 
  else   
     do 
        {   
        read_data=I2C_Receive_Byte();
        read_data=Swap_Byte(read_data);//從RTC讀出的數是高位與低位倒置的,故需要將其反過來。                                                            
        time_s3530[i_r_r]=read_data;
        I2C_ack();                     //發送應答位,告知RTC MCU已經成功接收到一個數據
        }while(i_r_r--); 
  I2C_Nack();                          //發送應答位.在讀取數據時,當數據為最后一個時)
  I2C_Stop(); 
  time_s3530[0]=time_s3530[0]&0x7f;   //秒
  time_s3530[1]=time_s3530[1]&0x7f;   //分
  time_s3530[2]=time_s3530[2]&0x3f;   //時
  time_s3530[3]=time_s3530[3]&0x07;   //星期
  time_s3530[4]=time_s3530[4]&0x3f;   //日
  time_s3530[5]=time_s3530[5]&0x1f;   //月
  //time_s3530[5]=time_s3530[6]&0xff;   年
  if     (Previous_date!=time_s3530[4])  b_REFRESH_DATE_flag=1;       //Refurbish_Date_display
  else if(Previous_minute!=time_s3530[1])b_REFRESH_SECOND_flag=b_REFRESH_MINUTE_flag=1;//Refurbish_Minute_Display
  else if(Previous_second!=time_s3530[0])b_REFRESH_SECOND_flag=1;                //Refurbish_Second_Display
  return;
}  
//********************************************

//**************RTC寫入時間值*****************
void write_rtc_time(void)
{ 
  uchar i_r_w=6;
  bit ack;   
  uchar write_data; 
  time_s3530[0]=0;
  I2C_Start();  
  ack=I2C_Send_Byte(S3530|0x04);    //發送數據(控制位) 0x64  寫模式" 0"
  if(ack)while(1);    
  else       
     do    
       {  
       write_data=Swap_Byte(time_s3530[i_r_w]); 
       ack=I2C_Send_Byte(write_data); 
       if(ack)while(1);
       Delay1ms(80);   
       }while(i_r_w--);   
  I2C_Nack();                      //發送應答位 (在讀取數據時,當數據為最后一個時)
  I2C_Stop();     	  	  	  	  
}  
//******************************************

//**************RTC 初始化**************
void Initial_RTC(void) 
{  
  bit ack;  
  uchar read_data;
  I2C_Start();
  ack=I2C_Send_Byte(0x61);       //發送讀控制位 0x61=讀狀態寄存器1
  if(ack)while(1); 
  read_data=I2C_Receive_Byte();  //讀狀態寄存器值。
  I2C_Nack();                    //發送應答位(在讀取數據時)no ack 
  I2C_Stop(); 
  //**************寫狀態寄存器************
  //地址與控制字節是從最高位先傳,數據是低位先傳。
  //最高位與最低位依次對調。(因為s3530最先傳送的是最低位)
  //*****************************************************
  if(read_data&0x01)                 //對S3530狀態位POWER進行檢測。如果POWER=“1” 
     {                              //剛開啟電源,對S3530進行初始化。
     //******復位-寫狀態寄存器1*******
     I2C_Start();
     ack=I2C_Send_Byte(0x60);       //發送寫控制位 0x60=寫狀態寄存器1
     if(ack)while(1);
     ack=I2C_Send_Byte(0xc0);       //寫控制位(0xc0)復位操作并設定時間為24小時制
     if(ack)while(1); 
     I2C_Stop();
     Delay1ms(0xff);
     //*************狀態設置2*************
     I2C_Start();
     ack=I2C_Send_Byte(0x62);           //發送寫控制位 0x62=寫狀態寄存器2
     if(ack)while(1); 
     ack=I2C_Send_Byte(0x80);           //0x10=32khz;  0xc0=每分鐘變化一次;0x80=固定頻率輸出.
  	 if(ack)while(1);  
     I2C_Stop(); 
     Delay1ms(0xff); 
     //**********寫INT1寄存器1************
     I2C_Start(); 
     ack=I2C_Send_Byte(0x68);           //發送寫控制位,寫INT1寄存器1
     if(ack)while(1);
     ack=I2C_Send_Byte(0x40);           //設定輸出頻率 =每秒16次)
 	 if(ack)while(1);   
     I2C_Stop();  
     //for(read_data=0;read_data<7;read_data++)time_s3530[read_data]=time_code[read_data];
	 write_rtc_time();                  //寫入新的系統時間。
     Delay1ms(0xff);  
	 }     
  else Delay1ms(0xff);
  return; 
}    
//************************************************

//***********設定RTC的頻率輸出*********
void Set_Rtc_Status_Register(uchar a) 
{                    
bit ack;               
 //*************狀態設置*************
  I2C_Start();                    
    ack=I2C_Send_Byte(0x62);           //發送寫控制位 0x62=寫狀態寄存器2
    if(ack)while(1);            
    ack=I2C_Send_Byte(0x80);           //0x10=32khz;  0xc0=每分鐘變化一次;0x80=固定頻率輸出.
	if(ack)while(1);           
    I2C_Stop();              
    Delay1ms(0xff);     
    //**********寫INT1寄存器1************
    I2C_Start();                    
    ack=I2C_Send_Byte(0x68);           //發送寫控制位,寫INT1寄存器1
    if(ack)while(1);             
    ack=I2C_Send_Byte(a);              //設定輸出頻率(0x20=每秒4次,0x40=每秒2次,0x80=每秒1次)
	if(ack)while(1);                
    I2C_Stop();                  
    Delay1ms(0x04);                
}                                   
//**************************************


//***************日期顯示*****************
void Date_display(void)               
{         
  time_ram.year[1]=time_s3530[6]>>4;      
  time_ram.year[0]=time_s3530[6]&0x0f;                  //年
  time_ram.month[1]=time_s3530[5]>>4;         
  time_ram.month[0]=time_s3530[5]&0x0f;                 //月
  time_ram.day[1]=time_s3530[4]>>4;             
  time_ram.day[0]=time_s3530[4]&0x0f;                   //日
  time_ram.week=time_s3530[3]&0x0f;                     //星期
  //*******************************************
  switch(KeyFuncIndex)                                  //有分系統時間/日期顯示模式和時間/日期設定模式
     {
     case 10:                                           //系統時間的日期設定顯示
	 case 80:
	 case 81:
	 case 82:
	 case 83:
	 case 84:                                           //在KeyFuncIndex=10 or =83 or =84都運行相同的的函數。
            {
            LCD_ShowString(0x82,"20",2);                
            LCD_ShowData(0x84,time_ram.year[1],1,0);    //年   
            LCD_ShowData(0x85,time_ram.year[0],1,0); 
            LCD_ShowString(0x86,"/",1);  
            LCD_ShowData(0x87,time_ram.month[1],1,0);   //月
            LCD_ShowData(0x88,time_ram.month[0],1,0);
            LCD_ShowString(0x89,"/",1);  
            LCD_ShowData(0x8a,time_ram.day[1],1,0);     //日
            LCD_ShowData(0x8b,time_ram.day[0],1,0);      
            LCD_ShowString(0x8c,"  W",3);  
            LCD_ShowData(0x8f,time_ram.week,1,0);       //星期
	        }
			break;

	 case 93: case 94: case 95: case 96:case 97:	             //鬧鐘時間的日期設定顯示
	       {
           if(time_s3530[6]==0xbb)LCD_ShowString(0x82,"----",4);
           else 
               { 
               LCD_ShowString(0x82,"20",2);                
               LCD_ShowData(0x84,time_ram.year[1],1,0);          //年   
               LCD_ShowData(0x85,time_ram.year[0],1,0); 
	           }
            LCD_ShowString(0x86,"/",1);           
            if(time_s3530[5]==0xbb)LCD_ShowString(0x87,"--",2); 
            else
               {
               LCD_ShowData(0x87,time_ram.month[1],1,0);         //月
               LCD_ShowData(0x88,time_ram.month[0],1,0); 
	           }
            LCD_ShowString(0x89,"/",1);  
            if(time_s3530[4]==0xbb)LCD_ShowString(0x8a,"--",2); 
            else
               {
               LCD_ShowData(0x8a,time_ram.day[1],1,0);           //日
               LCD_ShowData(0x8b,time_ram.day[0],1,0); 
	           }
            LCD_ShowString(0x8c,"  ",2);         
            LCD_ShowString(0x8e,"W",4);  
            if(time_s3530[3]==0x8b)LCD_ShowString(0x8f,"-",1); 
            else LCD_ShowData(0x8f,time_ram.week,1,0);           //星期
            }
			break;

     default:                                            //系統日期顯示
            {
            LCD_ShowString(0xc2,"20",2);                
            LCD_ShowData(0xc4,time_ram.year[1],1,0);     //年   
            LCD_ShowData(0xc5,time_ram.year[0],1,0); 
            LCD_ShowString(0xc6,"/",1);  
            LCD_ShowData(0xc7,time_ram.month[1],1,0);    //月
            LCD_ShowData(0xc8,time_ram.month[0],1,0);
            LCD_ShowString(0xc9,"/",1);  
            LCD_ShowData(0xca,time_ram.day[1],1,0);      //日
            LCD_ShowData(0xcb,time_ram.day[0],1,0);      
            LCD_ShowString(0xcc,"  W",3);  
            LCD_ShowData(0xcf,time_ram.week,1,0);        //星期
	        }
			break;
	 }
  b_REFRESH_DATE_flag=0;
}                                  
      
//********************************************


//**************時間顯示****************
void time_display(void)
{ 
  time_ram.hour[1]=(time_s3530[2]>>4)&0x03;
  time_ram.hour[0]=time_s3530[2]&0x0f;        //時
  time_ram.minute[1]=time_s3530[1]>>4;  
  time_ram.minute[0]=time_s3530[1]&0x0f;      //分
  time_ram.sencond[1]=(time_s3530[0]>>4)&0x0f;
  time_ram.sencond[0]=time_s3530[0]&0x0f;     //秒

  LCD_ShowData(0x85,time_ram.hour[1],1,0);    //時
  LCD_ShowData(0x86,time_ram.hour[0],1,0);           
  
  LCD_ShowString(0x87,":",1);                 //秒指針
 
  LCD_ShowData(0x88,time_ram.minute[1],1,0);  //分
  LCD_ShowData(0x89,time_ram.minute[0],1,0); 

  LCD_ShowString(0x8b,"|",1);                 //秒指針

  LCD_ShowData(0x8c,time_ram.sencond[1],1,0); //秒
  LCD_ShowData(0x8d,time_ram.sencond[0],1,0);
  if(b_REFRESH_DATE_flag)Date_display();//如果需要顯示日期,則可以知道目前是剛剛切換到時間顯示菜單或者是日期更新顯示.
}       
//****************************************************


//**************時間日期設定**********************


//***********時間日期設定*************
void Hour_set_adding(void)        
{
  uchar i;
  time_s3530[2]++;
  if(time_s3530[2]>0x23)time_s3530[2]=0;
  else {
       i=time_s3530[2]&0x0f;;
	   if(i>9)time_s3530[2]=(time_s3530[2]&0xf0)+0x10;  
	   }    
  time_ram.hour[1]=(time_s3530[2]>>4)&0x0f;
  time_ram.hour[0]=time_s3530[2]&0x0f;        //時
  LCD_ShowData(0x85,time_ram.hour[1],1,0);    //時
  LCD_ShowData(0x86,time_ram.hour[0],1,0);      
}

void Hour_set_decrease(void)
{
  uchar i;
  time_s3530[2]--;   
  if(time_s3530[2]<0)time_s3530[2]=0x23;
//  else if(time_s3530[2]>0x23)time_s3530[2]=0;
  else {
       i=time_s3530[2]&0x0f;
	   if(i>9)time_s3530[2]=(time_s3530[2]&0xf0)+0x09;
	   }  
  time_ram.hour[1]=(time_s3530[2]>>4)&0x0f;;
  time_ram.hour[0]=time_s3530[2]&0x0f;;       //時
  LCD_ShowData(0x85,time_ram.hour[1],1,0);    //時
  LCD_ShowData(0x86,time_ram.hour[0],1,0);      
}


//********************************
void Minute_set_adding(void)
{
  uchar i;
  time_s3530[1]++;
  if(time_s3530[1]>0x59)time_s3530[1]=0;
  else {
       i=time_s3530[1]&0x0f;
	   if(i>9)time_s3530[1]=(time_s3530[1]&0xf0)+0x10;  
	   }    
  time_ram.minute[1]=(time_s3530[1]>>4)&0x0f;
  time_ram.minute[0]=time_s3530[1]&0x0f;        //分
  LCD_ShowData(0x88,time_ram.minute[1],1,0);    //分
  LCD_ShowData(0x89,time_ram.minute[0],1,0);     
}

void Minute_set_decrease(void)
{
  uchar i;
  time_s3530[1]--;
  if(time_s3530[1]<0)time_s3530[1]=0x59;
//  else if(time_s3530[1]>0x59)time_s3530[1]=0;
  else {
       i=time_s3530[1]&0x0f;
	   if(i>9)time_s3530[1]=(time_s3530[1]&0xf0)+0x09;
	   }    
  time_ram.minute[1]=(time_s3530[1]>>4)&0x0f;
  time_ram.minute[0]=time_s3530[1]&0x0f;        //分
  LCD_ShowData(0x88,time_ram.minute[1],1,0);    //分
  LCD_ShowData(0x89,time_ram.minute[0],1,0);      
}

//****************
void Sencond_set_adding(void)
{
  uchar i;
  time_s3530[0]++;
  if(time_s3530[0]>0x59)time_s3530[0]=0;
  else {
       i=time_s3530[0]&0x0f;
	   if(i>9)time_s3530[0]=(time_s3530[0]&0xf0)+0x10;  
	   }    
  time_ram.sencond[1]=(time_s3530[0]>>4)&0x0f;
  time_ram.sencond[0]=time_s3530[0]&0x0f;        //秒
  LCD_ShowData(0x8c,time_ram.sencond[1],1,0);    //秒
  LCD_ShowData(0x8d,time_ram.sencond[0],1,0);      
}

void Sencond_set_decrease(void)
{
  uchar i;
  time_s3530[0]--;
  if(time_s3530[0]<0)time_s3530[0]=0x59;
//  else if(time_s3530[0]>0x59)time_s3530[0]=0;
  else {
       i=time_s3530[0]&0x0f;
	   if(i>9)time_s3530[0]=(time_s3530[0]&0xf0)+0x09;
	   }    
  time_ram.sencond[1]=(time_s3530[0]>>4)&0x0f;
  time_ram.sencond[0]=time_s3530[0]&0x0f;       //秒
  LCD_ShowData(0x8c,time_ram.sencond[1],1,0);   //秒
  LCD_ShowData(0x8d,time_ram.sencond[0],1,0);     
}
//****************



/*************************************************

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品沙发午睡系列990531| 欧美日韩视频一区二区| 亚洲精品自拍动漫在线| 欧美xxxx老人做受| 欧美三级韩国三级日本三斤| 国产盗摄精品一区二区三区在线| 五月天激情综合网| 1区2区3区国产精品| 久久新电视剧免费观看| 制服丝袜日韩国产| 欧美亚洲国产一区二区三区va| 国产91高潮流白浆在线麻豆| 欧美aaaaaa午夜精品| 亚洲一区二区在线视频| 亚洲欧洲美洲综合色网| 久久久精品tv| 精品动漫一区二区三区在线观看| 91麻豆精品国产综合久久久久久| 91成人网在线| 在线视频你懂得一区二区三区| 成人免费av资源| 国产麻豆精品久久一二三| 日日摸夜夜添夜夜添亚洲女人| 一区二区成人在线观看| 国产精品国产精品国产专区不片| 国产欧美精品一区二区三区四区 | 色猫猫国产区一区二在线视频| 精品一区二区三区在线视频| 热久久免费视频| 日韩av中文字幕一区二区 | 日韩有码一区二区三区| 亚洲综合激情网| 亚洲日本在线观看| 亚洲日韩欧美一区二区在线| 亚洲色图在线看| 亚洲日本va午夜在线影院| 国产精品久久久久久久久免费樱桃 | 日韩一区二区电影网| 欧美群妇大交群的观看方式| 欧美日韩成人综合天天影院 | 亚洲.国产.中文慕字在线| 亚洲精品高清在线| 亚洲人成网站色在线观看| 18涩涩午夜精品.www| 亚洲免费在线视频一区 二区| 亚洲天堂成人网| 亚洲综合区在线| 午夜电影一区二区三区| 亚洲va韩国va欧美va精品 | 狠狠色丁香久久婷婷综合_中| 麻豆国产一区二区| 不卡的电视剧免费网站有什么| 亚洲柠檬福利资源导航| 亚洲精品videosex极品| 亚洲chinese男男1069| 首页国产欧美日韩丝袜| 精品一二线国产| 成人福利电影精品一区二区在线观看| 成人综合在线观看| 在线视频国内自拍亚洲视频| 这里只有精品视频在线观看| 精品国产免费一区二区三区香蕉| 国产欧美一区二区三区在线看蜜臀| 国产精品久久久久久福利一牛影视| 亚洲欧美另类久久久精品2019| 香蕉影视欧美成人| 久久99精品国产麻豆婷婷| 国产成人精品免费看| 91久久精品国产91性色tv| 91精品国产综合久久精品app| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品免费视频观看| 天天综合网 天天综合色| 国产在线视频一区二区| 91色综合久久久久婷婷| 欧美一级久久久久久久大片| 国产欧美日韩精品a在线观看| 一区二区三区在线观看动漫| 久久国产福利国产秒拍| 91影视在线播放| 欧美大片在线观看一区| 亚洲三级电影全部在线观看高清| 琪琪久久久久日韩精品| 国产一区 二区| 在线欧美日韩国产| 26uuu国产电影一区二区| 依依成人综合视频| 黄页视频在线91| 在线视频你懂得一区二区三区| 久久久久久久久蜜桃| 午夜伦理一区二区| 99re成人精品视频| 久久品道一品道久久精品| 亚洲第一福利一区| 97久久超碰国产精品| 欧美精品一区视频| 香蕉乱码成人久久天堂爱免费| 成人久久久精品乱码一区二区三区| 欧美福利电影网| 综合欧美亚洲日本| 国产白丝精品91爽爽久久| 69堂精品视频| 亚洲成人一区二区| 日本黄色一区二区| 中文在线资源观看网站视频免费不卡 | 精品国产一区二区在线观看| 亚洲精品成人悠悠色影视| 国产呦萝稀缺另类资源| 欧美日韩精品是欧美日韩精品| 国产精品久久99| 国产成人av自拍| 久久综合狠狠综合久久激情 | 午夜精品免费在线观看| av一区二区不卡| 久久久不卡网国产精品一区| 青青草伊人久久| 欧美无砖砖区免费| 亚洲免费在线看| 91麻豆福利精品推荐| 国产精品色噜噜| 国产精品一区久久久久| 日韩三级在线观看| 日本在线不卡视频| 欧美区在线观看| 偷窥少妇高潮呻吟av久久免费| 日本久久一区二区三区| 亚洲图片欧美激情| 成人激情小说网站| 中文字幕在线不卡一区二区三区| 国产高清在线精品| 久久综合精品国产一区二区三区 | 久久久久国产精品麻豆ai换脸| 精品一区二区三区免费| 日韩欧美一区二区免费| 美女视频网站久久| 日韩精品一区二区三区蜜臀| 精品一区二区免费| 久久亚洲一区二区三区明星换脸| 久久av资源站| 国产婷婷精品av在线| 福利一区福利二区| 国产精品网站导航| 91在线观看成人| 亚洲综合色在线| 91精品免费在线观看| 日本不卡一区二区| 久久影院午夜论| 成人免费看片app下载| 中文字幕中文乱码欧美一区二区| 成人黄色大片在线观看| 亚洲乱码国产乱码精品精98午夜| 久久国产人妖系列| 国产精品网曝门| 在线精品亚洲一区二区不卡| 日本中文字幕一区| 国产午夜亚洲精品理论片色戒 | 欧美专区亚洲专区| 男人的j进女人的j一区| 亚洲精品一区二区三区蜜桃下载| 国产精品一区不卡| 最新成人av在线| 欧美伦理影视网| 国产精品888| 亚洲综合色成人| 2022国产精品视频| 99久久精品免费看国产| 亚瑟在线精品视频| 国产性色一区二区| 欧美在线观看视频一区二区三区| 日韩精品一二三| 中文字幕精品—区二区四季| 色婷婷精品久久二区二区蜜臀av | 欧美精品久久久久久久多人混战 | 国产精品国产三级国产aⅴ无密码| 91国偷自产一区二区开放时间 | 91麻豆精品国产自产在线观看一区| 国产综合久久久久久鬼色| 国产精品久久看| 538在线一区二区精品国产| 国产丶欧美丶日本不卡视频| 亚洲精品高清视频在线观看| 欧美成人艳星乳罩| 91黄色免费版| 国产精品538一区二区在线| 亚洲一区影音先锋| 日本一区二区三区在线不卡| 欧美精品一二三| 波多野结衣在线一区| 日韩av中文字幕一区二区| 国产精品电影院| 精品黑人一区二区三区久久| 91浏览器在线视频| 国产精品77777| 免费精品视频最新在线| **欧美大码日韩| 久久亚洲综合色一区二区三区| 欧美中文字幕一区二区三区亚洲| 国产成人一区二区精品非洲| 日日欢夜夜爽一区| 一区二区三区欧美久久|