📄 hw11.c
字号:
#include<reg51.h>
#include<absacc.h>
#define com XBYTE[0x7F01]
#define dat XBYTE[0x7F00]
#define uchar unsigned char
uchar code keyval[20]={0xc9,0xc1,0xd1,0xe1,0xc8,0xd8,0xe8,0xc0,0xd0,0xe0,0xf0,0xf8,0xf1,0xf9,0xe9,0xd9};
uchar code keyfun[4]={0xf2,0xfa,0xf3,0xfb};
uchar code table[20]={0x0c,0x9F,0x4A,0x0B,0x99,0x29,0x28,0x8F,0x08,0x09,0x88,0x38,0x6C,0x1A,0x68,0xe8};
uchar idata diss[8]={0,1,2,3,4,5,6,7};
sbit clflag=ACC^7;
uchar diskeyin();
uchar deky();
uchar bit1=0x85;
void main(void)
{
uchar i;
com=0x00; //keyboard,display mode
com=0x32; //divide frequency
com=0xdf; //clear all
do{ACC=com;}
while(clflag==1); //wait clear end
//com=0x90;
com=0x85;
dat=0xc8;
while(1)
{diskeyin();
}
}
void delay(unsigned int i)
{
unsigned int j,k;
for(k=0;k<i;k++)
for(j=0;j<100;j++);
}
uchar diskeyin()
{
uchar i,j,m,n,comp;
while(deky()==0);
com=0x40; //read FIFO RAM order
i=dat;
comp=i;
for(j=0;j<=15;j++)
{if(comp==keyval[j])
{com=0x50;
com=bit1--;
dat=table[j];
if(bit1==0x7f) {bit1=0x85;}
}
}
for(n=0;n<=3;n++)
{ if(comp==keyfun[3])
{com=0xdf; //clear all
do{ACC=com;}
while(clflag==1); //wait clear end
com=0x85;
dat=0xc8;
bit1=0x85;
diskeyin();
}
if(comp==keyfun[n])
{while(1)
{bit1=0x80;
for(m=0;m<6;m++)
{com=0x50;
com=bit1++;
dat=table[n];
delay(100);
dat=0xff;
}
}
}
}
}
uchar deky(void)
{ uchar k;
k=com;
return(k&0x0f);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -