请大伙帮忙看下,下面的这段程序问题出现在哪,程序要实现DS1302时间参数的修改功能,但在年参数调整时就不正确了 现象如下: 在加一功能时,从初始年逐渐加到80,再加一就是1了,接着又是逐渐加到80,如此循环 在减一功能时,从初始年逐渐减到0,再减一就是99了,再减一是18,然后是逐渐减到0,如此循环 现在该对其中几个变量是用unsigned char 定义或是signed char 定义,我还不太明白,望各位走过、路过的指点下
谢谢先
void Set_time(unsigned char set,unsigned char updown) { unsigned char address; signed char item_e,item,max,mini;
if(set==1) {address=0x8c; max=99;mini=0;} //年1 if(set==2) {address=0x88; max=12;mini=1;} //月2 if(set==3) {address=0x86; max=31;mini=1;} //日3 if(set==4) {address=0x84; max=23;mini=0;} //小时4 if(set==5) {address=0x82; max=59;mini=0;} //分钟5 if(set==6) {address=0x80; max=59;mini=0;} //秒6 if(set==7) {address=0x8a; max=7; mini=1;} //星期7 item_e=(Read_1302(address+1)); //读取1302某地址上的数值转换成10进制赋给item item=((item_e&0x70)>>4)*10 + (item_e&0x0F); if(updown==1) { item++; if(item>max) item=mini; } if(updown==0) { item--; if(item<mini) item=max; } item_e=(item/10)*16+item%10 ; //10进制 to 16进制 Write_1302(0x8e,0x00); //允许写操作 Write_1302(address,item_e); //写修改后的数据到1302 Write_1302(0x8e,0x80); //写保护,禁止写操作 } |