本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
PS/2键盘接口 为什么每次按同一个键数码管值不同 按A的话也不是0X1C。。。
#include<reg52.h>
#define ui unsigned int
#define uc unsigned char
sbit p22=P2^2;
sbit p23=P2^3;
sbit p24=P2^4;
sbit keyclk=P3^2;
sbit keydata=P1^5;
uc num,dat,m,a,b;
uc code dutab[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,
0x71};
uc tab[3];
void int0();
void delay(uc i);
void main()
{
IT0=1;
EA=1;
EX0=1;
while(1)
{
if(m==3)
{
m=0;
a=tab[0]%16;
b=tab[0]/16;
}
p22=1;
p23=1;
p24=1;
P0=dutab[a];
delay(50);
p22=0;
p23=1;
p24=1;
P0=dutab;
delay(50);
}
}
void int0() interrupt 0
{
if((num>0)&&(num<9))
{
dat=dat>>1;
if(keydata) dat=dat|0x80;
}
num++;
if(num>10)
{
num=0;
tab[m]=dat;
m++;
}
}
void delay(uc i)
{
uc j;
for(;i>0;i--)
for(j=19;j>0;j--);
}
|