|
問題一:i = read_ds1302ram(30);//怎么理解???
問題二:if(i != 3)表示的是什么意思,為什么要做這樣的判斷?
uchar code write_add[]={0x80,0x82,0x84,0x86,0x88,0x8c,0x8a}; //寫地址
uchar code read_add[] ={0x81,0x83,0x85,0x87,0x89,0x8d,0x8b}; //讀地址
uchar code init_ds[] ={0x58,0x29,0x07,0x05,0x10,0x14,0x1};
- /*************把數(shù)據(jù)從ds1302 RAM讀出來**0-31*************/
- uchar read_ds1302ram(uchar add)
- {
- add <<= 1; //地址是從第二位開始的
- add |= 0x01; //把最高位置1 是讀命令
- add |= 0xc0; //地址最高兩位為 1
- return(read_ds1302(add));
- }
- /*************初始化ds1302時間***************/
- void init_ds1302()
- {
- uchar i;
- rst = 0; //第一次讀寫數(shù)據(jù)時要把IO口拉低
- clk = 0;
- io = 0;
- i = read_ds1302ram(30);
- if(i != 3)
- {
- i = 3;
- write_ds1302ram(30,i); //4050 4100 3080
- write_ds1302(0x8e,0x00); //打開寫保護(hù)
- for(i=0;i<7;i++)
- write_ds1302(write_add[i],init_ds[i]); //把最高位值0 允許ds1302工作
- write_ds1302(0x8e,0x80); //關(guān)寫保護(hù)
- }
復(fù)制代碼
|
|