📄 text1.c
字号:
/*本程序为键盘扫描程序,各键值初定为0x00-0x09对应各个数字键,0x0A-确认,0x0B清除,0x0C编号
,0x0D加液,0x0E菜单,0x0F-走纸,0x10-打印,0x11-关机,0x12-左方向键,0x13右方向键,0x14上方
向键,0x15下方向键*/
#include <C8051F020.H>
#define uchar unsigned char
#define uint unsigned int
void whatkey(void);
/*
void key_on(uchar ikey);
*/ /*函数声明*/
void main() /*主函数*/
{
while(1)
whatkey();
}
/*
void key_on(uchar ikey)
{
switch(ikey)
{
case 0x00: 按键0操作;
break;
case 0x01: .........
....................
}
}
*/ /*具体执行函数*/
void whatkey(void) /*扫描函数,判断哪个按键按下*/
{
uchar key; /*定义形参,代表具体按键*/
uchar i,j; /*定义俩参数*/
P4=0x01;
P5^0=0;
P5^1=0;
P5^2=0; /*第一排键判断赋值*/
if(P4==0x21&&P5^0==0&&P5^1==0&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x21&&P5^0==0&&P5^1==0&&P5^2==0) /*再次判断*/
key=0x07; /*7键*/
/*
key_on(key);
*/ /*执行程序*/
}
else if(P4==0x41&&P5^0==0&&P5^1==0&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x41&&P5^0==0&&P5^1==0&&P5^2==0) /*再次判断*/
key=0x08; /*8键*/
/*
key_on(key);
*/ /*执行程序*/
}
else if(P4==0x81&&P5^0==0&&P5^1==0&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x81&&P5^0==0&&P5^1==0&&P5^2==0) /*再次判断*/
key=0x09; /*9键*/
/*
key_on(key);
*/ /*执行程序*/
}
else if(P4==0x01&&P5^0==1&&P5^1==0&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x01&&P5^0==1&&P5^1==0&&P5^2==0) /*再次判断*/
key=0x0C; /*编号键*/
/*
key_on(key);
*/ /*执行程序*/
}
else if(P4==0x01&&P5^0==0&&P5^1==1&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x01&&P5^0==0&&P5^1==1&&P5^2==0) /*再次判断*/
key=0x0D; /*加液键*/
/*
key_on(key);
*/ /*执行程序*/
}
else if(P4==0x01&&P5^0==0&&P5^1==0&&P5^2==1) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x01&&P5^0==0&&P5^1==0&&P5^2==1) /*再次判断*/
key=0x0E; /*菜单键*/
/*
key_on(key);
*/ /*执行程序*/
}
P4=0x02;
P5^0=0;
P5^1=0;
P5^2=0; /*第二排键判断赋值*/
if(P4==0x22&&P5^0==0&&P5^1==0&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x22&&P5^0==0&&P5^1==0&&P5^2==0) /*再次判断*/
key=0x04; /*4键*/
/*
key_on(key);
*/ /*执行程序*/
}
else if(P4==0x42&&P5^0==0&&P5^1==0&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x42&&P5^0==0&&P5^1==0&&P5^2==0) /*再次判断*/
key=0x05; /*5键*/
/*
key_on(key);
*/ /*执行程序*/
}
else if(P4==0x82&&P5^0==0&&P5^1==0&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x82&&P5^0==0&&P5^1==0&&P5^2==0) /*再次判断*/
key=0x06; /*6键*/
/*
key_on(key);
*/ /*执行程序*/
}
else if(P4==0x02&&P5^0==1&&P5^1==0&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x02&&P5^0==1&&P5^1==0&&P5^2==0) /*再次判断*/
key=0x0F; /*走纸键*/
/*
key_on(key);
*/ /*执行程序*/
}
else if(P4==0x02&&P5^0==0&&P5^1==1&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x02&&P5^0==0&&P5^1==1&&P5^2==0) /*再次判断*/
key=0x10; /*打印键*/
/*
key_on(key);
*/ /*执行程序*/
}
else if(P4==0x02&&P5^0==0&&P5^1==0&&P5^2==1) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x02&&P5^0==0&&P5^1==0&&P5^2==1) /*再次判断*/
key=0x11; /*关机键*/
/*
key_on(key);
*/ /*执行程序*/
}
P4=0x04;
P5^0=0;
P5^1=0;
P5^2=0; /*第三排键判断赋值*/
if(P4==0x24&&P5^0==0&&P5^1==0&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x24&&P5^0==0&&P5^1==0&&P5^2==0) /*再次判断*/
key=0x01; /*1键*/
/*
key_on(key);
*/ /*执行程序*/
}
else if(P4==0x44&&P5^0==0&&P5^1==0&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x44&&P5^0==0&&P5^1==0&&P5^2==0) /*再次判断*/
key=0x02; /*2键*/
/*
key_on(key);
*/ /*执行程序*/
}
else if(P4==0x84&&P5^0==0&&P5^1==0&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x84&&P5^0==0&&P5^1==0&&P5^2==0) /*再次判断*/
key=0x03; /*3键*/
/*
key_on(key);
*/ /*执行程序*/
}
/*
else if(P4==0x04&&P5^0==1&&P5^1==0&&P5^2==0)
{
for(i=0;i<50;i++)
for(j=0;j<20;j++);
if(P4==0x04&&P5^0==1&&P5^1==0&&P5^2==0)
key=0x..;
}
*/ /*预留键*/
else if(P4==0x04&&P5^0==0&&P5^1==1&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x04&&P5^0==0&&P5^1==1&&P5^2==0) /*再次判断*/
key=0x14; /*上方向键*/
/*
key_on(key);
*/ /*执行程序*/
}
/*
else if(P4==0x04&&P5^0==0&&P5^1==0&&P5^2==1)
{
for(i=0;i<50;i++)
for(j=0;j<20;j++);
if(P4==0x04&&P5^0==0&&P5^1==0&&P5^2==1)
key=0x..;
}
*/ /*预留键*/
P4=0x08;
P5^0=0;
P5^1=0;
P5^2=0; /*第四排键判断赋值*/
if(P4==0x28&&P5^0==0&&P5^1==0&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x28&&P5^0==0&&P5^1==0&&P5^2==0) /*再次判断*/
key=0x0B; /*清除键*/
/*
key_on(key);
*/ /*执行程序*/
}
else if(P4==0x48&&P5^0==0&&P5^1==0&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x48&&P5^0==0&&P5^1==0&&P5^2==0) /*再次判断*/
key=0x00; /*0键*/
/*
key_on(key);
*/ /*执行程序*/
}
else if(P4==0x88&&P5^0==0&&P5^1==0&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x88&&P5^0==0&&P5^1==0&&P5^2==0) /*再次判断*/
key=0x0A; /*确认键*/
/*
key_on(key);
*/ /*执行程序*/
}
else if(P4==0x08&&P5^0==1&&P5^1==0&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x08&&P5^0==1&&P5^1==0&&P5^2==0) /*再次判断*/
key=0x12; /*左方向键*/
/*
key_on(key);
*/ /*执行程序*/
}
else if(P4==0x08&&P5^0==0&&P5^1==1&&P5^2==0) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x08&&P5^0==0&&P5^1==1&&P5^2==0) /*再次判断*/
key=0x15; /*下方向键*/
/*
key_on(key);
*/ /*执行程序*/
}
else if(P4==0x08&&P5^0==0&&P5^1==0&&P5^2==1) /*判断按键是否按下*/
{
for(i=0;i<50;i++) /*消抖动*/
for(j=0;j<20;j++);
if(P4==0x08&&P5^0==0&&P5^1==0&&P5^2==1) /*再次判断*/
key=0x13; /*右方向键*/
/*
key_on(key);
*/ /*执行程序*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -