📄 text1.c
字号:
#include"reg51.h"
#define uchar unsigned char
#include"intrins.h"
uchar code zmtab[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e,0xff};
void delay(uchar del);
void init();
void ajcl(uchar jz);
uchar temp ,x,hz,lz,jz;
main()
{
jz=key();
P2=jz;
ajcl(jz);
}
//*************************************************************
key()
{P2=0XF0;
if((P2&0xf0)!=0xf0)
{ delay(10);
if((P2&0xf0)!=0xf0)
{hz=0xfe;
while(1)
{
P2=hz;
if ((P2&hz)!=hz)
{return(~P2);
break;
}
else
{hz=_crol_(hz,1);}
}
}
}
else
return 0;
}
//*************************************************************
void ajcl(uchar jz)
{
if(jz==0x11) P1=zmtab[0];
if(jz==0x21) P1=zmtab[1];
if(jz==0x41) P1=zmtab[2];
if(jz==0x81) P1=zmtab[3];
if(jz==0x12) P1=zmtab[4];
if(jz==0x22) P1=zmtab[5];
if(jz==0x42) P1=zmtab[6];
if(jz==0x82) P1=zmtab[7];
if(jz==0x14) P1=zmtab[8];
if(jz==0x24) P1=zmtab[9];
if(jz==0x44) P1=zmtab[10];
if(jz==0x84) P1=zmtab[11];
if(jz==0x18) P1=zmtab[12];
if(jz==0x28) P1=zmtab[13];
if(jz==0x48) P1=zmtab[14];
if(jz==0x88) P1=zmtab[15];
}
//*************************************************************
void delay(uchar del)
{
uchar i;
for(;del>0;del--)
for(i=0;i<125;i++)
{;}
}
//*************************************************************
/*
uchar hz,lz;
P2=0xf0; //置所有行为低电平,行扫描,列线输入(此时)
if((P2&0xf0)!=0xf0) //判断是否有有键按下(读取列的真实状态,若第4列有键按下则P1的值会变成0111 0000),有往下执行
{
delay(10); //延时去抖动(10ms)
if((P2&0xf0)!=0xf0) //再次判断列中是否是干扰信号,不是则向下执行
{
hz=0xfe; //逐行扫描初值(即先扫描第1行)
while((hz&0x10)!=0) //行扫描完成时(即4行已经全部扫描完成)sccode为1110 1111 停止while程序
{
P2=hz; //输出行扫描码
if ((P2&hz)!=hz) //***(P2&0xf0)!=0xf0***也可这样 本行有键按下(即P1(真实的状态)的高四位不全为1)
{
lz=(P2&0xf0)|0x0f; //列
while(P2&0xf0!=0xf0);
return((~hz)|(~lz)); //返回行和列
break; //有按键返回 提前退出循环
}
else //所扫描的行没有键按下,则扫描下一行,直到4行都扫描,此时sccode值为1110 1111 退出while程序
hz=_crol_(hz,1);//行扫描码左移一位
}
}
}
else
return 0; } //无键按下,返回0 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -