📄 key.c
字号:
#include <iom64v.h>
#include <macros.h>
#include "key.h"
#define uchar unsigned char
#define uint unsigned int
#define key1 BIT(4)
#define key2 BIT(5)
#define key3 BIT(6)
#define key4 BIT(7)
uchar keybuf;
#pragma interrupt_handler Read_Keybroad:11
/******************************************************************************/
void Read_Keybroad(void)
{
static uchar push = 0;
TCCR2 = 0X00;
DDRF &= 0x0f;
PORTF |= 0xf0;
NOP();
NOP();
// Print_str("I,am herer\r\n");
if((PINF & 0xf0) == 0xf0){
DDRF |= 0x80;
PORTF &= 0x7f; //输出0
NOP();
NOP();
if((PINF & 0x70) == 0x70){//这里表示S2、S3、S7没有按下
push = 0;
TCCR2 = 0X05;
return;
}
if(push){//键没有释放
TCCR2 = 0X05;
return;
}
switch(PINF & 0x70)
{
case 0b01100000: keybuf = UP; push=1; break;//s1
case 0b01010000: keybuf = DOWN; push=1; break;//s6
case 0b00110000: keybuf = LIFT; push=1; break;//s6
default : KEYBUF_NULL;
}
TCCR2 = 0X05;
return;
}// if((PINF & 0xf0) == 0xf0)
if(push){TCCR2 = 0X05;return;}//键没有释放
switch(PINF & 0x70)
{
case 0b01100000: keybuf = RIFT; push=1; break;//s4
case 0b01010000: keybuf = ESC; push=1; break;//s5
case 0b00110000: keybuf = ENTER;push=1; break;//s8
default : KEYBUF_NULL;
}
TCCR2 = 0X05;
return;
}
void key_init(void)
{
TCCR2 = 0x00; //stop
TCNT2 = 0x00; //set count
TIMSK |= 1<<TOIE2;
TCCR2 = 0x05; //stop
SEI();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -