求助!時(shí)鐘芯片DS1802編程問(wèn)題!
提問(wèn)者:mldir2013-08-18 00:00
最佳答案
我給你個(gè)1302的吧,你參考下,1302初始化和讀寫部分都沒(méi)采用循環(huán)的,還是容易明白的
#include
sbit clock_clk = P1 ^ 7;//ds1302_clk
sbit clock_dat = P1 ^ 6;//ds1302_dat
sbit clock_rst = P1 ^ 5;//ds1302_rst
//為了編程方便定義的位變量
sbit a0 = ACC ^ 0;
sbit a1 = ACC ^ 1;
sbit a2 = ACC ^ 2;
sbit a3 = ACC ^ 3;
sbit a4 = ACC ^ 4;
sbit a5 = ACC ^ 5;
sbit a6 = ACC ^ 6;
sbit a7 = ACC ^ 7;
/*****************************************************************/
void Delay(int num)//延時(shí)函數(shù)
{
while(num--) ;
}
/*************************1 3 0 2 *****************************/
void clock_out(unsigned char dd)
{
ACC=dd;
clock_dat=a0; clock_clk=1; clock_clk=0;
clock_dat=a1; clock_clk=1; clock_clk=0;
clock_dat=a2; clock_clk=1; clock_clk=0;
clock_dat=a3; clock_clk=1; clock_clk=0;
clock_dat=a4; clock_clk=1; clock_clk=0;
clock_dat=a5; clock_clk=1; clock_clk=0;
clock_dat=a6; clock_clk=1; clock_clk=0;
clock_dat=a7; clock_clk=1; clock_clk=0;
}
unsigned char clock_in(void)
{
clock_dat=1;
a0=clock_dat;
clock_clk=1; clock_clk=0; a1=clock_dat;
clock_clk=1; clock_clk=0; a2=clock_dat;
clock_clk=1; clock_clk=0; a3=clock_dat;
clock_clk=1; clock_clk=0; a4=clock_dat;
clock_clk=1; clock_clk=0; a5=clock_dat;
clock_clk=1; clock_clk=0; a6=clock_dat;
clock_clk=1; clock_clk=0; a7=clock_dat;
return(ACC);
}
unsigned char read_clock(unsigned char ord)
{
unsigned char dd=0;
clock_clk=0;
clock_rst=0;
clock_rst=1;
clock_out(ord);
dd=clock_in();
clock_rst=0;
clock_clk=1;
return(dd);
}
void write_clock(unsigned char ord, unsigned char dd)
{
clock_clk=0;
clock_rst=0;
clock_rst=1;
clock_out(ord);
clock_out(dd);
clock_rst=0;
clock_clk=1;
}
/*--------------------時(shí)鐘的初始化---------------------------*/
void Init_1302(void)
{
write_clock(0x8e,0x00);//close_protect
write_clock(0x8c,0x05);//year
write_clock(0x8a,0x04);//week_day
write_clock(0x88,0x10);//month
write_clock(0x86,0x20);//date
write_clock(0x84,0x12);//hour
write_clock(0x82,0x34);//minute
write_clock(0x80,0x56);//second
write_clock(0x90,0xa5);//supply_power
//write_clock(0x8e,0x80);//open_protect
}
/*******************主函數(shù)************************************/
void main(void)
{
//if(0x80 ==read_clock(0x81))
//{
Init_1302( );//初始化DS1302寄存器
//}
while(1)
{
P0=read_clock(0x81);
}
}
回答者:4j1sale391ak2016-08-18 00:00
DS 5相關(guān)問(wèn)題
-
如果確認(rèn)晶振損壞,建議更換。
提問(wèn)者:gujian75382013-07-02
-
這個(gè)是晶振的問(wèn)題,晶振的精度不夠。
提問(wèn)者:yxvf41252015-08-19
-
BCD碼(16進(jìn)制數(shù))。參考下面的程序(取數(shù)后送1602顯示)
//向LCM中填寫 年 數(shù)據(jù)
void lcm_w_yy(void){
//if(read_clock(0x8d) != yy){
yy =
提問(wèn)者:sbgauge2013-05-01
-
小時(shí)寄存器(85h、84h)的位7用于定義 DS1302是運(yùn)行于12小時(shí) 模式還是24小時(shí)模式。當(dāng)為高時(shí),選擇12小時(shí)模式。在12小時(shí)模式時(shí), 位5是 ,當(dāng)為1時(shí),表示 PM。在24小時(shí)模式時(shí),位5是第二個(gè)10小時(shí) 位。
提問(wèn)者:linda880882014-09-18
-
實(shí)際上左右的 i2c都是通的 你可以看一下電路圖就明白
提問(wèn)者:qwfoy2016-02-17
-
檢查晶振,I2C驅(qū)動(dòng)代碼,芯片手冊(cè)查看讀寫順序,注意12進(jìn)制和24進(jìn)制轉(zhuǎn)換,還有顯示部分。如果都OK還能出問(wèn)題,要么是芯片壞了,要么是很初級(jí)的問(wèn)題,找個(gè)會(huì)的人幫你調(diào)下吧。
提問(wèn)者:q2894842852016-02-07
- DS 5熱門車型
- DS 5同品牌車系
- 上市新車
- 即將上市新車