?? ds1305.txt
字號:
#define unsigned char uchar
SBIT clk_ce=P1^3; /*時鐘片選*/
SBIT sclk_bit=P2^4; /*時鐘脈沖輸入端*/
SBIT sdi_bit=P2^6; /*時鐘輸入引腳*/
SBIT sdu_bit=P2^7; /*時鐘輸出引腳*/
uchar y_m_d_h_m[6]={0x01,0x05,0x19,0x23,0x10,0x00};
uchar dispclock[]={0x12,0x10,0x10,0x11,0x0d,0x10,0x17,0x0d,0x11,0x10,0x00,0x11,0x12,0x1a,0x11,0x18,0x1a,0x11,0x18};
/*年、月、日、星期、時、分、秒*/
initclock() /*時鐘初始化*/
{
sclk_bit=0;
dswr(0x8f);/* 往控制寄存器寫0x05*/
dswr(0x05);
dswr(0x90); /*往狀態寄存器寫0x01 */
dswr(0x01);
dswr(0x91); /*往涓流充電寄存器寫0xa5*/
dswr(0xa5);
}
dswr(uchar ac) /*ACC中的數據從高位開始送入ds1305 */
{
uchar i;
clk_ce=1;
sdu_bit=1;
for (i=0;i<8;i++)
{
sdi_bit=(ac&0x80==0x80)?1:0;
sclk_bit=1;
sclk_bit=0;
ac=ac<<1;
}
}
uchar dsrd() /*讀時鐘*/
{
uchar i,j,ac=0,x;
clk_ce=1;
for (i=0;i<=7;i++)
{
sclk_bit=1;
j=2;
while (j--);
sclk_bit=0;
x=P2;
ac=(x&0x80)>>i ac;/*高位在前,底位在后*/
}
return (ac);
clk_ce=0;
}
clockset() /*時鐘設置*/
{
uchar i,j;
sclk_bit=0;
dswr(0x8f);/* 往控制寄存器寫0x05*/
dswr(0x05);
clk_ce=0;
sclk_bit=0;
for (i=0x80,j=0;i<=0x86;i++)
if(i!=0x83)
{
clk_ce=1;
dswr(i);/*address*/
dswr(y_m_d_h_m[5-j]);/*data*/
j++;
clk_ce=0;
}
clockwp();
}
clockwp() /*時鐘寫保護*/
{
clk_ce=1;
dswr(0x8f);
dswr(0x45);
clk_ce=0;
}
clockread() /* 讀時鐘數據送入clock數組*/
{
uchar i,ac,j,m=1;
for (i=0;i<7;i++)
{
dswr(i);
ac=dsrd() ;
switch (i)
{
case 0:
case 1:
case 2: clock[i]=ac ;break;
case 3: break;
default:clock[i-1]=ac;
}
clk_ce=0;
}
}
clockdisp() /*把時間顯示數組中的數據顯示*/
{
uchar j=DELAY;
uchar ac,i;
for (i=0;i<=5;i++) /* 把clock 數組中的BCD碼轉換成clockdisp的非壓縮BCD碼*/
{
ac=clock[i];
ac= ac>>4;
ac+=0x10;
dispclock[2+3*(5-i)]=ac;
ac=clock[i];
ac=ac & 0x0f;
ac+=0x10;
dispclock[2+3*(5-i)+1]=ac;
}
/*以下是對液晶進行操作*/
data_wri(0);
data_wri(0);
com_wri(0x24);
com_wri(0xb0);
for (i=0;i<19;i++)
{
wait3();
lcd_ce=0;
PLCD_DATA=dispclock[i];
while (j--);
lcd_ce=1;
j=DELAY;
}
lcd_ce=0;
com_wri(0xb2);
lcd_ce=1;
}
clockalarm()
{
uchar set[]={0x87,0x81,0x88,0x81,0x89,0x80,0x8a,
0x80,0x8f,0x05,0x90,0x01,0x91,0xa5};
uchar i,j;
clk_ce=0;
sclk_bit=0;
i=0;
for (j=0;j<7;j++)
{
dswr(set[i++]);
dswr(set[i++]);
clk_ce=0;
i=2;
while (i--);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -