?? menu3.c
字號:
void serial() interrupt 4 //串行中斷 接收數據
{
//讀回來的數據還沒有保存到eeprom
uchar ud=0;
if(TI==1)
;
else
{ if(RI==1)
{
switch(qi)
{
case 0:
adtemp[0][address].adh=SBUF; //這里應該與上一個數
qi++;
se=0;
break;
case 1:
adtemp[0][address].adl=SBUF;
se=0;
qi++;
break;
case 2:
adtemp[0][address].adig=SBUF;
se=0;
qi++;
break;
case 3:
ud=SBUF;
if(adtemp[0][address].adh+adtemp[0][address].adl+adtemp[0][address].adig==ud)
{
se=1;
ms6=1;
qi=0;
}
else
err++;
qi=0;
break;
}
RI=0;
}
}
}
void goback(uchar addr,uchar lcd[16])
{ uchar i;
write(addr,0);
for(i=0;i<16;i++)
write(lcd[i],1);
}
void lcdwr(uchar addr,uchar lcd0[8],uchar lcdv[8])
{ uchar i;
write(addr,0);
for(i=0;i<16;i++)
{
if(i<8)
write(lcd0[i],1);
else
write(lcdv[i-8],1);
}
}
void disfill(uchar lcd_dis[8],uchar u0,uchar u1,uchar u2,uchar u3,uchar u4,uchar u5,uchar u6,uchar u7)
{
lcd_dis[0]=u0;
lcd_dis[1]=u1;
lcd_dis[2]=u2;
lcd_dis[3]=u3;
lcd_dis[4]=u4;
lcd_dis[5]=u5;
lcd_dis[6]=u6;
lcd_dis[7]=u7;
}
void main(void)
{ uchar i,j,led;
uint n;
//***********************************************************************************//
{ //一般的初始化
SP=0xdd;
con=0; // 開液晶屏
cs=1; // iic eeprom 有效
delay6ms(50);
disinit();
} //液晶顯示初始化
/*
strcpy(dis,"系統初始化中....");
write(0x90,0);
for(i=0;i<16;i++)
write(dis[i],1);
*/ // 一般的初始化結束
//delay6ms(200);
point2=eepread(0x7f,0xff);
point2<<=8;
point2=point2|eepread(0x7f,0xfe);
point1=(point2-0x78)%0x7fef;
n=point1;
//****************************************讀出數據最后一次寫入的10點數據***********************************//
for(i=0;i<=9;i++)
for(j=0;j<4;j++)
{
addate[i][j].adh=eepread(n/256,n%256);
n++;
n=n%0x7fef;
addate[i][j].adl=eepread(n/256,n%256);
n++;
n=n%0x7fef;
addate[i][j].adig=eepread(n/256,n%256);
n++ ;
n=n%0x7fef;
}
/* for(i=7;i<14;i++)
for(j=0;j<4;j++)
{
addate[i][j].adh=eepread(n/256,n%256);
n++;
n=n%0x7fef;
addate[i][j].adl=eepread(n/256,n%256);
n++;
n=n%0x7fef;
addate[i][j].adig=eepread(n/256,n%256);
n++ ;
n=n%0x7fef;
}
*/
maxinit();//總線485通信初始化
// ET0=1; //定時器0中斷關掉
// TR0=1;
// IE0=0;
// EX0=1; //kai wai bu zhong duan
state=0;
while(1)
{ //ms2=1;
switch(state)
{//0 主界面
case 0:
strcpy(dis," 8: 激活狀態 ");
goback(0x80,dis);//80 qing pin 空行
strcpy(dis," 9: 睡眠模式 ");
goback(0x90,dis); //實時監控
strcpy(dis,"10: 實時監控 ");
goback(0x88,dis); //歷史瀏覽
strcpy(dis,"11: 歷史瀏覽 ");
goback(0x98,dis); //空行
led=key();
if(led==0xff)
break;
else
{
if(led==10)
{ led=0xff;
state=1; // jin ru 實時監控界面
break;
}
else
{
if(led==11)
{
led=0xff;
state=2;//進入選擇歷史點數據界面
break;
}
if(led==9)
{ led=0xff;
//IE0=1;
con=1;
break;
}
else
if(led==8)
{
led=0xff;
con=0;
}
else
break;
}
}
case 1: //實時監控里面的選擇界面
strcpy(dis," ");
goback(0x80,dis); //空行
strcpy(dis,"9: 輪流顯示 ");
goback(0x90,dis); //輪流顯示
strcpy(dis,"10: 可選顯示 ");
goback(0x88,dis); //可選顯示
strcpy(dis,"11: 返回上級 ");
goback(0x98,dis); //返回上級
led=key();
if(led==9)
{ led=0xff;
i=0;
state=3; //實時監控里面的輪流顯示界面
break;
}
else
{
if(led==10)
{
led=0xff;
mulb=0;
state=4;//實時監控里面的固定顯示界面
break;
}
else
{
if(led==11)
{
led=0xff;
state=0; //返回上級
break;
}
else
break;
}
}
case 2: //選擇那一點的歷史數據界面
strcpy(dis,"請選擇下面歷史點");
goback(0x80,dis);
strcpy(dis,"0 1 2 3 4 ");
goback(0x90,dis);
strcpy(dis,"5 6 7 8 9 ");
goback(0x88,dis);
strcpy(dis,"11: 返回上級 ");
goback(0x98,dis);
led=key();
if(led==0xff||led==10) //返回
{
led=0xff;
break;
}
else
if(led==11) //返回上級
{ led=0xff;
state=0;
break;
}
else
{ //把選擇的數帶過去
mulk=led;
//if(mulk>4)
// mulk=mulk+3;
led=0xff;
state=5;// 進入另一界面來選擇固定或者輪流顯示
break;
}
break;
case 3: //實時監控輪流顯示
if(ms2==1)
{
ms2=0;
disfill(dis,0x30+i,0x20,0x20,0x20,0x20,0x20,0x20,0x20);
lcdwr(0x80,lcd15,dis);
disfill(dis,temp[i].adh/10+0x30,'.',temp[i].adh%10+0x30,temp[i].adl/10+0x30,temp[i].adl%10+0x30,'(','V',')');
lcdwr(0x90,lcd16,dis);
disfill(dis,0x30+temp[i].adig,0x20,0x20,0x20,0x20,0x20,0x20,0x20);
//disfill(dis,0x30+temp[i].adig);
lcdwr(0x88,lcd17,dis);
strcpy(dis,"11: 返回上級 ") ;
goback(0x98,dis);
i++;
i=i%4;
}
led=key();
if(led==11)
{ state=1;
led=0xff;
break;
}
else
break;
case 4:
if(ms2==1)
{
ms2=0;
disfill(dis,0x30+mulb,0x20,0x20,0x20,0x20,0x20,0x20,0x20);
lcdwr(0x80,lcd15,dis);
disfill(dis,temp[mulb].adh/10+0x30,'.',temp[mulb].adh%10+0x30,temp[mulb].adl/10+0x30,temp[mulb].adl%10+0x30,'(','V',')');
lcdwr(0x90,lcd16,dis);
disfill(dis,0x30+temp[mulb].adig,0x20,0x20,0x20,0x20,0x20,0x20,0x20);
lcdwr(0x88,lcd17,dis);
strcpy(dis,"號: 0~3 返回:11 ");
goback(0x98,dis);
}
led=key();
if(led==11)
{ state=1;
led=0xff;
break;
}
else
if(led==0||led==1||led==2||led==3)
{
mulb=led;
led=0xff;
break;
}
else
{
led=0xff;
break;
}
case 5:
strcpy(dis,"8:更新歷史數據 ");
goback(0x80,dis);
strcpy(dis,"9: 輪流顯示 ");
goback(0x90,dis);
strcpy(dis,"10: 可選顯示 ");
goback(0x88,dis);
strcpy(dis,"11: 返回上級 ");
goback(0x98,dis);
led=key();
if(led==8)
{
ET0=0;
n=point1;
for(i=0;i<=9;i++)
for(j=0;j<4;j++)
{ // addate[10][4];
addate[i][j].adh=eepread(n/256,n%256);
n++;
n=n%0x7fef;
addate[i][j].adl=eepread(n/256,n%256);
n++;
n=n%0x7fef;
addate[i][j].adig=eepread(n/256,n%256);
n++ ;
n=n%0x7fef;
}
/* for(i=7;i<13;i++)
for(j=0;j<4;j++)
{
addate[i][j].adh=eepread(n/256,n%256);
n++;
n=n%0x7fef;
addate[i][j].adl=eepread(n/256,n%256);
n++;
n=n%0x7fef;
addate[i][j].adig=eepread(n/256,n%256);
n++ ;
n=n%0x7fef;
}
*/
ET0=1;
led=0xff;
strcpy(dis,"恭喜^_^ 成功更新");
for(i=0;i<3;i++)
{
goback(0x80,dis);
delay6ms(250);
delay6ms(250);
delay6ms(250);
strcpy(dis," ");
goback(0x80,dis);
delay6ms(250);
delay6ms(250);
delay6ms(250);
strcpy(dis,"恭喜^_^ 成功更新");
}
strcpy(dis,"8:更新歷史數據 ");
goback(0x80,dis);
}
if(led==9)
{ led=0xff;
i=0;
state=6; //歷史數據里面的輪流顯示界面
break;
}
else
if(led==10)
{ led=0xff;
mulb=0;
state=7;//歷史數據里面的固定顯示界面
break;
}
else
if(led==11)
{
led=0xff;
state=2;
break;
}
break;
case 6: //lun liu xian shi
if(ms2==1)
{
ms2=0;
//if(mulk>9)
//mulk=mulk-3;
disfill(dis,0x30+i,0x20,0xc0,0xfa,0xca,0xb7,':',0x30+mulk);
lcdwr(0x80,lcd15,dis);
disfill(dis,addate[mulk][i].adh/10+0x30,'.',addate[mulk][i].adh%10+0x30,addate[mulk][i].adl/10+0x30,addate[mulk][i].adl%10+0x30,'(','V',')');
lcdwr(0x90,lcd16,dis);
disfill(dis,0x30+addate[mulk][i].adig,0x20,0x20,0x20,0x20,0x20,0x20,0x20);
lcdwr(0x88,lcd17,dis);
strcpy(dis,"11: 返回上級 ");
goback(0x98,dis);
i++;
i=i%4;
}
led=key();
if(led==11)
{ state=5;
led=0xff;
break;
}
else
break;
;
break;
case 7:
if(ms2==1)
{
ms2=0;
// if(mulk>9)
// mulk=mulk-3;
disfill(dis,0x30+mulb,0x20,0xc0,0xfa,0xca,0xb7,':',0x30+mulk);
lcdwr(0x80,lcd15,dis);
disfill(dis,addate[mulk][mulb].adh/10+0x30,'.',addate[mulk][mulb].adh%10+0x30,addate[mulk][mulb].adl/10+0x30,addate[mulk][mulb].adl%10+0x30,'(','V',')');
lcdwr(0x90,lcd16,dis);
disfill(dis,0x30+addate[mulk][mulb].adig,0x20,0x20,0x20,0x20,0x20,0x20,0x20);
lcdwr(0x88,lcd17,dis);
strcpy(dis,"號: 0~3 返回:11 ");
goback(0x98,dis);
}
led=key();
if(led==11)
{ state=5;
led=0xff;
break;
}
else
if(led==0||led==1||led==2||led==3)
{
mulb=led;
led=0xff;
break;
}
else
{
led=0xff;
break;
}
break;
} //switch
} // while
}//main
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -