📄 main.c
字号:
LDAT_15=0X00;
LDAT_16=0X00;
LDAT_17=0X00;
while((MODE==1)&(sec<20))
{
read_18b20();
if(olddata!=data[0]){LCD_CL(6);LCD_CL(7);LCD_CL(8);olddata=data[0];}
LCD_TEMP(data[0]);
sec++;
}
// MODE=0;
}
void OUT_TEMP(void)
{
char sec;
unsigned int olddata=0;
sec=0;
LDAT_1=0X00;
LDAT_2=0X00;
LDAT_3=0X00;
LDAT_4=0X10;
LDAT_5=0X00;
LDAT_6=0X00;
LDAT_7=0X00;
LDAT_8=0X10;
LDAT_9=0X00;
LDAT_10=0X02;
LDAT_11=0X00;
LDAT_12=0X00;
LDAT_13=0X00;
LDAT_14=0X00;
LDAT_15=0X00;
LDAT_16=0X00;
LDAT_17=0X00;
while((MODE==2)&(sec<20))
{
read_18b20();
if(olddata!=data[1]){LCD_CL(6);LCD_CL(7);LCD_CL(8);olddata=data[1];}
LCD_TEMP(data[1]);
sec++;
}
// MODE=0;
}
void read_18b20(void)
{ unsigned int datb;
PORTF=PORTF|0x01;
delay(1000);
data[0]=0;
data[1]=0;
// data[2]=0;
w1_init(1);
w1_write(0XCC,1);
w1_write(0X44,1);
w1_init(2);
w1_write(0XCC,2);
w1_write(0X44,2);
w1_init(3);
w1_write(0XCC,3);
w1_write(0X44,3);
delay(9500);
w1_init(1);
w1_write(0XCC,1);
w1_write(0XBE,1);
datb=w1_read(1);
data[0]=w1_read(1);
data[0]=(((data[0]<<8)|datb)*5)>>3;
if(data[0]>=999){data[0]=999;}
w1_init(2);
w1_write(0XCC,2);
w1_write(0XBE,2);
datb=w1_read(2);
data[1]=w1_read(2);
data[1]=(((data[1]<<8)|datb)*5)>>3;
if(data[1]>=999){data[1]=999;}
/* w1_init(3);
w1_write(0XCC,3);
w1_write(0XBE,3);
datb=w1_read(3);
data[2]=w1_read(3);
data[2]=(((data[2]<<8)|datb)*5)>>3;
if(data[2]>=999){data[2]=999;}
*/
PORTF=PORTF&(~0X01);
}
void LCD_TIME(unsigned char d,char x)
{
unsigned char i;
i=d%10;
LCD_DISP(i,x+1);
d=d/10;
i=d%10;
LCD_DISP(i,x);
}
void TIME(void)
{
char sec;
unsigned char old_second=99;
unsigned char old_min=0;
unsigned char old_hour=0;
sec=0;
hour=RTC_HRR;
min=RTC_MINR;
second=RTC_SECR;
LDAT_1=0X00;
LDAT_2=0X00;
LDAT_3=0X00;
LDAT_4=0X00;
LDAT_5=0X10;
LDAT_6=0X00;
LDAT_7=0X10;
LDAT_8=0X00;
LDAT_9=0X00;
LDAT_10=0X20;
LDAT_11=0X00;
LDAT_12=0X00;
LDAT_13=0X00;
LDAT_14=0X00;
LDAT_15=0X00;
LDAT_16=0X00;
LDAT_17=0X00;
while((MODE==3)&(sec<20))
{
hour=RTC_HRR;
min=RTC_MINR;
second=RTC_SECR;
if((old_hour!=hour))
{ LCD_CL(3);
LCD_CL(4);
old_hour=hour;
LCD_TIME(hour,3);
}
if((old_min!=min))
{ LCD_CL(5);
LCD_CL(6);
old_min=min;
LCD_TIME(min,5);
}
if((old_second!=second))
{ LCD_CL(7);
LCD_CL(8);
old_second=second;
LCD_TIME(second,7);
}
__RESET_WATCHDOG(); /* kicks the dog */
sec++;
}
// MODE=0;
}
void FLOW(void)
{
char sec=0,i=0;
unsigned long flow_t;
/* unsigned char old_min=0;
unsigned char old_hour=0;
*/
LDAT_1=0X00;
LDAT_2=0X00;
LDAT_3=0X00;
LDAT_4=0X00;
LDAT_5=0X00;
LDAT_6=0X10;
LDAT_7=0X00;
LDAT_8=0X00;
LDAT_9=0X40;
LDAT_10=0X10;
LDAT_11=0X00;
LDAT_12=0X00;
LDAT_13=0X00;
LDAT_14=0X00;
LDAT_15=0X00;
LDAT_16=0X00;
LDAT_17=0X00;
while((MODE==4)&(sec<20))
{
flow_t=flow;
i=flow_t%10;
LCD_CL(8);
LCD_DISP(i,8);
flow_t=flow_t/10;
i=flow_t%10;
LCD_CL(7);
LCD_DISP(i,7);
flow_t=flow_t/10;
i=flow_t%10;
LCD_CL(6);
LCD_DISP(i,6);
flow_t=flow_t/10;
i=flow_t%10;
LCD_CL(5);
LCD_DISP(i,5);
flow_t=flow_t/10;
i=flow_t%10;
LCD_CL(4);
if(flow_t>=1){LCD_DISP(i,4);}
flow_t=flow_t/10;
i=flow_t%10;
LCD_CL(3);
if(flow_t>=1){LCD_DISP(i,3);};
flow_t=flow_t/10;
i=flow_t%10;
LCD_CL(2);
if(flow_t>=1){LCD_DISP(i,2);}
flow_t=flow_t/10;
i=flow_t%10;
LCD_CL(1);
if(flow_t>=1){LCD_DISP(i,1);}
__RESET_WATCHDOG(); /* kicks the dog */
sec++;
}
// MODE=0;
}
void KWH(void)
{
char i=0;
unsigned char old_flow=99;
unsigned long kwh_t;
LDAT_1=0X00;
LDAT_2=0X00;
LDAT_3=0X00;
LDAT_4=0X00;
LDAT_5=0X00;
LDAT_6=0X00;
LDAT_7=0X10;
LDAT_8=0X00;
LDAT_9=0X80;
LDAT_10=0X08;
LDAT_11=0X00;
LDAT_12=0X00;
LDAT_13=0X00;
LDAT_14=0X00;
LDAT_15=0X00;
LDAT_16=0X00;
LDAT_17=0X00;
while((MODE==0))
{
if(!temp2_flow)
{
CAL_KWH();
}
kwh_t=kwh;
i=kwh_t%10;
LCD_CL(8);
LCD_DISP(i,8);
kwh_t=kwh_t/10;
i=kwh_t%10;
LCD_CL(7);
LCD_DISP(i,7);
kwh_t=kwh_t/10;
i=kwh_t%10;
LCD_CL(6);
LCD_DISP(i,6);
kwh_t=kwh_t/10;
i=kwh_t%10;
LCD_CL(5);
LCD_DISP(i,5);
kwh_t=kwh_t/10;
i=kwh_t%10;
LCD_CL(4);
if(kwh_t>=1){LCD_DISP(i,4);}
kwh_t=kwh_t/10;
i=kwh_t%10;
LCD_CL(3);
if(kwh_t>=1){LCD_DISP(i,3);};
kwh_t=kwh_t/10;
i=kwh_t%10;
LCD_CL(2);
if(kwh_t>=1){LCD_DISP(i,2);}
kwh_t=kwh_t/10;
i=kwh_t%10;
LCD_CL(1);
if(kwh_t>=1){LCD_DISP(i,1);}
__RESET_WATCHDOG(); /* kicks the dog */
// kwh++;
// delay(10);
}
}
void main(void) {
// unsigned long temp1,temp2,temp3;
unsigned int i=255;
EnableInterrupts; /* enable interrupts */
/* include your code here */
P_TCL=0X00;
P_BWC=0X80;
P_MSH=0X00;
P_MSL=0XF5;
P_MRS=0XD1;
P_MDS=0X01;
P_TCL=0X30;
P_TCL=0X30;
RTC_COMR=0x00;
RTC_COMR=0x01;
RTC_COMR=0x03;
RTC_COMR=0x02;
RTC_CDTA=0x00;
RTC_CR1=0x00;
RTC_CR2=0x10;
RTC_ALMR=0x00;
RTC_ALHR=0x00;
RTC_YRR=year;
RTC_MTHR=month;
RTC_DAYR=day;
RTC_HRR=hour;
RTC_MINR=min;
RTC_SECR=second;
RTC_DOWR=week;
RTC_COMR=0x02;
RTC_COMR=0x02;
RTC_COMR=0x00;
RTC_COMR=0x01;
RTC_COMR=0x03;
RTC_COMR=0x02;
RTC_CDTA=0x00;
RTC_CR1=0x00;
RTC_CR2=0x10;
RTC_ALMR=0x00;
RTC_ALHR=0x00;
RTC_YRR=year;
RTC_MTHR=month;
RTC_DAYR=day;
RTC_HRR=hour;
RTC_MINR=min;
RTC_SECR=second;
RTC_DOWR=week;
RTC_COMR=0x02;
RTC_COMR=0x02;
DDR_F=DDR_F|0X01;
LED_F=LED_F|0X01;
PORTF=PORTF|0X01;
DDR_A=DDR_A&0XF0;
DDR_D=DDR_D&~(0x0e);
PORTD=PORTD|0x0e;
KB_IER=0X0F;
KB_SCR=0X00;
INT_SCR=0x04;
xxi=0;
// LED_F=0X02;
CONFIG_2=(CONFIG_2|0X8C);
LCD_CR=0X90+0X00;
LCD_CLK=0X40+0X10+0X00;
LDAT_1=0X00;
LDAT_2=0X00;
LDAT_3=0X00;
LDAT_4=0X00;
LDAT_5=0X00;
LDAT_6=0X00;
LDAT_7=0X00;
LDAT_8=0X00;
LDAT_9=0X00;
LDAT_10=0X00;
LDAT_11=0X00;
LDAT_12=0X00;
LDAT_13=0X00;
LDAT_14=0X00;
LDAT_15=0X00;
LDAT_16=0X00;
LDAT_17=0X00;
// i=1;
while(1)
{
/*
LDAT_1=0X00;
LDAT_2=0X00;
LDAT_3=0X00;
LDAT_4=0X00;
LDAT_5=0X00;
LDAT_6=0X00;
LDAT_7=0X00;
LDAT_8=0X00;
LDAT_9=0X00;
LDAT_10=0X00;
LDAT_11=0X00;
LDAT_12=0X00;
LDAT_13=0X00;
LDAT_14=0X00;
LDAT_15=0X00;
LDAT_16=0X00;
LDAT_17=0X00;
LCD_DISP(i,i);
i++;
if(i>8){i=1;}
delay(5000);
*/
/* year=RTC_YRR;
month=RTC_MTHR;
day=RTC_DAYR;
hour=RTC_HRR;
min=RTC_MINR;
second=RTC_SECR;
week=RTC_DOWR;
*/
if(MODE==0){KWH();}
if(MODE==1){IN_TEMP();}
if(MODE==2){OUT_TEMP();}
if(MODE==3){TIME();}
if(MODE==4){FLOW();}
if(flow>99999999){flow=0;}
if(kwh>99999999){kwh=0;}
__RESET_WATCHDOG(); /* kicks the dog */
} /* loop forever */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -