#include <reg52.h>
#include<appdemo.h>
#include<lcd1602.h>
#include<key.h>
#include<beep.h>
#include<pcf8591.h>
#include<ds18b20.h>
#include<exti.h>
_sys_ctrl sys_ctrl;
void exti0(void) interrupt 0
{
delay_10us(1000);
if(KEY3=0)
{
sys_ctrl.mode++;
if(sys_ctrl.mode==8)sys_ctrl=1;
lcd1602_clear();
delay_ms(10);
switch(sys_ctrl.mode)
{
case 1 lcd1602_show_string(0,0,"TempH Set:");break;
case 2 lcd1602_show_string(0,0,"TempL Set:");break;
case 3 lcd1602_show_string(0,0,"SoilH Set:");break;
case 4 lcd1602_show_string(0,0,"SoilL Set:");break;
case 5 lcd1602_show_string(0,0,"BeamH Set:");break;
case 6 lcd1602_show_string(0,0,"BeamL Set:");break;
}
}
}
void exti1(void) interrupt 2
{
delay_10us(1000);
if(KEY4==0)
{
sys_ctrl.mode=0;
lcd1602_show_string(0,0,"Tp: C");
lcd1602_show_string(9,0,"So: ");
lcd1602_show_string(0,1,"Bm: ");
}
}
void key_set_threshold(void)
{
u8 key=0;
while(sys_ctrl.mode==1)
{
key=key_scan(0);
if(key==KEY1_PRESS)
{
sys_ctrl.temph+=THRESHOLD_STEP;
if(sys_ctrl.temph>=80)sys_ctrl.temph=0;
}
else if(key==KEY2_PRESS)
{
sys_ctrl.temph+=THRESHOLD_STEP;
if(sys_ctrl.temph<=0)sys_ctrl.temph=80;
}
lcd1602_show_nums(10,0,sys_ctrl.temph,2,0);
}
while(sys_ctrl.mode==2)
{
key=key_scan(0);
if(key==KEY1_PRESS)
{
sys_ctrl.templ+=THRESHOLD_STEP;
if(sys_ctrl.templ>=40)sys_ctrl.templ=0;
}
else if(key==KEY2_PRESS)
{
sys_ctrl.templ+=THRESHOLD_STEP;
if(sys_ctrl.templ<=0)sys_ctrl.templ=40;
}
lcd1602_show_nums(10,0,sys_ctrl.templ,2,0);
}
while(sys_ctrl.mode==3)
{
key=key_scan(0);
if(key==KEY1_PRESS)
{
sys_ctrl.soilh+=THRESHOLD_STEP10;
if(sys_ctrl.soilh>=250)sys_ctrl.soilh=0;
}
else if(key==KEY2_PRESS)
{
sys_ctrl.soilh+=THRESHOLD_STEP10;
if(sys_ctrl.soilh<=0)sys_ctrl.soilh=250;
}
lcd1602_show_nums(10,0,sys_ctrl.soilh,4,0);
}
while(sys_ctrl.mode==4)
{
key=key_scan(0);
if(key==KEY1_PRESS)
{
sys_ctrl.soill+=THRESHOLD_STEP10;
if(sys_ctrl.soill>=250)sys_ctrl.soill=0;
}
else if(key==KEY2_PRESS)
{
sys_ctrl.soill+=THRESHOLD_STEP10;
if(sys_ctrl.soill<=0)sys_ctrl.soill=250;
}
lcd1602_show_nums(10,0,sys_ctrl.soill,4,0);
}
while(sys_ctrl.mode==5)
{
key=key_scan(0);
if(key==KEY1_PRESS)
{
sys_ctrl.beamh+=THRESHOLD_STEP10;
if(sys_ctrl.beamh>=250)sys_ctrl.beamh=0;
}
else if(key==KEY2_PRESS)
{
sys_ctrl.beamh+=THRESHOLD_STEP10;
if(sys_ctrl.beamh<=0)sys_ctrl.beamh=250;
}
lcd1602_show_nums(10,0,sys_ctrl.beamh,4,0);
}
while(sys_ctrl.mode==6)
{
key=key_scan(0);
if(key==KEY1_PRESS)
{
sys_ctrl.beaml+=THRESHOLD_STEP10;
if(sys_ctrl.beaml>=250)sys_ctrl.beaml=0;
}
else if(key==KEY2_PRESS)
{
sys_ctrl.beaml+=THRESHOLD_STEP10;
if(sys_ctrl.beaml<=0)sys_ctrl.beaml=250;
}
lcd1602_show_nums(10,0,sys_ctrl.beaml,4,0);
}
}
void sys_para_init(void)
{
sys_ctrl.mode=0;
sys_ctrl.temph=30;
sys_ctrl.templ=20;
sys_ctrl.soilh=200;
sys_ctrl.soill=100;
sys_ctrl.beamh=200;
sys_ctrl.beaml=100;
}
void sys_get_data(void)
{
u8 i=0;
while(sys_ctrl.mode==0)
{
i++;
if(i%200==0)
{
sys_ctrl.temp=ds18b20_read_temperture();
sys_ctrl.beam=pcf8591_read_adcvalue(1);
sys_ctrl.soil=ds18b20_read_adcvalue(2);
break;
}
delay_ms(1);
}
}
void sys_data_show(void)
{
while (sys_ctrl.mode==0)
{
lcd1602_show_nums(3,0,sys_ctrl.temp,2,0);
lcd1602_show_nums(12,0,sys_ctrl.soil,4,0);
lcd1602_show_nums(3,0,sys_ctrl.beam,4,0);
break;
}
}
void auto_control(void)
{
while (sys_ctrl.mode==0)
{
if(sys_ctrl.soil<sys_ctrl.soill)
{
beep_alarm(100,20);
}
else if(sys_ctrl.soil>=sys_ctrl.soilh)
{
beep_alarm(100,20);
}
if(sys_ctrl.temp<sys_ctrl.temph)
{
beep_alarm(100,20);
}
else if(sys_ctrl.soil<sys_ctrl.temph)
{
beep_alarm(100,20)
}
break;
}
}
void appdemo_show(void)
{
lcd1602_init()
ds18b20_init()
sys_ctrl.temp=ds18b20_read_temperture();
delay_ms(1000);
exti0_init();
exti1_init();
lcd1602_show_string(0,0,"Tp: C");
lcd1602_show_string(9,0,"So: ");
lcd1602_show_string(0,1,"Bm: ");
sys_para_init();
while(1)
{
key_set_threshold();
sys_get_data();
sys_data_show();
auto_control();
}
}
MAIN.C(10): error C129: missing ';' before 'sys_ctrl'第十行(代码:_sys_ctrl sys_ctrl;)
这句,if(sys_ctrl.mode==8)sys_ctrl=1;
sys_ctrl明显是结构体或联合,你怎么能有sys_ctrl=1;这种写法呢。