📄 keyboard.c
字号:
#include <AT89X55.H>
#include<absacc.h>
#include <string.h>
#include "keyboard.h"
/******************************* 显示字符*****************************************/
void print(char *pdat)
{
int i,len;
len = strlen(pdat);
for(i=0;i<len;i++)
{
SBUF = pdat[i];
while(TI != 1)
{
;
}
TI = 0;
}
}
/*******************************显示数字*****************************************/
void printhex(ulong dat)
{
uchar temp;
char i;
for(i=28;i>=0;i=i-4)
{
temp = (dat)>>i;
temp = temp&0xf;
if(temp >= 0 && temp <=9) temp = temp + '0';
else if(temp >= 0xa && temp <= 0xf) temp = temp + '0' +7;
SBUF = temp;
while(TI != 1)
{
;
}
TI = 0;
}
}
/******************************* 8279延迟函数*****************************************/
void delay8279()
{
int i;
for(i=0;i<200;i++);
}
/******************************* 向8279发命令*****************************************/
uchar SendCom(uchar com)
{
A1 = 0; // A1 = P3^5; 定时器 T1
A0 = 0; // A0 = P3^4; 定时器 TO
A08279 = 1; //the signale in or out are interpreted as a command or status
Com8279 = com;
delay8279();
return 0;
}
/******************************* 8279读数据*****************************************/
uchar GetFiFoStatus()
{
uchar temp;
A08279 = 1; //
A0 = 0; // A0 = P3^4; 定时器 TO
A1 = 0; // A1 = P3^5; 定时器 T1
temp = Dat8279;
return temp;
}
/******************************* 8279读数据*****************************************/
uchar RdData()
{
uchar temp; //i,num;
A1 = 0;
A0 = 0;
SendCom(0x40); // read FIFO
A08279 = 0; // 数据
temp = Dat8279;
return temp;
}
/******************************* 初始化8279*****************************************/
Init8279()
{
EX1 = 1; //外中断1中断允许
IE1 = 0; //INT1中断请求标志位,有外部中断请求时置1,
IT1 = 1; //INT1 触发方式控制位 ,为负跳变触发方式
A1 = 0;
A0 = 0;
SendCom(0); //设置键盘工作方式 两键锁定
SendCom(0x20 | 18); //设置时钟频率 大约为100KHZ
return 1;
}
/******************************* 外中断INT1******************************************/
void KeyIsr() interrupt 2 using 0
{
uchar temp;
print("int1\r\n");
temp = RdData();
if(temp == 0) return ;
print("in int data is:");
printhex(temp);
print("\r\n");
print("test 8 :");
printhex(0x8);
print("\r\n");
IE1 = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -