假如有一个函数:char DS1302_GetSecond(void);
用来获取时间的秒部分。。
可是如果我想,当DS1302工作错误无法读到值时能够返回一个错误码,那可怎么办呢???
我现在有三种方法:
1、DS1302不正常工作时返回0xFF,因为秒钟不会取这个值,所以通过返回值和0xFF比较就可以知道这个值是不是正确的时间值。
但是这个方法不够通用,比如如果是一片AT24C08,读到的正确值就有可能是0xFF,这时的0xFF就无法判断是正确的返回值,还是错误码了。所以Pass掉!!
2、把函数定义改为:
char DS1302_GetSecond(char *sec)
时间值由sec指针带出,返回值就只用与判断程序执行的状态。。
这个方法倒是不会冲突,可惜太笨了,读一个字符竟然还要使用指针,显的啰嗦。。
3、在函数中当函数执行不能正常读到值,即DS1302出现错误时,直接让程序在出错的地方死掉(无限循环),根本就不退出!!!
这个方法更笨,实在太笨了。。。
4、在DS1302的模块级别定义一个状态变量,DS1302的所有函数的执行状态都存在这个变量中,每执行完一次DS1302_GetSecond函数就检查一下这个状态变量,以决定这个读到的时间值是否可以被采纳。
还是太麻烦
。。。。。
唉,反正是很纠结,很麻烦,纠结。。。。。 |