问题一: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};
- /*************把数据从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; //第一次读写数据时要把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); //打开写保护
- for(i=0;i<7;i++)
- write_ds1302(write_add[i],init_ds[i]); //把最高位值0 允许ds1302工作
- write_ds1302(0x8e,0x80); //关写保护
- }
复制代码
|