📄 key.c
字号:
#include<reg51.h>
unsigned char key,key_h,kpush;
unsigned int key_1;
//按键连接到p1.0,p1.1,p1.2
void int_t0(void) interrupt 1 using 1
{
TLO=TL0+30;
TH0=Oxfb;//800
if((P1&0x7==0x7)/*按键判别*/
{
if((key_1>30)&&(key_1<800)&&(key_h>30))
{key=kpush;}
if((++key_h)>200)key_h=200;
key_1=0;
if(key>=0x80)key=0;
}
else
{
kpush=P1&0x7;
key_1++;
if((key_1>800)&&(key_h>30))
{
key=kpush|0x80;
key_h=0;
key_1=0;
}
}
}
void main(void)
{
TMOD=0x1;
TR0=1;
ET0=1;
EA=1;
while(1)
{
while(!key){}
switch(key)
{
case 1: break;
case 2: break;
}
}
}
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
void delay(void);
uchar keyscan();
void getkey(void)
{ uchar key;
while(1)
{key=keyscan();
delay();
}
}
void delay(void)
{ uchar i;
for(i=0;i<200;i++){}
}
uchar keyscan(void)
{
uchar code_h;
uchar code_l;
P1=0xf0;
if((P1&0xF0)!=0xF0)
{
delay();
if(P1&0xF0)!=0xF0)
{
code_h=0xFE;
P1=code_h;
while((P1&0xF0)!=0xF0)
{
if(P1&0xF0)!=0xF0)
{
code_l=(P1&0xF0|0x0F);
return((~code_h)+(~code_l));
}
else
code_h=(code_h<<1)|0x01;
}
}
}
return(0); //无按键
}
在C语言中嵌入汇编语句
#pragram asm
汇编行
#pragram endasm
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -