📄 8279.c
字号:
#include <absacc.h>
char xdata DisBuf[8]; /* 显示缓冲区 */
unsigned char code keyval[]={0xc1,0xc8,0xc9,0xd0}; /* 键值表 */
/****************************** 8279初始化函数 **************************/
void KbDisInit() {
XBYTE[0xc801]=0x00; /* 设置 8279 工作方式 */
XBYTE[0xc801]=0x22; /* 设置 8279 分频系数 */
XBYTE[0xc801]=0xDf; /* 清零 8279 */
while (XBYTE[0xc801] & 0x80);
XBYTE[0xc801]=0x80;
XBYTE[0xc800]=0xc8;
}
/****************************** 读键值函数 ******************************/
unsigned char ReadKey() {
unsigned char i,j;
if (XBYTE[0xc801] & 0x07) { /* 8279 Key put */
XBYTE[0xc801]=0x40; /* read 8279 FIFO */
i=XBYTE[0xc800]; /* i=keyval */
j=0;
while (i!=keyval[j]){j++;} /* look up keyval tabel */
return(j+1);
// return (XBYTE[0xc800]+1);
}
return (0); /* no Key put */
}
/***************************** 循环显示函数 *****************************/
void KeyShift() {
unsigned char i;
for (i=0; i<8; i++)
DisBuf[i]=DisBuf[i+1];
}
/****************************** 无按键处理函数 **************************/
void NoKey() {
;
}
/****************************** 0键处理函数 ****************************/
void k0() {
KeyShift();
DisBuf[7]=0;
}
/****************************** 1键处理函数 ****************************/
void k1() {
KeyShift();
DisBuf[6]=1;
}
/* k2, ...其它按键处理函数可在此处插入 */
code void (code * KeyProcTab[])()={NoKey, k0,k1 /* k2,... */};
/******************************** 主函数 ********************************/
void main() {
KbDisInit(); /* 初始化 */
while(1)
(* KeyProcTab[ReadKey()])(); /* 根据不同按键的值查表散转 */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -