⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key.h

📁 基于AVR mega16的电梯控制程序。现在几经能正常使用。
💻 H
字号:
#ifdef _KEY_
    #define _KEY
#else
    #define _KEY extern
#endif

#define KEY_NOTHING 0
#define KEY_START   1
#define KEY_PRESS   2
#define KEY_WAIT    3
#define KEY_RELEASE 4

//below is 7 floor key input
#define FLOOR_1        0
#define FLOOR_2        1
#define FLOOR_3        2
#define FLOOR_4        3
#define FLOOR_5        4
#define FLOOR_6        5
#define FLOOR_7        6
#define FLOOR1       ((PINA & (0x01 << FLOOR_1)) >> FLOOR_1) 
#define FLOOR2       ((PINA & (0x01 << FLOOR_2)) >> FLOOR_2) 
#define FLOOR3       ((PINA & (0x01 << FLOOR_3)) >> FLOOR_3)   
#define FLOOR4       ((PINA & (0x01 << FLOOR_4)) >> FLOOR_4)   
#define FLOOR5       ((PINA & (0x01 << FLOOR_5)) >> FLOOR_5)   
#define FLOOR6       ((PINA & (0x01 << FLOOR_6)) >> FLOOR_6)   
#define FLOOR7       ((PINA & (0x01 << FLOOR_7)) >> FLOOR_7) 
//below is 7 near switches input
#define SWITCH_1        0
#define SWITCH_2        1
#define SWITCH_3        2
#define SWITCH_4        3
#define SWITCH_5        4
#define SWITCH_6        5
#define SWITCH_7        6

#define SWITCH1       ((PINB & (0x01 << SWITCH_1)) >> SWITCH_1)
#define SWITCH2       ((PINB & (0x01 << SWITCH_2)) >> SWITCH_2)
#define SWITCH3       ((PINB & (0x01 << SWITCH_3)) >> SWITCH_3)
#define SWITCH4       ((PINB & (0x01 << SWITCH_4)) >> SWITCH_4)
#define SWITCH5       ((PINB & (0x01 << SWITCH_5)) >> SWITCH_5)
#define SWITCH6       ((PINB & (0x01 << SWITCH_6)) >> SWITCH_6)
#define SWITCH7       ((PINB & (0x01 << SWITCH_7)) >> SWITCH_7)

//below is 7 sect led to be display; use 74ls138
//74LS138  1        2       3
//         PD5      PD6      PD7
#define A_SECT        {PORTD |= 0x20; PORTD &= 0xb7;}              
#define B_SECT        {PORTD |= 0x40; PORTD &= 0xd7;}                       
#define C_SECT        {PORTD |= 0x20; PORTD &= 0xf7;}                       
#define D_SECT        {PORTD |= 0x20; PORTD &= 0xdf;}                       
#define E_SECT        {PORTD |= 0x20; PORTD &= 0xdf;}                       
#define F_SECT        {PORTD |= 0x20; PORTD &= 0xdf;}                       
#define G_SECT        {PORTD |= 0x20; PORTD &= 0xdf;}                       
#define DP_SECT       {PORTD |= 0x20; PORTD &= 0xdf;}      

#define SOS_KEY             ((PINC & 0x80) >> 7)   //sos key inout      PC7  急停
#define ALARM_KEY           ((PINC & 0x40) >> 6)   //alarm key inout    PC6  报警
#define ALARM_OUT_LOW       {PORTD &= 0xef;}      //alarm output       PORTD4
#define ALARM_OUT_HIGH      {PORTD |= 0x10;}      //alarm output       PORTD4
#define ERR_OUT_LOW         {PORTA &= 0x7f;}      //err statas outout  PORTA7
#define ERR_OUT_HIGH        {PORTA |= 0x80;}      //err statas outout  PORTA7


#define MOTOR_RIGHT_ON      {PORTD &= 0xfb;}      //motor turn right output 正转,	PORTD2
#define MOTOR_RIGHT_OFF     {PORTD |= 0x04;}      //motor turn right stop
#define MOTOR_LEFT_ON       {PORTD &= 0xf7;}      //motor turn left  output 正转,	PORTD3
#define MOTOR_LEFT_OFF      {PORTD |= 0x08;}      //motor turn left  stop

#define SPEAK_OFF           {PORTC &= 0xFD;}      //SPEAK OFF       按键音关闭
#define SPEAK_ON            {PORTC |= 0x02;}      //SPEAK ON        按键音打开


_KEY void Key_Init(void);
_KEY void key_action(void);
_KEY void Beep(unsigned int Time,unsigned char Times);
_KEY void ReadKey(void);
_KEY void AlarmKeyAction(void);
_KEY void SOSAction(void);
_KEY void FloorSwtichAction(void);
_KEY void FloorKeyAction(void);


_KEY unsigned  int machine_status;  //设备运行状态

//beep
_KEY unsigned int  Beep_Time;       //蜂鸣时间长度
_KEY unsigned char Beep_Times;      //蜂鸣次数
_KEY unsigned char Beep_Begin;      //蜂鸣开始标志
_KEY unsigned int  Beep_Time_Count; //蜂鸣时间计数
_KEY unsigned char Beep_Times_Count;//蜂鸣次数计数
_KEY unsigned char Floor;           //当前楼层
_KEY unsigned char FloorSwtich;     //接近开关处于第几层
_KEY unsigned char FloorToGo;      //楼层按键按下的楼层标志,0位表示第1层。置为1时表示有人要去1层。

_KEY struct
{
     unsigned char SOS;             
     unsigned char SOSBak;            
     unsigned char SOSStatus;
     
     unsigned char FloorKey;        
     unsigned char FloorKeyBak;       
     unsigned char FloorKeyStatus;
     unsigned  int FloorKeySound;
     unsigned char FloorSwtich;     
     unsigned char FloorSwtichBak;     
     unsigned char FloorSwtichStatus;
     
     unsigned char AlarmKey;       
     unsigned char AlarmKeyBak;        
     unsigned char AlarmKeyStatus;
     unsigned  int AlarmKeyCounts;
     
}  Key;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -