📄 key.c
字号:
#include <iom16v.h>
#include <macros.h>
#include <eeprom.h>
#include "delay.h"
#include "key.h"
#include "main.h"
extern unsigned char state;
extern unsigned char state0;
extern unsigned char state_other;
extern unsigned char key;
extern unsigned char state2;
extern unsigned char in_out_number;
/****************************************************
键盘初始化函数
****************************************************/
void key_init(void)
{
SFIOR&=0b11111011;
}
/*外控初始化*/
void out_init(void)
{
PINA&=~((1<<EX_RS)|(1<<EX_ZF));
PORTA|=(1<<EX_RS)|(1<<EX_ZF);
PIND&=~(1<<EX_PULL);
PORTD|=(1<<EX_PULL);
}
/****************************************************
键盘扫描函数,注意本函数不作按键释放检查
返回值:1、没有键按下返回0x7f
2、如果shift按下,返回值最高位为1
3、其余键按下时,返回键名对应数值
****************************************************/
unsigned char scan_key(void)
{
unsigned char what_key;
what_key=0;
return what_key; //返回按键值
}
void rs(void)
{
key=runstop_nu;
}
void zf(void)
{
key=cwccw_nu;
}
/*外控按键处理函数*/
void out_key(void)//abcd
{
unsigned char i;
unsigned char sta;
unsigned char sta0;
sta=state;
sta0=state0;
//正反转
if (in_out_number>=2)
{
i=PINA;
if ((i&(1<<EX_RS))==0) //高电平
{
if (sta&(1<<RUN_STOP)) //启停判断
{rs();}
}
else //低电平
{
if ((sta&(1<<RUN_STOP))==0) //启停判断
{rs();}
}
i=PINA;
if ((i&(1<<EX_ZF))==0) //高电平
{
if (sta&(1<<CW_CCW)) //正反判断
{zf();}
}
else //低电平
{
if ((sta&(1<<CW_CCW))==0) //正反判断
{zf();}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -