📄 isrs.c
字号:
#include "bf5xx.h"
#include "types.h"
volatile uint8_t key;
volatile uint8_t key2;
volatile uint8_t key3;
volatile uint8_t key_up;
static int time;
/****************************************************************************
* 名称 :Init_Flags
* 功能 :当PF46为低电平时就触发中断,中断服务程序读取键盘
* 入口参数 :无
* 出口参数 :无
****************************************************************************/
EX_INTERRUPT_HANDLER(FlagA_ISR_KBD)
{
int i;
int data;
do{
i =* pCtrIn_Int_B;
}while((Keyy_INT&i)); //等待时钟线低电平
if ((time > 0) && (time < 9)) //截取第一帧数据
{
READ_PF_STAT(data);
if((data&SCL) == 0)
{
key = key>>1;
}
if((data&SCL) == 0x0001)
{
key = key>>1;
key = key|0x80;
}
}
if ((time > 11) && (time < 20)) //截取第二帧数据
{
READ_PF_STAT(data);
if((data&SCL) ==0 )
{
key2 = key2>>1;
}
if((data&SCL)==0x0001)
{
key2 = key2>>1;
key2 = key2|0x80;
}
}
if ((time > 22) && (time < 31)) //截取第三帧数据
{
READ_PF_STAT(data);
if((data&SCL) == 0)
{
key3 = key3>>1;
}
if((data&SCL) == 0x0001)
{
key3 = key3>>1;
key3 = key3|0x80;
}
}
time++;
do{
i =* pCtrIn_Int_B;
}while(!(i&Keyy_INT)); //等待时钟线到高电平
if(time >30)
{
*pFIO_FLAG_C = 0x0020; //清中断
time = 0;
key_up = 1;
//*pFIO_MASKA_C = 0x0020; //禁止中断
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -