📄 +
字号:
#include <msp430x14x.h>
#include "menue.h"
#include "Flash.h"
#include "main.h"
#include "ds1302.h"
extern unsigned char key_value;
unsigned char menue_state=0;
unsigned char dis_num=3;
unsigned char menue_a1_which=0;
unsigned char menue_a1_where=0;
unsigned char menue_a1_num=5;
unsigned char menue_a1_state=0;
unsigned char menue_b1_which=0;
unsigned char menue_b1_where=0;
unsigned char menue_b1_num=4;
unsigned char menue_b1_state=0;
unsigned char menue_b2_which=0;
unsigned char menue_b2_where=0;
unsigned char menue_b2_num=4;
unsigned char menue_b2_state=0;
unsigned char menue_b3_which=0;
unsigned char menue_b3_where=0;
unsigned char menue_b3_num=5;
unsigned char menue_b3_state=0;
unsigned char menue_b4_which=0;
unsigned char menue_b4_where=0;
unsigned char menue_b4_num=8;
unsigned char menue_b4_state=0;
unsigned char kaiguan[4]={"开关"};
unsigned char week[16]={" 一二三四五六天"};
unsigned char menue_a1[5][8]=
{
{"时间设定"},
{"日期设定"},
{"闹钟设定"},
{"按键控制"},
{"退出 "},
};
unsigned char menue_b3[5][14]=
{
{"1 闹钟 :00 "},
{"2 闹钟 :00 "},
{"3 闹钟 :00 "},
{"4 闹钟 :00 "},
{"退出 "},
};
unsigned char menue_b4[8][14]=
{
{"1 号控制 "},
{"2 号控制 "},
{"3 号控制 "},
{"4 号控制 "},
{"↑ "},
{"↓ "},
{"● "},
{"退出 "},
};
unsigned char menue_down(unsigned char menue_which,unsigned char menue_where,unsigned char num)
{//1
if(menue_where<dis_num-1)
{//2
menue_where++;
}//2
else if(menue_where==dis_num-1)
{//3
menue_which++;
if (menue_which==num-dis_num+1)
{//33
menue_which=0;
menue_where=0;
}//33
} //3
unsigned char menue_temp=(menue_which<<4)|menue_where;
return menue_temp;
}//1
unsigned char menue_up(unsigned char menue_which,unsigned char menue_where,unsigned char num)
{
if(menue_where>0)
{//9
menue_where--;
}//9
else if(menue_where==0)
{//11
menue_which--;
}//11
if(menue_which==0xff)//menu_which由0--后变为0xff
{//12
menue_where=dis_num-1;
menue_which=num-dis_num;
}//12
unsigned char menue_temp=(menue_which<<4)|menue_where;
return menue_temp;
}
void menue_work()
{
if(key_value==3)
{
alarm_flag=0;
}
if(key_value==2)
{
menue_state=1;
}
}
void menue_a1_work()
{//////////////////////////////////////////
if(key_value==3)
{//55
unsigned char temp= menue_up( menue_a1_which,menue_a1_where, menue_a1_num);
menue_a1_which=temp>>4;
menue_a1_where=temp&0x0f;
}//55
else if(key_value==1)
{//66
unsigned char temp= menue_down( menue_a1_which,menue_a1_where, menue_a1_num);
menue_a1_which=temp>>4;
menue_a1_where=temp&0x0f;
}//66
else if(key_value==2)
{
menue_state=menue_a1_which+menue_a1_where+2;
if(menue_state==menue_a1_num+1)
{
menue_state=0;//回到最初状态
menue_a1_which=0;
menue_a1_where=0;
}
}
}////////////////////////////////////////
void menue_b1_work()
{//5555
if(key_value==2)
{
if(++menue_b1_state>5)
{
menue_b1_state=0;
menue_state=1;
}
}
else if( key_value==3)
{///////////////////////////////////
W_Data(0x8e,0x00); //允许写入
switch(menue_b1_state)
{//5
case 1: if(++dis_time_temp[0]>2) dis_time_temp[0]=0;
W_Data(Hour,(dis_time_temp[0]<<4)|dis_time_temp[1]);
break;
case 2: if(dis_time_temp[0]<2)
{
if(++dis_time_temp[1]>9) dis_time_temp[1]=0;
W_Data(Hour,(dis_time_temp[0]<<4)|dis_time_temp[1]);
}
else
{
if(++dis_time_temp[1]>4) dis_time_temp[1]=0;
W_Data(Hour,(dis_time_temp[0]<<4)|dis_time_temp[1]);
}
break;
case 3: if(++dis_time_temp[3]>5) dis_time_temp[3]=0;
W_Data(Minutes,(dis_time_temp[3]<<4)|dis_time_temp[4]);
break;
case 4: if(++dis_time_temp[4]>9) dis_time_temp[4]=0;
W_Data(Minutes,(dis_time_temp[3]<<4)|dis_time_temp[4]);
break;
case 5: dis_time_temp[6]=0;
dis_time_temp[7]=0;
W_Data(Seconds,(dis_time_temp[6]<<4)|dis_time_temp[7]);
break;
}//5
W_Data(0x8e,0x80); // 禁止写入
}/////////////////////////////////
else if( key_value==1)
{///////////////////////////////////
W_Data(0x8e,0x00); //允许写入
switch(menue_b1_state)
{//5
case 1: if(dis_time_temp[0]--==0) dis_time_temp[0]=2;
W_Data(Hour,(dis_time_temp[0]<<4)|dis_time_temp[1]);
break;
case 2: if(dis_time_temp[0]<2)
{
if(dis_time_temp[1]--==0) dis_time_temp[1]=9;
W_Data(Hour,(dis_time_temp[0]<<4)|dis_time_temp[1]);
}
else
{
if(dis_time_temp[1]--==0) dis_time_temp[1]=4;
W_Data(Hour,(dis_time_temp[0]<<4)|dis_time_temp[1]);
}
break;
case 3: if(dis_time_temp[3]--==0) dis_time_temp[3]=5;
W_Data(Minutes,(dis_time_temp[3]<<4)|dis_time_temp[4]);
break;
case 4: if(dis_time_temp[4]--==0) dis_time_temp[4]=9;
W_Data(Minutes,(dis_time_temp[3]<<4)|dis_time_temp[4]);
break;
case 5: dis_time_temp[6]=0;
dis_time_temp[7]=0;
W_Data(Seconds,(dis_time_temp[6]<<4)|dis_time_temp[7]);
break;
}//5
W_Data(0x8e,0x80); // 禁止写入
}/////////////////////////////////
}//5555
void menue_b2_work()
{
if(key_value==2)
{
if(++menue_b2_state>7)
{
menue_b2_state=0;
menue_state=1;
}
}
else if( key_value==3)
{///////////////////////////////////
W_Data(0x8e,0x00); //允许写入
switch(menue_b2_state)
{//5
case 1: if(++dis_date_temp[4]>9) dis_date_temp[4]=0;
W_Data(Year,(dis_date_temp[4]<<4)|dis_date_temp[5]);
break;
case 2:
if(++dis_date_temp[5]>9) dis_date_temp[5]=0;
W_Data(Year,(dis_date_temp[4]<<4)|dis_date_temp[5]);
break;
case 3: if(++dis_date_temp[7]>1) dis_date_temp[7]=0;
W_Data(Month,(dis_date_temp[7]<<4)|dis_date_temp[8]);
break;
case 4: if(dis_date_temp[7]<1)
{
if(++dis_date_temp[8]>9) dis_date_temp[8]=0;
W_Data(Month,(dis_date_temp[7]<<4)|dis_date_temp[8]);
}
else
{
if(++dis_date_temp[8]>4) dis_date_temp[8]=0;
W_Data(Month,(dis_date_temp[7]<<4)|dis_date_temp[8]);
}
break;
case 5: if(++dis_date_temp[10]>3) dis_date_temp[10]=0;
W_Data(Year,(dis_date_temp[10]<<4)|dis_date_temp[11]);
break;
case 6:
if(++dis_date_temp[11]>9) dis_date_temp[11]=0;
W_Data(Year,(dis_date_temp[10]<<4)|dis_date_temp[11]);
break;
case 7:
if(++rdata[5]>7) rdata[5]=1;
W_Data(Day,rdata[5]);
break;
}//5
W_Data(0x8e,0x80); // 禁止写入
}/////////////////////////////////
else if( key_value==1)
{///////////////////////////////////
W_Data(0x8e,0x00); //允许写入
switch(menue_b2_state)
{//5
case 1: if(dis_date_temp[4]--==0) dis_date_temp[4]=9;
W_Data(Year,(dis_date_temp[4]<<4)|dis_date_temp[5]);
break;
case 2:
if(dis_date_temp[5]--==0) dis_date_temp[5]=9;
W_Data(Year,(dis_date_temp[4]<<4)|dis_date_temp[5]);
break;
case 3: if(dis_date_temp[7]--==0) dis_date_temp[7]=1;
W_Data(Month,(dis_date_temp[7]<<4)|dis_date_temp[8]);
break;
case 4: if(dis_date_temp[7]<1)
{
if(dis_date_temp[8]--==0) dis_date_temp[8]=9;
W_Data(Month,(dis_date_temp[7]<<4)|dis_date_temp[8]);
}
else
{
if(dis_date_temp[8]--==0) dis_date_temp[8]=4;
W_Data(Month,(dis_date_temp[7]<<4)|dis_date_temp[8]);
}
break;
case 5: if(dis_date_temp[10]--==0) dis_date_temp[10]=3;
W_Data(Date,(dis_date_temp[10]<<4)|dis_date_temp[11]);
break;
case 6:
if(dis_date_temp[11]--==0) dis_date_temp[11]=9;
W_Data(Date,(dis_date_temp[10]<<4)|dis_date_temp[11]);
break;
case 7:
if(rdata[5]--==0) rdata[5]=7;
W_Data(Day,rdata[5]);
break;
}//5
W_Data(0x8e,0x80); // 禁止写入
}/////////////////////////////////
}
void menue_b3_work()
{
if(key_value==3)
{//55
if(menue_b3_state==0)
{
unsigned char temp= menue_up( menue_b3_which,menue_b3_where, menue_b3_num);
menue_b3_which=temp>>4;
menue_b3_where=temp&0x0f;
}
else if(menue_b3_state==1)
{//56
unsigned char temp=Flash_read_char(menue_b3_which+menue_b3_where+1);
if(++temp>24) temp=0;
Flash_write_char (menue_b3_which+menue_b3_where+1,temp);
}//56
else if(menue_b3_state==2)
{
unsigned char temp=Flash_read_char(menue_b3_which+menue_b3_where+5);
temp^=0x01;
Flash_write_char (menue_b3_which+menue_b3_where+5,temp);
}
}//55
else if(key_value==1)
{//66
if(menue_b3_state==0)
{//78
unsigned char temp= menue_down( menue_b3_which,menue_b3_where, menue_b3_num);
menue_b3_which=temp>>4;
menue_b3_where=temp&0x0f;
}//78
else if(menue_b3_state==1)
{//79
unsigned char temp=Flash_read_char(menue_b3_which+menue_b3_where+1);
if(temp--==0) temp=24;
Flash_write_char (menue_b3_which+menue_b3_where+1,temp);
}//79
else if(menue_b3_state==2)
{
unsigned char temp=Flash_read_char(menue_b3_which+menue_b3_where+5);
temp^=0x01;
Flash_write_char (menue_b3_which+menue_b3_where+5,temp);
}
}//66
else if(key_value==2)
{
if(menue_b3_state==2)
{
menue_b3_state=0;
}
else
{
menue_b3_state++;
}
if((menue_b3_which+menue_b3_where+1)==menue_b3_num)
{
menue_b3_state=0;
menue_state=1;
menue_b3_which=0;
menue_b3_where=0;
}
}
}
void menue_b4_work()
{
if(key_value==3)
{//55
if(menue_b3_state==0)
{
unsigned char temp= menue_up( menue_b4_which,menue_b4_where, menue_b4_num);
menue_b4_which=temp>>4;
menue_b4_where=temp&0x0f;
}
}//55
else if(key_value==1)
{//66
if(menue_b3_state==0)
{
unsigned char temp= menue_down( menue_b4_which,menue_b4_where, menue_b4_num);
menue_b4_which=temp>>4;
menue_b4_where=temp&0x0f;
}
}//66
else if(key_value==2)
{
if(menue_b4_state==1)
{
menue_b4_state=0;
}
else if((menue_b4_which+menue_b4_where+1)==menue_b4_num)
{
menue_state=1;
menue_b4_which=0;
menue_b4_where=0;
}
else
{
menue_b4_state=1;
}
}
}
void menue_state_change()
{
switch(menue_state)
{
case 0:
menue_work();
key_value=0;
break;
case 1:
menue_a1_work();
key_value=0;
break;
case 2:
menue_b1_work();
key_value=0;
break;
case 3:
menue_b2_work();
key_value=0;
break;
case 4:
menue_b3_work();
key_value=0;
break;
case 5:
menue_b4_work();
key_value=0;
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -