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

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

51單片機(jī)驅(qū)動(dòng)DS12C887的時(shí)鐘芯片C語(yǔ)言程序

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年04月11日   【字體:
      本程序旨在讀出DS12C887的時(shí)間,顯示部分只做了分和秒的部分,已通過(guò)測(cè)試,詳細(xì)注釋很好用的。

#include < absacc.h >  

#include < reg51.h >  

#define uchar unsigned char  

#define MCA XBYTE [ 0xbf0a ]    /*寄存器A*/  

#define MCB XBYTE [ 0xbf0b ]    /* 寄存器B*/  

#define MCC XBYTE [ 0xbf0c ]    /* 寄存器C*/  

#define MCD XBYTE [ 0xbf0d ]    /*寄存器D */  

#define HOURW XBYTE [ 0xbf05 ]  /*時(shí)報(bào)警*/  

#define SECONDW XBYTE [ 0xbf01 ]  /*秒報(bào)警*/  

#define YEAR XBYTE [ 0xbf09 ]  

#define MONTH XBYTE [ 0xbf08 ]  

#define DAY XBYTE [ 0xbf07 ]  

#define HOUR XBYTE [ 0xbf04 ]  

#define MU XBYTE [ 0xbf02 ]    

#define SECOND XBYTE [ 0xbf00 ]  

sbit uip_bit = ACC^7;   /* 保存更新周期標(biāo)志位*/  

uchar  dt[6] = { 0x06,0x01,0x01,0x00,0x00,0x00 };  /* 時(shí)標(biāo)緩沖區(qū)及初值 ,設(shè)置時(shí)間,用于時(shí)間校準(zhǔn)?*/  

sbit bita=P2^0;  

sbit bitb=P2^1;  

sbit bitc=P2^2;  

sbit bitd=P2^3;  

code uchar dispcode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段碼  

uchar dispbit[4]={0,0,0,0};/*顯示位*/  

/*顯示函數(shù)*/  

void disp()  

    {  

    uchar k;  

    bita=1;bitb=bitc=bitd=0;  

    P0=dispcode[dispbit[0]];  

    for(k=0;k<150;k++);  

    bita=bitc=bitd=0;bitb=1;      

    P0=dispcode[dispbit[1]];      

    for(k=0;k<150;k++);        

    bita=bitb=bitd=0;bitc=1;        

    P0=dispcode[dispbit[2]];        

    for(k=0;k<150;k++);        

    bita=bitb=bitc=0;bitd=1;        

    P0=dispcode[dispbit[3]];        

    for(k=0;k<150;k++);      

    }  

 

/* 初始化工作狀態(tài)函數(shù)*/  

void initstat ( void )  

{  

   MCA = 0x2f;   /*選時(shí)鐘32.768KHz,中斷周期500ms*/  

   ACC = MCC;  /* 清中斷請(qǐng)求標(biāo)志 */  

   ACC = MCD;  /* VRT = 1,數(shù)據(jù)有效 */  

   /* 中斷允許,時(shí)標(biāo)十進(jìn)制,24小時(shí)制,芯片開(kāi)始工作*/  

   MCB = 0x72;  

/*  HOURW = 0x17;*/  /*每小時(shí)報(bào)警中斷*/  

   SECONDW=0X3b; /*每秒報(bào)警中斷  , 可以選用,用于顯示秒點(diǎn)的閃動(dòng)*/    

   EA = 1;  

   EX0 = 1;  /* 開(kāi)外部中斷0*/  

}  

/* 寫時(shí)標(biāo)函數(shù) */  

void wMC ( void )  

{  

   MCB = 0x80;   /* 置SET位為1,芯片停止工作 */  

   YEAR=dt[0];  

   MONTH=dt[1];  

   DAY=dt[2];  

   HOUR=dt[3];  

   MU=dt[4];  

   SECOND=dt[5];  

 

}  

 

/* 讀時(shí)標(biāo)函數(shù) */  

void rMC ( void )  

{  

   do  { ACC = MCA; }   /* 讀取UIP位 */  

   while ( uip_bit );        /* 等待周期更新結(jié)束 */  

   dt[0]=YEAR;  

   dt[1]=MONTH;  

   dt[2]=DAY;  

   dt[3]=HOUR;  

   dt[4]=MU;  

   dt[5]=SECOND;  /* 讀時(shí)標(biāo)值到緩沖區(qū) */  

}  

void main ( void )  

{  

   SP=0x60;  

   wMC ( ); /* 調(diào)用寫時(shí)標(biāo)函數(shù) */  

   initstat ( ); /* 調(diào)用初始化工作狀態(tài)函數(shù)*/  

   while (1)  

      {  

       rMC();  

       dispbit[0]=dt[3]/16;  

       dispbit[1]=dt[3]%16;  

       dispbit[2]=dt[4]/16;  

       dispbit[3]=dt[4]%16;  

       disp();  

       }  

}  

/* 外部中斷0服務(wù)函數(shù)*/  

void time ( void ) interrupt 0 using 1  

{  

   ACC = MCC;  /* 讀取寄存器C*/  

   if ( ACC^4 )   rMC ( );  /* 周期更新結(jié)束,讀取時(shí)標(biāo)值*/  

   if ( ACC^5 )   rMC( );  /* 秒報(bào)警*/  

   SECONDW=0x3b;  

/*  HOURW = 0x17; */ /* 每小時(shí)報(bào)警中斷 */  

}   
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 哦┅┅快┅┅用力啊┅aps | 久久艹av | 手机看片福利永久 | 日本黄色免费看 | 国产亚洲欧美日韩高清 | 亚洲一区二区免费 | 亚洲精品18在线观看 | 成人一区二区三区 | 久久日av | 日本视频在线播放 | 国产精品国产三级国产 | 日韩在线精品视频 | 欧美日韩啪啪 | 欧美日韩91 | 日本乱轮视频 | 成人精品在线观看 | 亚洲观看黄色网 | 欧美黄色精品 | 国产不卡视频在线观看 | 不卡免费视频 | 黄色一区二区三区 | 三级久久久 | 成人深夜福利视频 | 人人超碰人人 | 青青草在线观看视频 | 蜜臀久久99精品久久久久宅男 | 神马香蕉久久 | 久久久久国产精品夜夜夜夜夜 | 亚洲影院一区 | 成年人免费看片 | 日韩av在线免费播放 | 国产一区二区三区 | 久久久一| cao视频| 日韩欧美一区二区三区四区 | 黄色伊人| 日韩欧美在线视频观看 | 亚洲激情视频在线观看 | 日韩av免费看 | 国产一区精品在线 | 午夜性色|