久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

DS1302時鐘芯片程序(51)

作者:佚名   來源:本站原創   點擊數:  更新時間:2010年05月28日   【字體:
/******************************************************
  #include < reg52.h>
  DS1302時鐘程序  
*******************************************************/
sbit ACC_0 = ACC^0;
sbit ACC_1 = ACC^1;
sbit ACC_2 = ACC^2;
sbit ACC_3 = ACC^3;
sbit ACC_4 = ACC^4;
sbit ACC_5 = ACC^5;
sbit ACC_6 = ACC^6;
sbit ACC_7 = ACC^7; 
//**************************
sbit T_SCLK = P3^5;                    // DS1302時鐘信號       7腳
sbit T_DIO= P3^6;                      // DS1302數據信號       6腳
sbit T_CE = P3^7;
//**************************
uchar   sec,min,hour,day,month,week,year;    //時間變量
//**************************
uchar  DS1302_addr[]={
      0x80, //0,寫入秒(Second)寄存器
      0x81, //1,讀出秒(Second)寄存器
      0x82, //2,寫入分(Minute)寄存器
      0x83, //3,讀出分(Minute)寄存器
      0x84, //4,寫入小時(Hour)寄存器
      0x85, //5,讀出小時(Hour)寄存器
      0x86, //6,寫入日(Day)寄存器
      0x87, //7,讀出日(Day)寄存器
      0x88, //8,寫入月份(Month)寄存器
      0x89, //9,讀出月份(Month)寄存器
      0x8a, //10,寫入周(Week)寄存器
      0x8b, //11,讀出周(Week)寄存器
      0x8c, //12,寫入年份(Year)寄存器
      0x8d, //13,讀出年份(Year)寄存器
      0x8e, //14,寫保護_寄存器
      0x8f  //15,涓流充電

}  ;

//***************寫入一字節***********************
void DS1302_Input_Byte(uchar Input)  //向時鐘IC寫入一字節
{   
  uchar i;
    ACC =Input;
    for(i=8; i>0; i--)
    {  
        T_DIO = ACC_0;            //相當于匯編中的 RRC
  T_SCLK = 1;
  T_SCLK = 0;
        ACC = ACC >> 1; 
    }   
}
//**************讀取一字節()*************************
uchar DS1302_Output_Byte(void)      //從時鐘IC讀取一字節()
{ 
    uchar i;   
    for(i=8; i>0; i--)
    {  
     ACC>>=1; T_DIO= 1;
     ACC_7 = T_DIO;
   T_SCLK = 1;                 //相當于匯編中的 RRC 
         T_SCLK = 0;       
    } 
    return(ACC); 
}
//**************向時鐘IC寫數據*************************
void DS1302_Write_one( uchar addr,dat )       // 寫入地址、數據子程序 
{
       T_CE=0;                             //T_CE引腳為低,數據傳送中止
       T_SCLK=0;                          //清零時鐘總線
       T_CE = 1;                          //T_CE引腳為高,邏輯控制有效
    DS1302_Input_Byte(addr);           // 地址,命令 
       DS1302_Input_Byte(dat);          // 寫1Byte數據
       T_SCLK = 1;
       T_CE = 0;     
}
//************從數據讀取數據*****************************
uchar DS1302_Read ( uchar addr )    //數據讀取子程序
{
      uchar date;
       T_CE=0;           
       T_SCLK=0;             
       T_CE = 1; 
  DS1302_Input_Byte(addr);        // 地址,命令 
     date = DS1302_Output_Byte();         // 讀1Byte數據
     T_SCLK = 1;
     T_CE = 0;
     return(date);
}
//************從數據讀取數據****************************
void DS1302_Write( uchar sec_w,min_w,hour_w,day_w,month_w,week_w,year_w )
{
        DS1302_Write_one(0x8e,0x00);
  DS1302_Write_one(0x80,sec_w);
  DS1302_Write_one(0x82,min_w);
  DS1302_Write_one(0x84,hour_w);
  DS1302_Write_one(0x86,day_w);
  DS1302_Write_one(0x88,month_w);
  DS1302_Write_one(0x8a,week_w);
  DS1302_Write_one(0x8c,year_w);
  DS1302_Write_one(0x8e,0x80);
}  
  
//************從數據讀取數據*****************************
/*void DS1302_readtime()                           
{
    sec=DS1302_Read(0x81);                    //讀秒
    min=DS1302_Read(0x83);                    //讀分
    hour=DS1302_Read(0x85);                   //讀時
    day=DS1302_Read(0x87);                    //讀日
    month=DS1302_Read(0x89);                  //讀月
    year=DS1302_Read(0x8d);     //讀年
    week=DS1302_Read(0x8b);      //讀星期
}*/
 //************數碼管DS1302顯示*****************************
void DS1302_SMG_display()
{ 
 /*  DS1302_readtime();
  SMG_display(6,sec%0x10);
  delay(1);
  SMG_display(5,sec/0x10);
  delay(1);
  SMG_display(4,min%0x10);
  delay(1);
  SMG_display(3,min/0x10);
   delay(1);
  SMG_display(2,hour%0x10);
  delay(1);
  SMG_display(1,hour/0x10);
  delay(1);
  */

////////////////////////////////////////////
   uchar i=0,a=6,*p;
   p=DS1302_addr;
   *p++;
   for(i=0;i<3;i++)
   {
   SMG_display(a,DS1302_Read(*p)%0x10);
   a--;
   delay(0);
   SMG_display(a,DS1302_Read(*p)/0x10); 
   delay(0);
   a--;
   *p++;
   *p++;
   }
   delay(0); 
    
} 
//注意:有些單片機,需將T_DIO信號腳接個上拉電阻,否會出現數據讀出錯誤.
關閉窗口

相關文章

主站蜘蛛池模板: 亚洲精选久久 | 久久精品亚洲精品国产欧美 | 日韩国产精品一区二区三区 | 天堂久久av | 91欧美激情一区二区三区成人 | 国产精品欧美精品 | 一级黄色毛片免费 | 欧美综合国产精品久久丁香 | 国产二区三区 | 精品日韩一区 | 日韩在线免费播放 | 日韩精品一区二区三区视频播放 | 91精品久久久久久久久中文字幕 | 欧美91| 狠狠爱免费视频 | 国产成年人小视频 | 99久久精品免费看国产四区 | 国产99久久精品一区二区永久免费 | 国产91丝袜在线18 | 欧美二级 | 亚洲成人午夜在线 | 欧美午夜一区 | 亚洲高清在线观看 | 欧美日韩综合一区 | 香蕉一区 | 久久精品中文字幕 | 中文字幕一区二区三区乱码在线 | 天天干天天插天天 | 欧美涩涩网 | 欧美专区在线视频 | 欧美片网站免费 | 欧美三级在线 | 久久99国产精品久久99果冻传媒 | 精品国产乱码久久久久久88av | 亚洲91视频 | 国产精品一区二区三区在线 | 99久久精品免费看国产小宝寻花 | 蜜臀久久99精品久久久久久宅男 | 国产精品久久久久久久久久免费 | 日韩精品免费一区二区在线观看 | 国产xxxx搡xxxxx搡麻豆 |