📄 zl-600_28.c
字号:
#pragma src
#include <reg52.h>
#include<intrins.h>
sbit MAX =P1^0;
sbit MID =P0^1;
sbit MIN =P0^2;
sbit CS =P0^3;
sbit CLK =P0^4;
sbit DATA=P0^5;
sbit WARN=P0^6;
sbit ZERO=P0^7;//过零检测脚
/*键盘扫描端口*/
sbit LINE0 =P3^0;//行扫描线
sbit D1 =P3^1;
sbit D2 =P3^2;
sbit D3 =P3^3;
sbit D4 =P3^4;
sbit CS0=P3^5;//列扫描线
sbit CS1=P3^6;
sbit CS2=P3^7;
/*检测/控制端口*/
sbit REL_UPDW=P2^0;
sbit REL_C =P2^1;
sbit P_UPDW =P2^2;
sbit TRI_C =P2^3;
sbit WDI =P2^4;
sbit Q_DW =P2^5;
sbit Q_UP =P2^6;
sbit T_UPDW =P2^7;
sbit PD =P0^0;
sbit PC =P0^1;
sbit PB =P0^2;
sbit PA =P0^3;
sbit XXC =P0^4;
sbit SXC =P0^5;
sbit TT1 =P0^6;
sbit TT2 =P0^7;
unsigned char key;
#define NOP _NOP_()
void processknock();
void whith();
void top();
void vibrasion();
void roll();
void mode();
void fixposition();
void bottom();
void strength();
void speed();
void power();
void timer();
void fullautomatic();
void rising();
void descent();
void(*pfunction)(); //------------函数指针
void(*code tab[])()={ processknock, whith, top, vibrasion, roll,
mode, fixposition,bottom,strength, speed,
power,timer,fullautomatic, rising, descent
};//------------函数数组
/*----------Key Scan Procedure-----------------------*/
int keyscan()
{
unsigned char keydown;
unsigned char i;
char scancode,keycode,keynumber;
P3=0xff; //初始化
scancode=0xdf; //置扫描码
while(scancode!=0xff)
{
P3 =scancode; //输入扫描码 ,扫描CS0列
keycode =P3; //读键值
if(keycode&0x1f!=0x1f)
for(i=10;i>0;i--);
if(keycode&0x1f!=0x1f) //去抖
{ keynumber=keycode;
break;
} //扫描到按下的键,退出扫描
scancode=(keycode<<1)|0x1f; //更新扫描码,左移一位
}
keynumber=~keynumber; //键值取反,获取简明的最终键码值
switch(keynumber)
{
case 21 :
return (key=0x01); //揉捏/敲打
break;
case 22 :
return(key=0x02); //宽度调节
break;
case 24 :
return(key=0x03); //上
break;
case 28 :
return(key=0x04); //捶击开关
break;
case 30 :
return(key=0x05); //滚压
break;
case 41 :
return(key=0x06); //模式
break;
case 42 :
return(key=0x07); //定位
break;
case 44 :
return(key=0x08); //下
break;
case 48 :
return(key=0x09); //强度
break;
case 50 :
return(key=0x0a); //速度
break;
case 81 :
return(key=0x0b); //总开关
break;
case 82 :
return(key=0x0c); //定时
break;
case 84 :
return(key=0x0d); //全自动
break;
case 88 :
return(key=0x0e); //上升
break;
case 90:
return(key=0x0f); //下降
break;
default:
break;
}
}
void main()
{
keyscan();
pfunction=tab[key]; //取函数地址
(*pfunction)();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -