蓝桥杯单片机之DS1302可能出现的问题
1302出现问题大多都是无边界检查,或者就是在运行的时候被中断打断导致乱码等,检查的时候先检查这两个部分。
·
文章跳转
Ds1302显示的时候老跳怎么办
解决方案:
在读这里写时序保护,直接开关中断,防止在传输数据的时候,被中断给打断,这样可以有效解决显示的时候老跳
加减的时候出现乱码
解决方案:
如果使用1302,加减的时候出现乱码——注意有无边界检查,要先加减再进行判断而不是先判断后加减
例如
if(time[0]>=60)time[0]=0;
else time[0]++;
/*这是不太行的
改成
*/
if(++time[1]==60)time[1]=0;
/*或者*/
if(time[1]==0)time[1]=59;
else
{
time[1]--;
if(time[1]==0) time[1]=59;
}
出现乱码的原因就是加减的时候超出他的上下限了,所以才会出现乱码,同时也要注意char,unsigned char的区别
然后,减的是时候要用上面那种,因为负数会导致直接乱码,而加可以直接用if(++time[1]==60)time[1]=0;
这种写法
使用1302出现闪烁
解决方案:
则在读的时候for循环里面增加
EA=0,EA=1;
for(i=0;i<3;i++)
{
EA=0;
time[i]=Read_Ds1302_Byte(ds_read_add[i]);
EA=1;
}
或者在写的时候加上也行,不过要保证EA=0,EA=1包含在他整个运行段里
void ds1302_write()
{
int i;
EA=0;
bcddec(1);
Write_Ds1302_Byte(0x8e,0x00);
for(i=0;i<3;i++)
{
Write_Ds1302_Byte(ds_write_add[i],time[i]);
}
Write_Ds1302_Byte(0x8e,0x80);
EA=1;
}
同时为了减少错误,在1302读出来的时候就开始把他转换为10进制,这样在显示的时候会比较好
总结
1302出现问题大多都是无边界检查,或者就是在运行的时候被中断打断导致乱码等,检查的时候先检查这两个部分
更多推荐
所有评论(0)