?? main.c
字號:
/*******************************************************************************
* * * 文件名稱:Main.c
* * * 文件說明:此文件是主程序,包括主程序和定時中斷、外部中斷。
* * * 創建日期:Pioneer / 2006-01-03
* * * 修改日期:Pioneer / 2006-1-10
* * * 注意事項:1 局部變量全用小寫,常量全用大寫以區分。
*******************************************************************************/
//公共頭文件
#include <GLOBLE.H>
#include <LCD1602.H>
#include <DELAY.H>
#include <DS1302.H>
#include <DS18B20.H>
main()
{
Lcd_DataPort=0; //I/O pin initialize
Lcd_CE=0;
Lcd_RS=0;
Lcd_RW=0;
Lcd_led=LEDOFF;
Beep=BEEPOFF;
State=0; // Register initialize
State_temp=0;
KeyValue=0;
ACC_temp=0;
IRQ=0;
Xpos=0;
Ypos=0;
VolumeSign=0x04;
VolumeWater=0x73;
VolumePower=0x2;
Temperature_H=0x73;
Temperature_L=0x06;
TickSecond=0;
TickUpdate=0;
TickMainMenu=0;
TickFlashLcd=0;
TickBackLight=0;
TickBackLight=200;
AlarmSwitch=0;
AlarmRunning=0;
Lcd_led=LEDON; // Turn on the Led of LCD
LcdInit(); // LCD initialize
LcdTest(); // LCD test
DS1302Write(0x8e,0x00); // write enable
ACC_temp=DS1302Read(SECOND); // start DS1302 for counting
ACC_temp=ACC_temp&0x7f;
DS1302Write(SECOND&0xfe,ACC_temp);
TMOD=0x10; // Timer1 mode1 16bits,counte 50ms.
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET1=1;
TR1=1;
EX0=1; // exto interrupt initialize
EA=1;
IT0=1; // 邊沿觸發
Beep=BEEPON;
delayXms(100);
Beep=BEEPOFF;
while(1)
{
switch(State)
{
case MENUMAIN:
switch(KeyValue)
{
case NEXT:State=MENUSETTIME;MenuShow(State);break;
case MOVECURSOR:Beep=0;delayXms(30),Beep=1;break;
case INCREASE: Beep=0;delayXms(30),Beep=1;break;
default: MenuShow(State);break;
}
break;
case MENUSETTIME:
switch(KeyValue)
{
case NEXT:
if(CompareModify()) // Yes modify
{
State_temp=State;
State=MENUMODIFY;
MenuShow(State);
break;
}
else // No modify
{
State=MENUSETDATE;
MenuShow(State);
break;
}
case MOVECURSOR:
SetPoint++;
Xpos++;
if(Xpos==13)
{Xpos=14;}
if(Xpos==16)
{Xpos=11;SetPoint=0;}
LcdMoveCursor(Xpos,Ypos);
break;
case INCREASE:
SetCompare(State);
LcdDisBuf1[SetPoint]++;
if(LcdDisBuf1[SetPoint]>Max_temp)
LcdDisBuf1[SetPoint]=Min_temp;
ACC_temp=LcdDisBuf1[SetPoint]|0x30;
LcdUpdateBit(Xpos,Ypos,ACC_temp);
LcdMoveCursor(Xpos,Ypos);
break;
default: MenuShow(State);break;
}
break;
case MENUSETDATE:
switch(KeyValue)
{
case NEXT:
if( (CompareModify()==1) || (LcdDisBuf1[4]!=LcdDisBuf2[4] ) ) // Yes modify
{
State_temp=State;
State=MENUMODIFY;
MenuShow(State);
break;
}
else // No modify
{
State=MENUSETYEAR;
MenuShow(State);
break;
}
case MOVECURSOR:
SetPoint++;
Xpos++;
if(Xpos==12)
{Xpos=13;}
if(Xpos==15)
{Xpos=16;}
if(Xpos==17)
{Xpos=10;SetPoint=0;}
LcdMoveCursor(Xpos,Ypos);
break;
case INCREASE:
SetCompare(State);
LcdDisBuf1[SetPoint]++;
if(LcdDisBuf1[SetPoint]>Max_temp)
LcdDisBuf1[SetPoint]=Min_temp;
ACC_temp=LcdDisBuf1[SetPoint]|0x30;
LcdUpdateBit(Xpos,Ypos,ACC_temp);
LcdMoveCursor(Xpos,Ypos);
break;
default: MenuShow(State);break;
}
break;
case MENUSETYEAR:
switch(KeyValue)
{
case NEXT:
if(CompareModify()) // Yes modify
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -