📄 89keyc.c
字号:
#include<reg51.h>
sbit key = P2^1;
sbit dat = P2^2;
sbit clk = P2^3;
sbit cs = P2^4;
void delay(unsigned char mst) //延时子程序
{ unsigned char i;
for (i=0; i<mst; i++)
;
}
void send(unsigned char temp) //发送子程序
{
unsigned char i;
cs=0;
delay(7);
for(i=0;i<8;i++)
{
dat=(temp&0x80)?1:0;
clk=1;
delay(1);
clk=0;
delay(1);
temp=temp<<1;
}
dat=1;
}
receive() //接收子程序
{
unsigned char i,rec_buf;
dat=1;
delay(7);
for(i=8;i>0;i--)
{
rec_buf=rec_buf<<1;
clk=1;
delay(1);
rec_buf=(dat==0)?rec_buf&0xfe:rec_buf|0x01;
clk=0;
delay(1);
}
dat=0;
return rec_buf;
}
void write279(unsigned char cmd1, unsigned char cmd2)
{
send(cmd1);
send(cmd2);
cs=1;
}
keyscan(void) //键扫子程序
{
static bit keypress=0;
static signed char keycode;
if(key==0)
{
if(keypress==0)
{
send(0x15);
keycode=receive();
cs=1;
keypress=1;
}
return 0xff;
}
if(keypress==1)
{
keypress=0;
return keycode;
}
return 0xff;
}
void main()
{
unsigned char c;
key=1;
clk=0;
cs =1;
send(0xa4);
cs=1;
while(1)
{
if((c=keyscan())!=0xff)
write279(0xc8,c);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -