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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2006|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

DS1302實(shí)時(shí)時(shí)鐘顯示PC

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned  int
sbit DS1302_CLK=P3^2;
sbit DS1302_IO=P3^3;
sbit DS1302_RST=P3^4;
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
sbit Tiaoshi=P3^7;
sbit Inck=P3^6;
uint count;
uchar temp,clsclk;
an=0x90;
Inck_flag=0x20;
typedef struct
{
uchar Second;
uchar Minute;
uchar Hour;
uchar TimeStr[6];
}
SYSTEMTIME;
SYSTEMTIME CurrentTime;
#define DS1302_SECONE 0x80
#define DS1302_MINUTE 0x82
#define DS1302_HOUR 0x84
void mdelay(uint count)
{
uchar i,j;
for(i=0;i<count;i++)
{
for(j=0;j<106;j++);
}
}
void DS1302InputByte(uchar d)
{
uchar i;
ACC=d;
for(i=8;i>0;i--)
{
DS1302_IO=ACC0;
DS1302_CLK=1;
DS1302_CLK=0;
ACC=ACC>>1;
}
}
uchar DS1302OutputByte(void)
{
uchar i;
for(i=8;i>0;i--)
{
ACC=ACC>>1;
ACC7=DS1302_IO;
DS1302_CLK=1;
DS1302_CLK=0;
}
return(ACC);
}
void Write1302(uchar ucAddr,uchar ucDa)
{
DS1302_RST=0;
DS1302_CLK=0;
DS1302_RST=1;
DS1302InputByte(ucAddr);
DS1302InputByte(ucDa);
}
uchar Read1302(ucAddr)
{
uchar ucData;
DS1302_RST=0;
DS1302_CLK=0;
DS1302_RST=1;
DS1302InputByte(ucAddr|0x01);
ucData=DS1302OutputByte();
DS1302_CLK=1;
DS1302_RST=0;
return(ucData);
}
void DS1302_SetTime(uchar Address,uchar Value)
{
Write1302(0x8E,0x00);
Write1302(Address,((Value/10)<<4|(Value%10)));
}
void DS1302_GetTime(SYSTEMTIME*Time)
{
uchar ReadValue;
ReadValue=Read1302(DS1302_SECONE);
Time->Second=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);
ReadValue=Read1302(DS1302_MINUTE);
Time->Minute=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);
ReadValue=Read1302(DS1302_HOUR);
Time->Hour=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);
}
void TimeToStr(SYSTEMTIME*Time)
{
Time->TimeStr[0]=Time->Hour/10;
Time->TimeStr[1]=Time->Hour%10;

Time->TimeStr[2]=Time->Minute/10;
Time->TimeStr[3]=Time->Minute%10;

Time->TimeStr[4]=Time->Second/10;
Time->TimeStr[5]=Time->Second%10;
}
void Dis(SYSTEMTIME*Time)
{
uchar disbit,shifb;
DS1302_GetTime(Time);
TimeToStr(Time);
disbit=1;
switch(count)
{
case 0:for(shifb=0;shifb<6;shifb++)
{
_nop_();_nop_();
P1=Time->TimeStr[shifb];
P2=_crol_(disbit,shifb);
mdelay(6);
P2=0;
}
break;

case 1:for(shifb=0;shifb<2;shifb++)
{
_nop_();_nop_();
P1=Time->TimeStr[shifb];
P2=_crol_(disbit,shifb);
mdelay(6);
P2=0;
}
break;
case 2:for(shifb=2;shifb<4;shifb++)
{
_nop_();_nop_();
P1=Time->TimeStr[shifb];
P2=_crol_(disbit,shifb);
mdelay(6);
P2=0;
}
break;
case 3:for(shifb=4;shifb<6;shifb++)
{
_nop_();_nop_();
P1=Time->TimeStr[shifb];
P2=_crol_(disbit,shifb);
mdelay(6);
P2=0;
}
break;
case 4:count=0;break;
default:count=0;
break;
}
}
void Setkey()
{
if(Tiaoshi==0)
{
mdelay(8);
count=count+1;
if(count==4)
count=0;
while(Tiaoshi==0);
}
}
void Inckey()
{
if(Inck==0)
{
mdelay(8);
switch(count)
{
case 1:temp=Read1302(DS1302_HOUR);
temp=((temp&0x70)>>4)*10+(temp&0x0F);
temp=temp+1;
if(temp>=24)
temp=0;
Inck_flag=1;
break;

case 2:         temp=Read1302(DS1302_MINUTE);
temp=((temp&0x70)>>4)*10+(temp&0x0F);
temp=temp+1;
Inck_flag=1;
if(temp>=60)
temp=0;
break;

case 3:         temp=Read1302(DS1302_SECONE);
temp=((temp&0x70)>>4)*10+(temp&0x0F);
temp=temp+1;
Inck_flag=1;
if(temp>=60)
temp=0;
break;
default :Inck_flag=0;break;
}
while(Inck==0);
}
}
void Keydone()
{
uchar clsclk;
if(count!=0)
{
Write1302(0x8e,0x00);
clsclk=Read1302(0x80);
Write1302(0x80,clsclk|0x80);
Write1302(0x8e,0x80);
}
Setkey();
switch(count)
{
case 1:do
{
Inckey();
if(Inck_flag==1)
{
temp=(temp/10)<<4|temp%10;
Write1302(0x8e,0x00);
Write1302(0x84,temp);
Write1302(0x8e,0x80);
Inck_flag=0;
}
Dis(&CurrentTime);
}
while(count==2);break;

case 2:do
{
Inckey();
if(Inck_flag==1)
{
temp=(temp/10)<<4|temp%10;
Write1302(0x8e,0x00);
Write1302(0x82,temp);
Write1302(0x8e,0x80);
Inck_flag=0;
}
Dis(&CurrentTime);
}
while(count==3);break;

case 3:do
{
Inckey();
if(Inck_flag==1)
{
temp=(temp/10)<<4|temp%10;
Write1302(0x8e,0x00);
Write1302(0x80,temp|0x80);
Write1302(0x8e,0x80);
Inck_flag=0;
}
Dis(&CurrentTime);
}
while(count==4);break;
case 4:count=0;
break;
default:break;
}
}

void main()
{
Inck_flag=0;
while(1)
{
Dis(&CurrentTime);
Setkey();
if(count!=0)
Keydone();
if(count==0)
{
clsclk=Read1302(0x80);
Write1302(0x80,clsclk&0x7f);
}
}
}


36.zip

123.67 KB, 下載次數(shù): 9, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲性视频 | 亚洲欧洲一区二区 | 日本爱爱| 黄色一级视频 | 国产欧美精品一区二区三区 | 成年人在线观看视频 | 久久综合九色综合欧美狠狠 | 毛片网站在线观看视频 | 成人h动漫精品一区二区器材 | 欧美一区二区三区免费在线观看 | 夜夜爽99久久国产综合精品女不卡 | 亚洲精品乱码久久久久久黑人 | 日韩在线观看中文字幕 | www.99精品 | 免费人成在线观看网站 | 日韩av最新网址 | 久草精品视频 | 在线不卡视频 | av片在线观看 | 在线小视频| 国产免国产免费 | www.狠狠干| 久久久精品影院 | 在线播放国产一区二区三区 | 超碰在线影院 | 三级在线免费观看 | 久久精品超碰 | 国产一区二区三区四区在线观看 | 欧美成人精品一区二区男人看 | 久久99精品久久久久 | 日韩一区中文字幕 | 日韩成人在线免费观看 | 在线欧美a| 99久久免费精品国产免费高清 | 蜜桃在线视频 | 九九热这里只有精品在线观看 | 国产精品久久久久久久久免费软件 | 国产免费视频 | 日日夜夜狠狠操 | 伊人狠狠操 | 亚洲精品一区av在线播放 |