📄 89pc-mcu.c
字号:
#include<reg51.h>
sbit bee= P2^0;
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(20);
for(i=0;i<8;i++)
{
dat=(temp&0x80)?1:0;
clk=1;
delay(4);
clk=0;
delay(4);
temp=temp<<1;
}
dat=1;
}
void write279(unsigned char cmd1, unsigned char cmd2)
{
send(cmd1);
send(cmd2);
cs=1;
}
receive() //接收子程序
{
unsigned char i,rec_buf;
dat=1;
delay(20);
for(i=8;i>0;i--)
{
rec_buf=rec_buf<<1;
clk=1;
delay(4);
rec_buf=(dat==0)?rec_buf&0xfe:rec_buf|0x01;
clk=0;
delay(4);
}
dat=0;
return rec_buf;
}
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;
}
return 0xff;
}
if(keypress==1)
{keypress=0;
return keycode;
}
return 0xff;
}
void uarinit()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
ET1=0;
PCON=0x80;
SCON=0x50;
EA=1;
ES=1;
}
void uart_rec() interrupt 4
{
unsigned char i;
ES=0;
RI=0;
i=SBUF;
write279(0xc9,i/16);
write279(0xc8,i%16);
ES=1;
}
main()
{
unsigned char c=0;
key=1;
clk=0;
cs =1;
send(0xa4);
cs=1;
uarinit();
waitkey:
c=keyscan();
if(c!=0xff)
{
write279(0xcf,c);
TI=0;
SBUF=c;
while(!TI);
TI=0;
}
goto waitkey;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -