📄 isr.c
字号:
#include "SPCE061A.h"
extern IntNum,KeyV,BF,u;
extern rundy();
void IRQ3(void) __attribute__ ((ISR));
void IRQ3(void)
{
__asm("INT OFF");
if(*P_INT_Ctrl&C_IRQ3_EXT1)
{
if ((IntNum > 0) && (IntNum < 9))
{
KeyV = KeyV >> 1;//因键盘数据是低>>高,结合上一句所以右移一位
if (*P_IOA_Data & 0x01) KeyV = KeyV | 0x80;//当键盘数据线为1时为1到最高位
}
IntNum++;
while (!P_IOB_Data & 0x04);//等待PS/2CLK拉高
if (IntNum > 10)
{
IntNum = 0;//当中断10次后表示一帧数据收完,清变量准备下一次接收
BF = 1;//标识有字符输入完了
__asm("INT OFF");;//关中断等显示完后再开中断 (注:如这里不用BF和关中断直接调Decode()则所Decode中所调用的所有函数要声明为再入函数)
*P_Watchdog_Clear=0x01;u=0;
}
}
*P_INT_Clear=0x0100;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -