日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] #include"REG51.H"#include"INTRINS.H"typedefunsignedcharBYTE;sbitSCLK=P1^0;//DS1302時(shí)鐘口P1.0sbitIO=P1^1;//DS1302數(shù)據(jù)口P1.1sbitRST=P1^2;//DS1302片選口P1.2//秒分時(shí)日月星期年BYTEcodeinit[]={

#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<8;i++)//8位計(jì)數(shù)器
{
SCLK=0;//時(shí)鐘線拉低
Delay();//延時(shí)等待
dat>>=1;//數(shù)據(jù)右移一位
if(IO)dat|=0x80;//讀取數(shù)據(jù)
SCLK=1;//時(shí)鐘線拉高
Delay();//延時(shí)等待
}

returndat;
}

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

for(i=0;i<8;i++)//8位計(jì)數(shù)器
{
SCLK=0;//時(shí)鐘線拉低
Delay();//延時(shí)等待
dat>>=1;//移出數(shù)據(jù)
IO=CY;//送出到端口
SCLK=1;//時(shí)鐘線拉高
Delay();//延時(shí)等待
}
}

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

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

returndat;
}

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

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

DS1302_WriteData(0x8e,0x00);//允許寫操作
while(n--)
{
DS1302_WriteData(addr,*p++);
addr+=2;
}
DS1302_WriteData(0x8e,0x80);//寫保護(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);//允許寫操作
DS1302_WriteData(0x80,0x00);//時(shí)鐘啟動(dòng)
DS1302_WriteData(0x90,0xa6);//一個(gè)二極管+4K電阻充電
DS1302_WriteData(0x8e,0x80);//寫保護(hù)
}


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


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉