0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STC單片機(jī)控制DS1302程序 (C程序)

算法&編程學(xué)院 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 2018-02-03 03:14 ? 次閱讀

#include"REG51.H"

#include"INTRINS.H"

typedefunsignedcharBYTE;

sbitSCLK=P1^0;//DS1302時(shí)鐘口P1.0

sbitIO=P1^1;//DS1302數(shù)據(jù)口P1.1
sbitRST=P1^2;//DS1302片選口P1.2

//秒分時(shí)日月星期年
BYTEcodeinit[]={0x00,0x00,0x20,0x01,0x01,0x05,0x10};
BYTEdatanow[7];

voidDS1302_Initial();
voidDS1302_SetTime(BYTE*p);
voidDS1302_GetTime(BYTE*p);

voidmain()
{
DS1302_Initial();//初始化DS1302
DS1302_SetTime(init);//設(shè)置初始時(shí)間

DS1302_GetTime(now);//讀取當(dāng)前時(shí)間
while(1);
}

/**************************************
延時(shí)X微秒(STC12C5A60S2@12M)
不同的工作環(huán)境,需要調(diào)整此函數(shù)
此延時(shí)函數(shù)是使用1T的指令周期進(jìn)行計(jì)算,與傳統(tǒng)的12T的MCU不同
**************************************/
voidDelay()
{
_nop_();
_nop_();
}

/**************************************
從DS1302讀1字節(jié)數(shù)據(jù)
**************************************/
BYTEDS1302_ReadByte()
{
BYTEi;
BYTEdat=0;

for(i=0;i>=1;//數(shù)據(jù)右移一位
if(IO)dat|=0x80;//讀取數(shù)據(jù)
SCLK=1;//時(shí)鐘線(xiàn)拉高
Delay();//延時(shí)等待
}

returndat;
}

/**************************************
向DS1302寫(xiě)1字節(jié)數(shù)據(jù)
**************************************/
voidDS1302_WriteByte(BYTEdat)
{
chari;

for(i=0;i>=1;//移出數(shù)據(jù)
IO=CY;//送出到端口
SCLK=1;//時(shí)鐘線(xiàn)拉高
Delay();//延時(shí)等待
}
}

/**************************************
讀DS1302某地址的的數(shù)據(jù)
**************************************/
BYTEDS1302_ReadData(BYTEaddr)
{
BYTEdat;

RST=0;
Delay();
SCLK=0;
Delay();
RST=1;
Delay();
DS1302_WriteByte(addr);//寫(xiě)地址
dat=DS1302_ReadByte();//讀數(shù)據(jù)
SCLK=1;
RST=0;

returndat;
}

/**************************************
往DS1302的某個(gè)地址寫(xiě)入數(shù)據(jù)
**************************************/
voidDS1302_WritEDAta(BYTEaddr,BYTEdat)
{
RST=0;
Delay();
SCLK=0;
Delay();
RST=1;
Delay();
DS1302_WriteByte(addr);//寫(xiě)地址
DS1302_WriteByte(dat);//寫(xiě)數(shù)據(jù)
SCLK=1;
RST=0;
}

/**************************************
寫(xiě)入初始時(shí)間
**************************************/
voidDS1302_SetTime(BYTE*p)
{
BYTEaddr=0x80;
BYTEn=7;

DS1302_WriteData(0x8e,0x00);//允許寫(xiě)操作
while(n--)
{
DS1302_WriteData(addr,*p++);
addr+=2;
}
DS1302_WriteData(0x8e,0x80);//寫(xiě)保護(hù)
}

/**************************************
讀取當(dāng)前時(shí)間
**************************************/
voidDS1302_GetTime(BYTE*p)
{
BYTEaddr=0x81;
BYTEn=7;

while(n--)
{
*p++=DS1302_ReadData(addr);
addr+=2;
}
}

/**************************************
初始化DS1302
**************************************/
voidDS1302_Initial()
{
RST=0;
SCLK=0;
DS1302_WriteData(0x8e,0x00);//允許寫(xiě)操作
DS1302_WriteData(0x80,0x00);//時(shí)鐘啟動(dòng)
DS1302_WriteData(0x90,0xa6);//一個(gè)二極管+4K電阻充電
DS1302_WriteData(0x8e,0x80);//寫(xiě)保護(hù)
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6023

    文章

    44375

    瀏覽量

    628288
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PIC單片機(jī)控制時(shí)鐘芯片DS1302匯編程序

    PIC單片機(jī)控制時(shí)鐘芯片DS1302匯編程序
    發(fā)表于 05-24 09:56 ?1724次閱讀

    單片機(jī)制作RTC實(shí)時(shí)時(shí)鐘(DS1302)程序C語(yǔ)言版】

    單片機(jī)制作RTC實(shí)時(shí)時(shí)鐘(DS1302)程序C語(yǔ)言版】,感興趣的可以看看。
    發(fā)表于 12-30 13:48 ?0次下載

    基于單片機(jī)的綜合應(yīng)用程序ds1302送1602【C語(yǔ)言】

    基于單片機(jī)的綜合應(yīng)用程序ds1302送1602【C語(yǔ)言】
    發(fā)表于 01-06 14:22 ?6次下載

    基于單片機(jī)的綜合應(yīng)用程序ds1302送1602【C語(yǔ)言】顯示時(shí)

    基于單片機(jī)的綜合應(yīng)用程序ds1302送1602【C語(yǔ)言】 顯示時(shí)間
    發(fā)表于 01-06 14:21 ?4次下載

    基于單片機(jī)的綜合應(yīng)用程序ds1302送1602_C語(yǔ)言_顯示日期

    基于單片機(jī)的綜合應(yīng)用程序ds1302送1602【C語(yǔ)言】 顯示日期和時(shí)間
    發(fā)表于 01-06 14:20 ?7次下載

    51單片機(jī)DS1302實(shí)時(shí)時(shí)鐘驅(qū)動(dòng)程序

    本文首先闡述了ds1302引腳及功能,其次介紹了DS1302控制字節(jié)及電路圖,最后詳細(xì)介紹了51單片機(jī)DS1302實(shí)時(shí)時(shí)鐘驅(qū)動(dòng)
    發(fā)表于 05-15 08:45 ?9275次閱讀
    51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>DS1302</b>實(shí)時(shí)時(shí)鐘驅(qū)動(dòng)<b class='flag-5'>程序</b>

    使用單片機(jī)應(yīng)用DS1302的時(shí)鐘程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)應(yīng)用DS1302的時(shí)鐘程序免費(fèi)下載。
    發(fā)表于 08-20 17:31 ?7次下載
    使用<b class='flag-5'>單片機(jī)</b>應(yīng)用<b class='flag-5'>DS1302</b>的時(shí)鐘<b class='flag-5'>程序</b>免費(fèi)下載

    51單片機(jī)DS1302時(shí)鐘驅(qū)動(dòng)程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機(jī)DS1302時(shí)鐘驅(qū)動(dòng)程序免費(fèi)下載。
    發(fā)表于 07-10 17:40 ?14次下載
    51<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>DS1302</b>時(shí)鐘驅(qū)動(dòng)<b class='flag-5'>程序</b>免費(fèi)下載

    使用51單片機(jī)DS1302芯片設(shè)計(jì)的LED時(shí)鐘的C語(yǔ)言程序和工程文件

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)DS1302芯片設(shè)計(jì)的LED時(shí)鐘的C語(yǔ)言程序和工程文件免費(fèi)下載。
    發(fā)表于 09-03 08:00 ?7次下載
    使用51<b class='flag-5'>單片機(jī)</b>和<b class='flag-5'>DS1302</b>芯片設(shè)計(jì)的LED時(shí)鐘的<b class='flag-5'>C</b>語(yǔ)言<b class='flag-5'>程序</b>和工程文件

    基于51單片機(jī)多功能時(shí)鐘DS1302仿真設(shè)計(jì)(包含源程序及仿真)

    基于51單片機(jī)多功能時(shí)鐘DS1302仿真設(shè)計(jì),資料包含源程序及仿真文件
    發(fā)表于 04-20 16:28 ?22次下載

    基于單片機(jī)控制DS1302時(shí)鐘帶VB上位機(jī)包含proteus仿真

    基于單片機(jī)控制DS1302時(shí)鐘帶VB上位機(jī)包含proteus仿真源程序
    發(fā)表于 04-20 15:40 ?2次下載

    基于89C51單片機(jī)的1602液晶顯示DS1302時(shí)鐘源程序

    基于89C51單片機(jī)的1602液晶顯示DS1302時(shí)鐘源程序
    發(fā)表于 05-16 10:27 ?7次下載

    基于89C51單片機(jī)DS1302時(shí)鐘原理源程序

    基于89C51單片機(jī)DS1302 時(shí)鐘原理源程序
    發(fā)表于 05-16 10:05 ?5次下載

    基于89C51單片機(jī)DS1302可調(diào)時(shí)鐘源程序

    基于89C51單片機(jī)DS1302可調(diào)時(shí)鐘源程序
    發(fā)表于 05-16 10:05 ?2次下載

    基于89C51單片機(jī)DS1302時(shí)鐘串口自動(dòng)更新時(shí)間源程序

    基于89C51單片機(jī)DS1302時(shí)鐘串口自動(dòng)更新時(shí)間源程序
    發(fā)表于 05-16 10:04 ?1次下載