rt,我发现DS1302每次读出或者写入函数的最后,都要加入一句RST置低电平,也就是复位,这是为什么呢?
单片机复位可以使程序重新开始运行,那么ds1302复位的意义是什么。不懂,求解
- /*------------------------------------------------
- 向DS1302写入一字节数据
- 通常必须写入地址,告知DS1302你要写在哪里,年?月?日?地址附在addr
- d就是数据,通常是写时间
- ------------------------------------------------*/
- void Ds1302_Write_Byte(unsigned char addr, unsigned char d)
- {
- unsigned char i;
- RST_SET;//复位必须失效
-
- //写入目标地址:addr
- addr = addr & 0xFE; //最低位置零,强制转换
- for (i = 0; i < 8; i ++)
- {
- if (addr & 0x01)
- {
- IO_SET; //预定义这个是SDK取高电平,通过sbit定义进行引脚电平输出
- }
- else
- {
- IO_CLR;
- }
- SCK_SET; //时钟高电平,因前方初始化时钟已置低电平,故本次产生一次上升沿,整个函数执行写动作
- SCK_CLR; //时钟低电平 ,待下次数据传输使用
- addr = addr >> 1;
- }
-
- //写入数据:d
- for (i = 0; i < 8; i ++)
- {
- if (d & 0x01)
- {
- IO_SET;
- }
- else
- {
- IO_CLR;
- }
- SCK_SET;
- SCK_CLR;
- d = d >> 1;
- }
- RST_CLR; //停止DS1302总线,芯片复位
- }
复制代码
一周热门 更多>