📄 key.h~
字号:
#ifndef __KEY_H__
#define __KEY_H__
#include "MEGA16.h"
#define PA6 6
#define PA7 7
#define PB0 0
#define PB1 1
#define PB2 2
#define PB3 3
#define PB4 4
#define PB5 5
#define PB6 6
#define PB7 7
#define up_down_reg 30000 //升降延时
#define key_delay 250 //安键延时
#define add_reg 30 //编码器延时
#define cw_add_reg 14
uchar cw_add=cw_add_reg; //正转
uchar wc_add=cw_add_reg; //反转
uchar swadd00=0;
uchar swadd10=0;
uchar swadd11=0;
uchar swadd01=0;
uchar cw=0;
uint dlay_add=0;
uchar b_d=1; //个位十位
uchar cw_reg=0;
uint upadd=0;
uint downadd=0;
uchar secadd=0;
bit b_sec_flash=0;
uchar pauseadd=0;
uchar runadd=0;
uchar preadd=0;
uchar stopadd=0;
uint inqadd=0;
uint setadd=0;
uint mode_seav=0;
uchar temp_sec_add=0;
uchar rpm_sec_add=0;
bit b_temp_timer=0;
bit b_rpm_timer=0;
bit b_up_h=0;
//**************************减************************************
void minus(void)
{
timer_clr_cw=0;
if((set_state==1)&&(mode==3))
{b_temp_on_of=1;up_sign=0x03;}
if((set_state==2)&&(mode==3))
{
if(set_temperature_data==0) //跳正温
set_temperature_data=32768;
if(set_temperature_data>=32768) //正温加
{
set_temperature_data+=b_d;
if(set_temperature_data>36268)
set_temperature_data=36268;
}
if((set_temperature_data!=0)&&(set_temperature_data<=200)&&(set_temperature_data>=b_d)) //负温减
set_temperature_data-=b_d;
}
if((set_state==3)&&(mode==3))
{
if(set_temp_timer_data<5999-b_d)
set_temp_timer_data+=b_d;
}
if((set_state==4)&&(mode==3))
{
b_rpm_on_of=1;
down_sign|=0x02;
down_sign&=0xfb;
}
if((set_state==5)&&(mode==3)&&(set_rpm_data<2000))
{
set_rpm_data+=b_d;
if(set_rpm_data>2000)
set_rpm_data=2000;
}
if((mode==2)&&(set_rpm_data<2000))
{
set_rpm_data+=b_d;
if(set_rpm_data>2000)
set_rpm_data=2000;
b_set_run_rpm=1;
b_sec_flash=1;
b_sec_flash_reg=0;
timer_3s_add=0;
}
if((set_state==6)&&(mode==3))
{
if(set_rpm_timer_data<5999-b_d)
set_rpm_timer_data+=b_d;
}
if((set_state==7)&&(mode==3))
{
b_up_down_on_of=1;
down_sign|=0x40;
down_sign&=0x7f;
}
}
//**************************加************************************
void adding(void)
{
timer_clr_cw=0;
if((set_state==1)&&(mode==3))
{b_temp_on_of=0;up_sign=0x05;}
if((set_state==2)&&(mode==3))
{
if(set_temperature_data>=32768+b_d) //正温减
set_temperature_data-=b_d;
if(set_temperature_data<=200-b_d)//负温加
set_temperature_data+=b_d;
if(set_temperature_data==32768)//跳负温
set_temperature_data=0;
if((set_temperature_data<32768)&&(set_temperature_data>200))
set_temperature_data=200;
}
if((set_state==3)&&(mode==3))
{
if(set_temp_timer_data>=b_d)
set_temp_timer_data-=b_d;
}
if((set_state==4)&&(mode==3))
{
b_rpm_on_of=0;
down_sign|=0x04;
down_sign&=0xfd;
}
if((set_state==5)&&(mode==3)&&(set_rpm_data>0))
{
set_rpm_data-=b_d;
if((set_rpm_data<=0)||(set_rpm_data>2000))
set_rpm_data=0;
}
if((mode==2)&&(set_rpm_data>0))
{
if(set_rpm_data<10)
b_d=1;
set_rpm_data-=b_d;
if((set_rpm_data<=0)||(set_rpm_data>2000))
set_rpm_data=0;
b_set_run_rpm=1;
b_sec_flash=1;
b_sec_flash_reg=0;
timer_3s_add=0;
}
if((set_state==6)&&(mode==3))
{
if(set_rpm_timer_data>=b_d)
set_rpm_timer_data-=b_d;
}
if((set_state==7)&&(mode==3))
{
b_up_down_on_of=0;
down_sign|=0x80;
down_sign&=0xbf;
}
}
//***************************************************************
void key(void)
{ uchar i;
//*************************旋扭编码器***************************
if((PIND & (1<<PD2))&&!(PIND & (1<<PD3))) //10加
{
swadd10+=1;
if(swadd10>add_reg)
swadd10=add_reg+1;
if(swadd10==add_reg-1)
cw_reg=0x10;
}
else
swadd10=0;
if(!(PIND & (1<<PD2))&&(PIND & (1<<PD3))) //01减
{
swadd01+=1;
if(swadd01>add_reg)
swadd01=add_reg+1;
if(swadd01==add_reg-1)
cw_reg=0x01;
}
else
swadd01=0;
if(!(PIND & (1<<PD2))&&!(PIND & (1<<PD3))) //00
{
swadd00+=1;
if(swadd00>add_reg)
swadd00=add_reg+1;
if(swadd00==add_reg-1)
{
if(dlay_add>20)//个位处理 慢
b_d=1;
else //十位处理
b_d=10; //快
dlay_add=0;
if(cw_reg==0x10)
{ cw_add+=1;
wc_add=0;
if(cw_add>=cw_add_reg)
{
adding();
cw_add=cw_add_reg+1;
}
}
else
{
wc_add+=1;
cw_add=0;
if(wc_add>=cw_add_reg)
{ wc_add=cw_add_reg+1;
minus();
}
}
}
}
else
swadd00=0;
if((PIND & (1<<PD2))&&(PIND & (1<<PD3))) //11
{
swadd11+=1;
if(swadd11>add_reg)
swadd11=add_reg+1;
if(swadd11==add_reg-1)
{
if(dlay_add>20)//个位处理 慢
b_d=1;
else //十位处理
b_d=10; //快
dlay_add=0;
if(cw_reg==0x01)
{ cw_add+=1;
wc_add=0;
if(cw_add>=cw_add_reg)
{
adding();
cw_add=cw_add_reg+1;
}
}
else
{
wc_add+=1;
cw_add=0;
if(wc_add>=cw_add_reg)
{ wc_add=cw_add_reg+1;
minus();
}
}
}
}
else
swadd11=0;
//**************************上升下降*************************
if(!(PINB & (1<<PB7))&&(PINB & (1<<PB6))&&(PINA & (1<<PA7))) //下降
{
downadd+=1;
if(downadd>up_down_reg)
downadd=up_down_reg+1;
if(downadd==up_down_reg-1)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -