|
使用LPC932制作的一款电表---TimeSpend redbug 发表于 2005-10-14 16:38:00
#i nclude <REG932.H> #i nclude <define.h> #i nclude <Stdio.h> #i nclude <Intrins.h>
void TimeSpend(void) { unsigned char data i,k=0x80; if(TimeSpendFg) { TimeBuf[0]=IicByteRead(0x64,0x00) & 0x7f;//提取秒信号到数据缓冲区 TimeBuf[1]=IicByteRead(0x64,0x10) & 0x7f;//提取分号到数据缓冲区 TimeBuf[2]=IicByteRead(0x64,0x20) & 0x3f;//提取时号到数据缓冲区 DaysBuf[0]=IicByteRead(0x64,0x30) & 0x07;//提取期信号到数据缓冲区 DaysBuf[1]=IicByteRead(0x64,0x40) & 0x3f;//提取日信号到数据缓冲区 DaysBuf[2]=IicByteRead(0x64,0x50) & 0x1f;//提取月信号到数据缓冲区 DaysBuf[3]=IicByteRead(0x64,0x60) ;//提取年信号到数据缓冲 for(i=0;i<12;i++) { IicMuchByteRead(0xa0,k,0x03); //小时比较 if(TimeBuf[2]==IIcBuf[1]) { //分钟比较 if(TimeBuf[1]>=IIcBuf[2]) { switch(IIcBuf[0]) { case 0x01 : //时段---尖 MataStData=MataStData|0x01; //IicByteWrite(0xa0,0xc9,MataSt); break; case 0x02 : //时段---峰 FengLed=0;//打开峰指示灯 PingLed=1; GuLed=1; MataStData=MataStData|0x02; //IicByteWrite(0xa0,0xc9,MataSt); FengFg=1; PingFg=0; GuFg=0; break; case 0x03 : //时段---平 FengLed=1; PingLed=0;//打开平指示灯 GuLed=1; MataStData=MataStData|0x03; //IicByteWrite(0xa0,0xc9,MataSt); FengFg=0; PingFg=1; GuFg=0; break; case 0x04 : //时段---谷 FengLed=1; PingLed=1; GuLed=0;//打开谷指示灯 MataStData=MataStData|0x04; //IicByteWrite(0xa0,0xc9,MataSt); FengFg=0; PingFg=0; GuFg=1; break; } } } k=k+3; } if(DaysBuf[2]==1) { IIcByteStar=0xc0; } else { IIcByteStar=DaysBuf[3]*16-16; } } }
|