请教各位,我用pic12f683控制在规定时间内GP2输出高电平,超出时间一直输出低电平,假设时间是30s,不知道怎么回事,小弟写的总是断电后再次上电就变成低电平了(在30s内),帮忙看下我写的主函数,有什么不对的吗?
void main()
{
init(); //配置时钟和GPIO
Timer1_Init();
ISR_Timer1();
if(read_e2prom(20)!=0) //避免第一次上电读出的sec出错
{
write_e2prom(20,0);
h.hour=0; //初始值为0
}
else
{
sec=read_e2prom(10); //读取EEPROM中的数据
//min=read_e2prom(11);
// h.t[0]=read_e2prom(12);
//h.t[1]=read_e2prom(13);
}
while(1)
{
if(sec>30)
{
TMR1ON=0;
GP2=0;
}
else
{
GP2=1;
write_e2prom(10,sec);
//write_e2prom(11,min);
//write_e2prom(12,h.t[0]);
// write_e2prom(13,h.t[1]);
}
}
}
void write_e2prom(u8 add,u8 dat)
{
u8 gie;
gie=GIE;
EEADR=add; //写入地址
EEDAT=dat; //写入数据
WREN=1; //使能写周期
GIE=0; //关闭所有中断
EECON2=0X55;
EECON2=0XAA;
WR=1;
while(WR==1);//等待写完
GIE=gie; //恢复中断
WREN=0;
}
u8 read_e2prom(u8 add)
{
u8 d;
EEADR=add; //写入要读的地址
RD=1; //开始读取数据
while(RD==1); //等待读完
d=EEDAT;
return d;
} |