📄 button.c
字号:
bit disappear_sw;
bit sheding_sw;
sbit wp24c16 = P2^6;
// *************** my board ****************
sbit P34 = P3^4;
sbit P35 = P3^5;
sbit P36 = P3^6;
sbit P37 = P3^7;
uchar button_code;
uchar menu_code;
uchar time_set_flag;
uchar tp,top;
bit vidio_flag,pm_f;
uchar floor_flag;
char ini_t_h[5]; //梯号
uchar i;
void ini_th()
{
ini_t_h[0]=0xff;
ini_t_h[1]=0x25;
ini_t_h[2]=0x00;
ini_t_h[3]=0x01;
ini_t_h[4]=0xff;
}
void Delay15_ms()
{
uint i,j,k;
for(k=0; k<10; k++)
for(i=48; i>0; i--)
for(j=10; j>0; j--);
}
void xjyy()
{
ISendByte(0x414,yy);
Delay_ms(2);
ISendByte(0x415,xj);
Delay_ms(2);
}
void xxcy()
{
ISendByte(0x412,cy);
Delay_ms(2);
ISendByte(0x413,xx);
Delay_ms(2);
}
void sjrq()
{
ISendByte(0x416,dis_calendar_flag);
Delay_ms(2);
ISendByte(0x417,dis_clock_flag);
Delay_ms(2);
}
bit read_button()
{
P34 = 1;
P35 = 1;
P36 = 1;
P37 = 1;
if( P34==0 | P35==0 |P36==0 | P37==0 )
{
Delay15_ms();
if( P34==0 | P35==0 |P36==0 | P37==0 )
{
if(P37==0){ while(~P37); button_code = 1;}
if(P36==0){ while(~P36); button_code = 2;}
if(P35==0){ while(~P35); button_code = 3;}
if(P34==0){ while(~P34); button_code = 4;}
}
else{button_code=0;}
}
else{button_code=0;}
if(button_code == 0) return( 0 );
else return( 1 );
}
void button_func()
{
//------------------------------------ //显示模式设定
// uchar i;
if( menu_code == 0 )
{
if( button_code == 1 )
{
button_code = 0;
disappear_row23();
menu_code++;if(menu_code>5) menu_code = 0;
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
dis_pv_set();
}
if( button_code == 2 )
{
button_code = 0;
dis_types++; if(dis_types>4) dis_types = 1;
switch(dis_types)
{
case 1:
dis_ioc();
break;
case 2:
dis_udc();
break;
case 3:
dis_lrc();
break;
case 4:
dis_dtc();
break;
default :
dis_types=1;
break;
}
sheding_time = 0;
sheding_sw = 1; // 进入设定状态
}
if( button_code == 3 )
{
button_code = 0;
switch(dis_types)
{
case 1:
vidio_flag = ~vidio_flag;
if(vidio_flag) synchronization = SYN_INTERNAL; //command 4,外同步选择
else synchronization = SYN_EXTERNAL; //command 4,内同步选择
MB90092_WriteByte(0xA2|synchronization);
MB90092_WriteByte(0x2B);
break;
case 2:
tp=cy;
cy=xx;
xx=tp;
MB90092_ClearScreen();
xxcy();
break;
case 3:
top=yy;
yy=xj;
xj=top;
// dis_number(ini_t_h); //显示梯号
xjyy();
break;
case 4:
dis_calendar_flag = ~dis_calendar_flag; //日历显示开关
dis_clock_flag = ~dis_clock_flag; //时钟显示开关
sjrq();
break;
default :
dis_types=1;
break;
}
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
sheding_time = 0;
sheding_sw = 1; // 进入设定状态
}
if( button_code == 4 )
{
button_code = 0;
sheding_time = 0;
sheding_sw = 1; // 进入设定状态
}
}
//----------------------------------------------------//屏幕水平/垂直位置设定
if( menu_code == 1 )
{
if( button_code == 1 )
{
button_code = 0;
disappear_row23();
menu_code++;if(menu_code>5) menu_code = 0;
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
dis_time_set();
}
if( button_code == 2 )
{
button_code = 0;
disappear_row23();
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
sheding_time = 0;
sheding_sw = 1; // 进入设定状态
pm_f = ~pm_f;
if (pm_f)
dis_p_set();
else
dis_v_set();
}
if( button_code == 3 )
{ //屏幕水平向左移
button_code = 0;
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
sheding_time = 0;
sheding_sw = 1; // 进入设定状态
if(pm_f)
{if(X_position > 0) X_position-- ;
MB90092_WriteByte(0xC0); //command 8
MB90092_WriteByte(X_position); //屏幕水平开始位置设定
dis_mov_h_l();
ISendByte(0x410,X_position);
Delay_ms(2);
}
else
{
if(Y_position > 0) Y_position-- ;
MB90092_WriteByte(0xBC); //command 7
MB90092_WriteByte(Y_position); //屏幕垂直开始位置设定
dis_mov_v_up();
ISendByte(0x411,Y_position);
Delay_ms(2);
}
}
if( button_code == 4 )
{ //屏幕水平向右移
button_code = 0;
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
sheding_time = 0;
sheding_sw = 1; // 进入设定状态
if(pm_f)
{if(X_position < 62) X_position++;
MB90092_WriteByte(0xC0); //command 8
MB90092_WriteByte(X_position); //屏幕水平开始位置设定
dis_mov_h_r();
ISendByte(0x410,X_position);
Delay_ms(2);
}
else
{
if(Y_position < 62) Y_position++;
MB90092_WriteByte(0xBC); //command 7
MB90092_WriteByte(Y_position); //屏幕垂直开始位置设定
dis_mov_v_down();
ISendByte(0x411,Y_position);
Delay_ms(2);
}
}
}
//---------------------------------------------------- 时间设定
if( menu_code == 2 )
{
if( button_code == 1 )
{
button_code = 0;
disappear_row23();
menu_code++;if(menu_code>5) menu_code = 0;
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
dis_floor_set();
}
if( button_code == 2 )
{
button_code = 0;
time_set_flag++;if(time_set_flag>12) time_set_flag = 0;
switch(time_set_flag)
{
case 0:
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
year_set(0x31);
break;
case 1:
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
year_set(0x32);
break;
case 2:
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
mon_set(0x31);
break;
case 3:
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
mon_set(0x32);
break;
case 4:
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
date_set(0x31);
break;
case 5:
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
date_set(0x32);
break;
case 6:
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
day_set();
break;
case 7:
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
hr_set(0x31);
break;
case 8:
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
hr_set(0x32);
break;
case 9:
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
min_set(0x31);
break;
case 10:
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
min_set(0x32);
break;
case 11:
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
sec_set(0x31);
break;
case 12:
disappear_time = 0;
disappear_sw = 1; // 启动消隐程序(在定时器中)
sec_set(0x32);
break;
default:
time_set_flag=0;
break;
}
sheding_time = 0;
sheding_sw = 1; // 进入设定状态
}
if( button_code == 3 ) //-----------key3------时间+
{
button_code = 0;
switch(time_set_flag)
{
// char temp;
case 0:
cur_time_cach[6]+=0x10;
// temp=(cur_time_cach[6]>>4)&0x0f;
if(((cur_time_cach[6]>>4)&0x0f)>9) cur_time_cach[6]&=0x0f; //年
v_Set1302( cur_time_cach );
break;
case 1:
cur_time_cach[6]++;
// temp=cur_time_cach[6]&0x0f;
if((cur_time_cach[6]&0x0f)>9) cur_time_cach[6]&=0xf0;
v_Set1302( cur_time_cach );
break;
case 2:
cur_time_cach[4]+=0x10;
// temp=(cur_time_cach[4]>>4)&0x0f;
if(((cur_time_cach[4]>>4)&0x0f)>1) cur_time_cach[4]&=0x0f; //月
v_Set1302( cur_time_cach );
break;
case 3:
cur_time_cach[4]++;
// temp=cur_time_cach[4]&0x0f;
if((cur_time_cach[4]&0x0f)>9) cur_time_cach[4]&=0xf0;
v_Set1302( cur_time_cach );
break;
case 4:
cur_time_cach[3]+=0x10;
// temp=(cur_time_cach[3]>>4)&0x0f;
if(((cur_time_cach[3]>>4)&0x0f)>3) cur_time_cach[3]&=0x0f; //日
v_Set1302( cur_time_cach );
break;
case 5:
cur_time_cach[3]++;
// temp=cur_time_cach[3]&0x0f;
if((cur_time_cach[3]&0x0f)>9) cur_time_cach[3]&=0xf0;
v_Set1302( cur_time_cach );
break;
case 6:
cur_time_cach[5]++;
if(cur_time_cach[5]>7) cur_time_cach[5]&=0xf1; //星期
v_Set1302( cur_time_cach );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -